在iOS 6中,不推荐使用CLLocationManager的purpose
属性来描述使用位置服务(@property(copy, nonatomic) NSString *purpose
)的原因。
Apple提出了什么替代品?
答案 0 :(得分:62)
iOS 6中purpose
属性的替换是一个名为NSLocationUsageDescription
的新Info.plist密钥(又名“隐私 - 位置使用说明”)。
密钥是documented in the Information Property List Key Reference,但遗憾的是,purpose
属性的弃用说明未提及。
但是,CLLocationManager.h
确实有此评论:
*
已弃用。使用密钥NSLocationUsageDescription在Info.plist中设置目的字符串。
在您的代码中,您可以设置密钥和purpose
属性(但是如果/以后实际删除了该方法,您可能需要检查位置管理器是否首先响应该选择器)。
如果在iOS 6下运行,位置管理员将使用该键
在低于iOS 6的情况下运行时,密钥将被忽略,并且将使用purpose
属性。
答案 1 :(得分:3)
我在我的应用程序中遇到了同样的问题。
我发现您现在可以设置CLLocationManager!
的活动您可以选择不同的CLActivityTypes,因此您不再需要编写自己的用途。
以下是基于导航的应用
的示例[self.gps setActivityType:CLActivityTypeAutomotiveNavigation];
其他可能的CLActivityTypes是:
- CLActivityTypeFitness
- CLActivityTypeOther
- CLActivityTypeOtherNavigation