43

在 iOS 6purpose中,用于描述使用位置服务 ( @property(copy, nonatomic) NSString *purpose) 原因的 CLLocationManager 属性已被弃用。

Apple 提出了哪些替代方案(如果有)?

4

2 回答 2

62

iOS 6 中该属性的替换purpose是一个名为NSLocationUsageDescription(又名“隐私 - 位置使用说明”)的新 Info.plist 键。

该密钥记录在信息属性列表密钥参考中,但不幸的是,该purpose属性的弃用说明中没有提到它。

但是,CLLocationManager.h确实有这样的评论:

* 已弃用。使用键 NSLocationUsageDescription 在 Info.plist 中设置目的字符串。

在您的代码中,您可以同时设置键和purpose属性(但您可能需要检查位置管理器是否首先响应该选择器,如果/当该方法在未来被实际删除时)。

如果在 iOS 6 下运行,位置管理器将使用密钥。
在低于 iOS 6 下运行时,将忽略密钥并使用purpose属性。

于 2012-09-25T12:24:53.570 回答
3

我刚刚在我的应用程序中遇到了同样的问题。

我发现你现在可以设置Activity的CLLocationManager!你可以选择不同的CLActivityTypes,这样你就不需要再写你自己的目的了。

这是基于导航的应用程序的示例

[self.gps setActivityType:CLActivityTypeAutomotiveNavigation];

其他可能的 CLActivityTypes 是:

 - CLActivityTypeFitness
 - CLActivityTypeOther
 - CLActivityTypeOtherNavigation
于 2012-09-25T11:04:42.527 回答