iOS - приложение Карт против других сторонних приложений, учитывающих местоположение - PullRequest
0 голосов
/ 23 августа 2011

В приложении «Карты», которое поставляется в комплекте с iPhone, мы всегда получаем следующее предупреждающее сообщение всякий раз, когда отключаются службы определения местоположения и пользователь пытается использовать службы определения местоположения:

Включите Службы определения местоположения, чтобы «Карты» могли определять ваше местоположение | Настройки | Отменить

Обратите внимание, что две кнопки в вышеупомянутом предупреждении - это Настройки и Отмена.

Теперь вопрос в том, сможем ли мы получить точно такое же поведение, как описано выше, в сторонних приложениях, учитывающих местоположение, которые мы все разрабатываем. Просто для более подробного объяснения вопроса, скажем, что мы разрабатываем наше приложение, учитывающее местоположение, под названием «Abc». Каждый раз, когда мы вызываем ту часть приложения «Abc», для которой требуются службы определения местоположения, нам необходимо получить следующее предупреждающее сообщение, если службы определения местоположения отключены.

Включите службы определения местоположения, чтобы разрешить «Abc» определять ваше местоположение | Настройки | Отмена

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

@implementation LocationViewController
@synthesize locationManager

self.locationManager = [[[CLLocationManager alloc] init] autorelease];
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
locationManager.delegate = self;
[locationManager startUpdatingLocation];

В соответствующем заголовочном файле у меня есть следующий фрагмент кода

@interface LocationViewController:UIViewController<CLLocationManagerDelegate> {
    CLLocationManager *locationManager;
}
@property(nonatomic, retain) CLLocationManager *locationManager;
@end

Существуют ли какие-либо другие API, которые необходимо использовать для получения описанного выше поведения (как в приложении «Карты»), ИЛИ просто для сторонних приложений с определением местоположения просто невозможно добиться желаемого поведения с iOS 4.x. Пожалуйста, поделитесь своими комментариями по этому вопросу.

Ответы [ 2 ]

2 голосов
/ 23 августа 2011

Вы не можете сделать это - это частный API. Невозможно запустить приложения настроек программно из вашего приложения (к сожалению, потому что вы можете запускать iTunes, Safari и т. П. Через схемы URL. Для приложения настроек не существует). Вместо этого вы получаете сообщение по умолчанию «Хотите использовать ваше текущее местоположение».

0 голосов
/ 23 августа 2011

Вы можете проверить свойство locationServicesEnabled в CLLocationManager, чтобы узнать, есть ли у вас вообще права на каркас CoreLocation.

Если нет, и вы не можете работать без них, вам нужно сообщить об этом пользователю. Вы не сможете запустить их одним нажатием кнопки в приложении настроек (это не опубликованная схема URL), но вы можете дать им инструкции о том, как туда самим перейти и дать вам права на местоположение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...