2

当您第一次使用 MKMapView 启动应用程序时,应用程序会显示警报消息“想使用您当前的位置”,选项“不允许”和“确定”。

我需要自定义此消息。我还需要知道用户选择了哪个选项。我怎样才能做到这一点?

更新:我需要在 iOS 5+ 上实现这个

4

3 回答 3

3

CLLocationManager上设置用途属性

来自这个问题:Replacement for " purpose" property of CLLocationManager

安娜卡列尼娜的回答

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

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

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

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

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

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

于 2013-04-10T13:56:16.627 回答
0

用于自定义消息

对于消息,您可以像 Alex Terente 所说的那样使用 purpose 属性,但它在 iOS 6 中已被弃用

获得选择权

为了知道用户是否拒绝了权限,位置管理器提供了一个失败委托。mapview 使用它自己的位置管理器,所以:使用MKMapView函数 didFailToLocateUserWithError

- (void)mapView:(MKMapView *)mapView didFailToLocateUserWithError:(NSError *)error {
switch([error code]) {
                case kCLErrorDenied:{
                    //user denied
                }
                break;
            }
}

注意:如果您直接使用 CLLocationManager 它会是- (void)locationManager: (CLLocationManager *)manager didFailWithError: (NSError *)error;

于 2013-04-10T14:07:01.847 回答
0

如果您正在为 iOS 6+ 构建,请NSLocationUsageDescriptionInfo.plist文件中使用。插入此键并将其值设置为您将如何处理位置信息的描述。

于 2013-04-10T14:07:06.983 回答