我跟踪用户的位置,并在我的加载首次加载时请求许可:

locationManager.requestAlwaysAuthorization()
locationManager.startUpdatingLocation()

如果用户拒绝,但后来通过在我的应用程序中启用配置选项改变了主意,我该如何再次询问?例如,我有一个自动检测用户位置的switch ,所以当他们启用它时,我会try 这样做:

@IBAction func gpsChanged(sender: UISwitch) {
    // Request permission for auto geolocation if applicable
    if sender.on {
        locationManager.requestAlwaysAuthorization()
        locationManager.startUpdatingLocation()
    }
}

但这段代码似乎没有任何作用.我希望它能再次询问用户是否允许应用程序跟踪用户的位置.这可能吗?

推荐答案

操作系统只会提示用户一次.如果他们拒绝许可,就这样.你要做的是通过传递UIApplicationOpenSettingsURLStringUIApplicationopenURL:方法,将用户 bootstrap 到你的应用程序的设置.从那里,他们可以重新启用位置服务,如果他们愿意的话.也就是说,你可能不应该太咄咄逼人地窃听他们的许可.

Swift相关问答推荐

设置.Bundle中来自APM和Cocoapods自动生成的依赖确认

同步问题,发送Api Call之前未设置idToken

使用SWIFT宏从另一个枚举添加 case

音频播放器无法播放URL音频(操作系统状态错误2003334207.)

有没有一种方法可以迭代可编码的代码(例如,JSON解析中的每一项)?

OBJC代码中Swift 演员的伊瓦尔:原子还是非原子?

如何将多个完成处理程序转换为异步?

在 Swift 中将异步任务包装到 DispatchWorkItem 中以使其可取消?

可以使 Swift init 仅可用于 Objective C 吗?

防止带有背景的文本扩展到 maxWidth

Swift-如何接受多个(联合)类型作为参数

如何有条件地依赖桌面与 iOS 的系统库?

不使用 ViewController 时如何显示推送通知的alert 对话框

Vapor - 流利的,将对象保存到 PostgreSQL

Swift 2 或 3 中的 Google Analytics 问题

Swift:在子类中覆盖 == 导致仅在超类中调用 ==

Swift:如何从函数返回类类型

如何交换快速数组中的元素?

自定义 Google 登录按钮 - iOS

如何在 SwiftUI 中的一个视图上显示两个alert ?