我使用以下方法跟踪用户的位置并在首次加载时请求许可:
locationManager.requestAlwaysAuthorization() locationManager.startUpdatingLocation()
如果用户拒绝,但后来通过在我的应用中启用配置选项改变了主意,我该如何再次询问?例如,我有一个用于自动检测用户位置的开关,因此当他们启用它时,我正在尝试这样做:
@IBAction func gpsChanged(sender: UISwitch) { // Request permission for auto geolocation if applicable if sender.on { locationManager.requestAlwaysAuthorization() locationManager.startUpdatingLocation() } }
但是这段代码似乎没有任何作用。我希望它会再次询问用户是否要允许该应用跟踪用户的位置。这可能吗?
操作系统只会提示用户一次。如果他们拒绝许可,就是这样。您 可以 做的是通过传递UIApplicationOpenSettingsURLString到UIApplication的openURL:方法,将用户定向到您的应用的“设置” 。从那里,他们可以根据需要重新启用定位服务。就是说,您可能不应该过于激进地窃听它们以获取许可。
UIApplicationOpenSettingsURLString
UIApplication
openURL: