【问题标题】:Getting results of location permission dialog获取位置权限对话框的结果
【发布时间】:2011-12-19 18:33:34
【问题描述】:

我正在做this tutorial,它将返回 GPS 坐标。当我在 iPhone 上运行该应用程序时,我首先看到 UIAlertView 请求访问我的 GPS 坐标的权限。

我需要知道这个UIAlertView 是从哪里抛出的?它来自操作系统吗? 我们可以捕获这种方法吗?当用户点击“允许”或“不允许”时,我可以将他的选择打印到控制台吗?

如何以编程方式执行此操作?有活动吗?

【问题讨论】:

    标签: objective-c ios cocoa-touch core-location


    【解决方案1】:

    此警报由操作系统显示。用户必须允许使用基于位置的 API。您可以向CLLocationManager 询问当前的authorizationStatus 并在状态更改时收到通知(将调用委托方法)。请注意,用户也可以稍后在设置应用中禁用定位服务。

    【讨论】:

    • 好的,比如说用户点击No或者不允许访问GPS位置的权限。但是用户后来改变了主意,他需要授权访问 GPS 的权限。在那种情况下,我该如何再次调用UIAlertview
    • @sharon - 你没有。你不是第一次叫它。您可以查看您的授权更改,因此您可以根据需要选择退出位置功能。但是您不能再次向用户请求许可。当然,如果您发现自己没有权限,您可以随时发出您自己的警报。但是他们必须深入研究他们的设置才能打开您的权限,您不能直接将它们发送到那里。
    • 从 iOS5 开始,您可以创建自己的“设置”按钮并让它调用:[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=General"]];启用对设置的直接访问。
    • @paiego 的建议 - iOS 8 的做法似乎是:[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
    【解决方案2】:

    我假设您正在使用 CLLocationManager。当应用程序使用 API 的能力发生变化时,您的委托将获得 locationManager:didChangeAuthorizationStatus。

    编辑: 当您的应用程序第一次尝试使用该服务时,将提示用户。如果用户回答“否”,您的应用程序将无法使用该服务,除非他们转到“设置”->“常规”->“位置服务”并更改您的应用程序的设置。

    如果您查询 API 的状态但被拒绝,您可以发布自己的弹出窗口并指导用户如何更改应用程序的设置。

    【讨论】:

    • 好的,比如说用户点击了No或者不允许访问GPS位置的权限。但是用户后来改变了主意,他需要授权访问 GPS 的权限。在那种情况下,我该如何再次调用UIAlertview
    • 我相信用户必须转到 iPhone 设置屏幕并更改您的应用程序的选定选项。
    猜你喜欢
    • 2017-05-06
    • 2016-06-21
    • 2019-05-13
    • 1970-01-01
    • 2020-03-05
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 2022-09-26
    相关资源
    最近更新 更多