Что ж, невозможно программно вызвать стандартный диалог с просьбой разрешить вашему приложению использовать службы определения местоположения.Все это делается с помощью iOS.
Однако вы всегда можете попробовать запустить обновление местоположения с помощью метода startUpdatingLocation
на экземпляре CLLocationManager
.Если службы определения местоположения отключены, вы будете уведомлены делегатом о состоянии ошибки, а затем сможете открыть диалоговое окно с просьбой перейти в «Настройки» и включить службы определения местоположения для вашего приложения ... См. Ниже код для фильтрации kCLErrorDenied
.
#pragma mark - CLLocationManagerDelegate
- (void)locationManager:(CLLocationManager *)inManager didFailWithError:(NSError *)inError{
if (inError.code == kCLErrorDenied) {
NSLog(@"Location manager denied access - kCLErrorDenied");
// your code to show UIAlertView telling user to re-enable location services
// for your app so they can benefit from extra functionality offered by app
}
}
Обратите внимание, что вы не можете запустить приложение Настройки через URL-схему из вашего приложения.
ОБНОВЛЕНИЕ: начиная с iOS5.1, вы не можете не используйте следующий метод.
ОБНОВЛЕНИЕ: начиная с iOS5, вы можете запустить Настройки из своего приложения:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];