替换CLLocationManager的“目的”属性

时间:2012-09-24 09:23:24

标签: ios cocoa-touch ios6 cllocationmanager deprecated

在iOS 6中,不推荐使用CLLocationManager的purpose属性来描述使用位置服务(@property(copy, nonatomic) NSString *purpose)的原因。

Apple提出了什么替代品?

2 个答案:

答案 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