【问题标题】:Handling cancel of the location services alert处理取消定位服务警报
【发布时间】:2015-07-24 13:41:57
【问题描述】:

我确实有需要获取运行 iOS8 的 iPhone 5 的当前位置的情况。当位置服务关闭时,会打开默认位置服务警报。此警报具有“取消”和“设置”按钮。请在警报的屏幕截图下方找到。

当用户在警报上按下取消时,我需要处理这种情况。当我覆盖警报时,我可以处理它。但是该警报对我不起作用,因为该自定义警报的设置会将我带到应用级别的位置设置,而不是设备级别的位置设置。

【问题讨论】:

    标签: ios iphone core-location


    【解决方案1】:

    为您的 CLLocationManager 设置委托并实现委托的方法 - locationManager:didChangeAuthorizationStatus:

    只要应用程序使用位置服务的能力发生变化,就会调用此方法。由于用户允许或拒绝为您的应用程序或整个系统使用定位服务,因此可能会发生更改。

    如果在调用 requestWhenInUseAuthorization 或 requestAlwaysAuthorization 方法时已知道授权状态,则位置管理器不会向此方法报告当前的授权状态。位置管理器只报告授权状态的变化。例如,当状态从 kCLAuthorizationStatusNotDetermined 变为 kCLAuthorizationStatusAuthorizedWhenInUse 时调用此方法。

    Link to Apple doc

    【讨论】:

    • 谢谢瑞恩。但是我们已经超过了你提到的警报。我们计划在位置服务关闭并且我们尝试访问该位置时触发警报的取消按钮。
    • 我认为您无法捕捉到取消按钮点击事件,因为它是一个自动系统警报。您所能做的就是处理委托方法。通常,当您第一次使用授权状态值 kCLAuthorizationStatusNotDetermined 实例化 CLLocationManager 时,会显示此系统警报。如果用户按取消,我认为您无法获得该事件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-03
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 2020-02-18
    相关资源
    最近更新 更多