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

我跟踪用户的位置,并要求我的负载第一次加载时使用此权限:

locationManager.requestAlwaysAuthorization() locationManager.startUpdatingLocation() 

如果用户拒绝,但稍后通过在应用程序中启用configuration选项来改变他们的想法,我该如何再问? 例如,我有一个开关来自动检测用户的位置,所以当他们启用它时,我正在尝试这样做:

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

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

操作系统只会提示用户一次。 如果他们否认许可,就是这样。 你可以通过将UIApplicationOpenSettingsURLString传递给UIApplicationopenURL:方法来将用户引导到你的应用的设置。 从那里,他们可以重新启用位置服务,如果他们愿意的话。 也就是说,你可能不应该太过于侵犯他们的权限。

你只有一次机会 为了让用户在拒绝后启用权限,他们必须通过设置应用程序。 请参阅请求权限以在CLLocationManager中使用位置服务。