一尘不染

用户拒绝位置服务后再次请求权限?

swift

我使用以下方法跟踪用户的位置并在首次加载时请求许可:

locationManager.requestAlwaysAuthorization()
locationManager.startUpdatingLocation()

如果用户拒绝,但后来通过在我的应用中启用配置选项改变了主意,我该如何再次询问?例如,我有一个用于自动检测用户位置的开关,因此当他们启用它时,我正在尝试这样做:

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

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


阅读 374

收藏
2020-07-07

共1个答案

一尘不染

操作系统只会提示用户一次。如果他们拒绝许可,就是这样。您 可以
做的是通过传递UIApplicationOpenSettingsURLStringUIApplicationopenURL:方法,将用户定向到您的应用的“设置”
。从那里,他们可以根据需要重新启用定位服务。就是说,您可能不应该过于激进地窃听它们以获取许可。

2020-07-07