Я разрабатываю приложение для iPhone, в котором хочу показать ближайшие рестораны в зависимости от текущего местоположения.
Для этого в приложении DidFinishLaunching я делаю это:
self.locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
NSURL *url = [[NSURL alloc] initWithString:@"http://192.168.0.150/server1/Service.asmx/nearest?lat1=23.013163&lon1=72.559068"];
NSMutableURLRequest* request2=[NSMutableURLRequest requestWithURL:url];
[request2 setHTTPMethod:@"GET"];
[request2 setTimeoutInterval:10];
NSURLResponse *response=nil;
NSError *err=nil;
NSData *data1=[[NSURLConnection sendSynchronousRequest:request2 returningResponse:&response error:&err] retain];
if(data1 == nil)
{
UIAlertView* alert = [[UIAlertView alloc]initWithTitle:@"Alert" message:@"The network is not available.\n Please check the Internet connection." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
}
else
{
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:data1];
//Initialize the delegate.
XMLParser *parser = [[XMLParser alloc] initXMLParser];
//Set delegate
[xmlParser setDelegate:parser];
//Start parsing the XML file.
@try {
BOOL success = [xmlParser parse];
if(success)
NSLog(@"No Errors");
else
NSLog(@"Error Error Error!!!");
}
@catch (NSException * e) {
NSLog(@"Exception in parsing %@ %@",[e name], [e reason]);
}
}
Сценарий проблемы.
менеджер местоположений начинает обновлять местоположение
Веб-служба выполняется до этого, поэтому я не могу получить значения местоположения.
Я помещаю вызов веб-службы в метод делегата, после чего приложение запускается до запуска веб-службы.
в методе делегата я устанавливаю широту и долготу в соответствующих строках.
Проблема заключается в том, как обеспечить, чтобы служба не вызывалась до тех пор, пока менеджер местоположений не обновит это местоположение, а затем не передаст местоположение в веб-службу и затем не вызовет эту веб-службу.