Как проверить, включена служба определения местоположения или нет? - PullRequest
6 голосов
/ 06 февраля 2011

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

Чтобы я мог предложить ему / ей включить его для использования моего приложения.

Спасибо!

Ответы [ 4 ]

13 голосов
/ 06 февраля 2011

CLLocationManager предоставляет методы класса для определения доступности услуг определения местоположения:

- (BOOL)locationServicesEnabled (for < iOS 4.0)

+ (BOOL)locationServicesEnabled (for iOS 4.0 and greater)

+ (CLAuthorizationStatus)authorizationStatus (for iOS 4.2+)

(и другие, см. документацию)

3 голосов
/ 06 февраля 2011

Если ваше приложение не может работать без Location Services, вы можете сделать Location Services обязательным требованием для установки / запуска вашего приложения с помощью Info.plist приложения.Это можно сделать, добавив ключ UIDeviceCapabilities в Info.plist вашего приложения и присвоив ему соответствующее значение «location-services» минус кавычки.

С помощью Info.plist, настроенного таким образом, если службы определения местоположения включеныВыключен, или если устройство находится в режиме полета, или что-либо еще мешает использованию Служб определения местоположения на устройстве, iOS предложит пользователю включить Службы определения местоположения, когда приложение открыто.

РЕДАКТИРОВАТЬ: Краткая информацияЭксперименты, кажется, указывают на то, что iOS не предлагает пользователю в этом случае, так что это не будет хорошим решением для вас.

Для получения дополнительной информации вы можете обратиться к разделу справочной информации по ключевым свойствам списка свойств разработчика Apple.документация.

1 голос
/ 20 декабря 2012

Используйте приведенный ниже фрагмент кода ...

  if (![CLLocationManager locationServicesEnabled]) {


    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Location Service Disabled"
                                                    message:@"To re-enable, please go to Settings and turn on Location Service for this app."
                                                   delegate:nil
                                          cancelButtonTitle:@"OK"
                                          otherButtonTitles:nil];
    [alert show];
    [alert release];

}
0 голосов
/ 15 октября 2014

Используйте следующий код, который будет работать даже в iOS 8.

if([CLLocationManager locationServicesEnabled]&&
   [CLLocationManager authorizationStatus] != kCLAuthorizationStatusDenied)
{
  //...Location service is enabled
}
else
{
 //...Location service is disabled
}
...