Я пишу демона, подобного Chris Alvares daemon. Я хочу, чтобы местоположение divice было в фоновом режиме без разрешения пользователя. Если для параметра Location Services
в настройках установлено значение ON
, тогда у меня нет проблем с получением местоположения. Для этого я добавляю к своим исполняемым правам com.apple.locationd.preauthorized
ключ с логическим значением, установленным в true. Проблема в том, что выключен Location Services
. В этом случае, когда я хочу получить местоположение устройства, появляется сообщение UIAlertView, указывающее пользователю, что службы определения местоположения отключены. Есть в основном 2 пути, но я не знаю, насколько они выполнимы. Во-первых, чтобы программно включить/отключить настройки служб местоположения в настройках. Во-вторых, получить местоположение, используя другой код без необходимости Locations Услуг установить ON
Получите местоположение iPhone в iOS без предпочтений. Настройки местоположения установлены на ON
Обновление 01:
Я сделал, как сказал iMokhles, и я предполагаю, что это должно работать, но ничего не происходит. Я предполагаю, что это происходит из-за прав, и я увидел системный журнал и вот что вошли:
iPhone locationd[44] <Error>: Entitlement com.apple.locationd.authorizeapplications required to use _CLDaemonSetLocationServicesEnabled
iPhone myDaemon[3443] <Error>: CoreLocation: CLInternalSetLocationServicesEnabled failed
Поэтому я добавил этот ключ прав, но он все же дал мне эту ошибку. После того, как я проверил права на приложение Preferences, я добавил эти строки в панель прав, но снова ничего не происходит.
<key>com.apple.locationd.authorizeapplications</key>
<true/>
<key>com.apple.locationd.defaults_access</key>
<true/>
<key>com.apple.locationd.effective_bundle</key>
<true/>
<key>com.apple.locationd.status</key>
<true/>
Спасибо. Я обновил вопрос :) – user3586942
проверить мои правые коды: D – iMokhles
Спасибо. 'setLocationServicesEnabled' отлично работает, но я не могу получить текущее значение из' locationServicesEnabled'. Он всегда возвращает истинное значение. У меня есть вопрос. 'locationServicesEnabled' - метод класса, поэтому почему вы использовали' sharedManager' для его вызова? – user3586942