Получить местоположение iPhone при загрузке

Я настроил свое приложение для первоначального запроса местоположения, как только оно загружается, но при первом использовании приложения появляется всплывающее диалоговое окно, которое запрашивает разрешение у пользователя, появляется на короткую секунду, а затем исчезает, когда представление завершает загрузку (или что-то в этом роде). Все это происходит слишком быстро, чтобы пользователь сказал «да, все в порядке». Где я должен поместить следующий код, чтобы всплывающее окно разрешения местоположения появлялось при первой загрузке приложения пользователем?

CLLocationManager *locationManager = [[CLLocationManager alloc] init];
CLLocation *location = [[CLLocation alloc] init];

locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
[locationManager setPurpose:@"A fun way to record where you've answered the questions and how you did at each location."];
[locationManager startUpdatingLocation];
location = [locationManager location];
[locationManager stopUpdatingLocation];

Спасибо, Брен.


person Bren Gunning    schedule 03.01.2012    source источник
comment
Нам нужен контекст. Где вы выполняете приведенный выше код?   -  person Mark Adams    schedule 04.01.2012
comment
Этот диалог разрешений не должен закрываться сам по себе. Когда я запускаю свой диспетчер местоположений в методе ApplicationDidFinishLaunchingWithOptions: моего делегата приложения, он вызывает диалоговое окно разрешений и блокируется, пока пользователь не ответит на него. Вот для чего нужен такой модальный диалог.   -  person Dan Ray    schedule 04.01.2012
comment
Извините, у меня это было в событии viewDidLoad моего первого контроллера представления.   -  person Bren Gunning    schedule 04.01.2012


Ответы (1)


Есть много мест, куда вы можете поместить этот код. По сути, это должно быть после того, как вы закончили загрузку пользовательского интерфейса.

Он может быть в вашем AppDelegate, если он находится после вызова [self.window makeKeyAndVisible].
Он также может быть в методе viewDidAppear: вашего первого viewController. Если вы выберете этот вариант, имейте в виду, что viewDidAppear: можно вызывать много раз.

person Guillaume    schedule 03.01.2012
comment
Я не могу найти часть MakeKeyAndVisible моего приложения, но я попытался поместить ее в viewDidAppear (в первом появившемся контроллере представления), но это по-прежнему вызывает быстрое всплывающее окно и запрос предупреждения об исчезновении. - person Bren Gunning; 04.01.2012
comment
Какой шаблон вы использовали при создании приложения? - person Guillaume; 04.01.2012
comment
Это было приложение панели вкладок в iOS 5 SDK. - person Bren Gunning; 05.01.2012
comment
Тогда последняя строка вашего метода — application: didFinishLaunching: is [self.window makeKeyAndVisible]; Вы видите это? - person Guillaume; 05.01.2012
comment
Этой строки там нет, но я добавлю ее и попробую еще раз, когда вернусь домой с работы. Спасибо за помощь, это очень ценится. - person Bren Gunning; 06.01.2012