【问题标题】:iOS CoreLocation: How to handle programmatically if location services are disabled from device settingsiOS CoreLocation:如果从设备设置中禁用位置服务,如何以编程方式处理
【发布时间】:2013-12-10 08:59:11
【问题描述】:

我正在尝试获取 iOS 设备的地理位置。我可以使用 CoreLocation 框架获取当前位置的坐标。

但问题是我必须处理从设备设置中禁用位置服务的情况。在这种情况下,我必须根据要求将用户重定向到我的应用程序中的设置。

我知道在 iOS 5.1 之前我可以使用以下方案来做到这一点

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];

但是,如何在这个较新的版本中处理这个问题。很长一段时间以来我一直坚持这一点,但还没有解决方案。请指教。

【问题讨论】:

标签: ios core-location


【解决方案1】:

【讨论】:

    【解决方案2】:

    @Rashmi - 你可能会在其他地方遇到一些麻烦。

    CoreLocation Framework 通过生成警报自动检测设备是否禁用了位置设置,并自动将您带到设备设置。我已经在 iOS7、iOS6 设备中验证了这一点。

    另外,我用谷歌搜索,发现这是从应用程序打开设置的唯一方法,并且与您所写的匹配。

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];
    

    您也可以关注此网址以供参考 Open Device Settings from the app

    Core Location,可以看这个demoCoreLocation

    【讨论】:

    • ... 我的问题是 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]] 仅适用于 iOS 5 操作系统版本。在新版本中如何处理?
    • AFAIK 无法再将用户重定向到设置。您能做的最好的事情就是提供一条带有文本的消息,向用户解释该做什么。
    • @RashmiRanjanmallick 您能否在 paste.org 上显示代码 sn-p 以便我看到错误。此外,我已经检查过 Core Location 框架会自动处理此问题并将您重定向到设备设置
    • @Taum 当您检查 Google Apps 或任何基于位置的应用程序并且您的设备位置服务已关闭时,您将被自动重定向到位置服务(设置)。
    • 第一次实例化 CLLocationManager 时出现的默认弹出窗口确实有一个重定向到设置的按钮,是的。我的意思是,不可能从您展示自己的弹出窗口中做同样的事情。也无法选择何时显示默认弹出窗口,因为我相信它仅在您第一次实例化 CLLocationManager 时显示。
    猜你喜欢
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 2016-03-28
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多