Подтвердить что ты не робот

Замена для свойства "цель" CLLocationManager

В iOS 6 свойство purpose CLLocationManager, чтобы описать причину использования служб определения местоположения (@property(copy, nonatomic) NSString *purpose), устарело.

Какая замена, если таковая имеется, предлагается Apple?

4b9b3361

Ответ 1

Замена свойства purpose в iOS 6 - это новый ключ Info.plist с именем NSLocationUsageDescription (aka "Конфиденциальность - описание использования местоположения" ).

Ключ задокументирован в ключевой справочной информации списка свойств информации, но, к сожалению, он не упоминается с примечанием о ноте свойства purpose.

Однако CLLocationManager.h имеет этот комментарий:

* Устаревший. Задайте целую строку в Info.plist, используя ключ NSLocationUsageDescription.

В вашем коде вы можете установить как ключ, так и свойство purpose (но вы можете проверить, отвечает ли менеджер местоположений на этот селектор первым, если/когда этот метод фактически будет удален в будущем).

Если вы используете под управлением iOS 6, менеджер местоположений будет использовать ключ.
При запуске меньше чем iOS 6 ключ будет проигнорирован и будет использовано свойство purpose.

Ответ 2

У меня была одна и та же проблема в моем приложении.

Я обнаружил, что теперь вы можете установить Activity CLLocationManager!. Вы можете выбрать различные типы CLActivityTypes, поэтому вам больше не нужно писать свою собственную цель.

Здесь, например, для приложения на основе навигации

[self.gps setActivityType:CLActivityTypeAutomotiveNavigation];

Другие возможные типы CLActivityType:

 - CLActivityTypeFitness
 - CLActivityTypeOther
 - CLActivityTypeOtherNavigation