Запрос общих служб определения местоположения iOS

Я хотел бы попросить пользователя включить общие службы определения местоположения (а не службы определения местоположения для конкретного приложения), если в целом им никогда не будет предложено включить его для приложения.

Есть ли способ предложить пользователю включать службы определения местоположения в целом каждый раз, когда они открывают приложение, и оно отключено?

Код найден в других потоках, но он специфичен для приложения, а не для общих служб определения местоположения:

if(![CLLocationManager locationServicesEnabled]) {
    NSLog(@"Location Services is OFF GLOBALLY");

    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString( @"Location Services", @"" ) message:NSLocalizedString( @"Please Set Location Services to On and Restart App\n\nSettings->Privacy->Location Services", @"" ) preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction *okAction = [UIAlertAction actionWithTitle:NSLocalizedString( @"OK", @"" ) style:UIAlertActionStyleDefault handler:nil];

    [alertController addAction:okAction];

    [self presentViewController:alertController animated:YES completion:nil];


}
else if([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied) {
    NSLog(@"Location Services is Never for App");

    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString( @"App Needs Location Services", @"" ) message:NSLocalizedString( @"Please Set Location Services to Always for App", @"" ) preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction *settingsAction = [UIAlertAction actionWithTitle:NSLocalizedString( @"Settings", @"" ) style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];  

    [alertController addAction:settingsAction];

    [self presentViewController:alertController animated:YES completion:nil];

}

person lr100    schedule 16.12.2015    source источник
comment
Почему? Вам нужны только настройки конкретного приложения.   -  person rmaddy    schedule 16.12.2015
comment
Возможно, если вы поделитесь тем, чего вы действительно пытаетесь достичь, мы сможем помочь лучше, поскольку нет причин предлагать пользователю полностью включить службы определения местоположения, если ваше приложение не будет запрашивать разрешение на их использование.   -  person RyanR    schedule 16.12.2015
comment
Вы можете проверить значение CLLocationManager.locationServicesEnabled и отобразить предупреждение, если службы определения местоположения отключены, но нет возможности напрямую открыть настройки служб определения местоположения.   -  person Paulw11    schedule 16.12.2015
comment
Я столкнулся с кучей людей, которые на мгновение включали службы определения местоположения, а затем выключали их. Это не настройки приложений, а глобальные настройки. В настоящее время мое приложение не спрашивает, отключена ли служба общего определения местоположения, оно будет запрашивать только, если она включена, а службы определения местоположения приложений отключены. Надеюсь, это немного проясняет.   -  person lr100    schedule 18.12.2015
comment
обновлен исходный пост с большим количеством кода   -  person lr100    schedule 19.12.2015


Ответы (1)


В файле info.plist вам нужно включить одну из следующих строк:

Если он всегда используется, добавьте эту запись в info.plist:

NSLocationAlwaysUsageDescription

Строка, связанная с этой записью, должна представлять собой сообщение, которое вы хотите отобразить: «Хотите ли вы включить постоянный мониторинг местоположения, даже когда это приложение не используется?»

...or...

Вы можете сделать NSLocationWhenInUseUsageDescription и сообщение типа «Хотели бы вы включить мониторинг местоположения только тогда, когда это приложение используется?»

Документация по этой теме

person Adrian    schedule 16.12.2015