当您在我的Swift应用程序中按一个按钮时,我试图打开和关闭CoreLocation。应用加载时,这就是我打开它的方式
let locationManager = CLLocationManager()
locationManager.requestWhenInUseAuthorization()
if CLLocationManager.locationServicesEnabled() {
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.startUpdatingLocation()
}
这很好。它会提示用户,然后更新我在地图上的位置。但是,如果您在请求时选择“否”,那么我希望能够再次将其重新打开。我认为这就像再次请求授权一样容易,但是它不起作用。我有一个方法,当按下按钮打开位置时会被调用。
此方法的代码基本上完全相同。最初设置授权状态后,我需要做些其他事情吗?
最佳答案
如果您在请求时选择“否”,我希望能够再次将其重新打开
一旦用户选择拒绝您的授权,您就无法与该用户产生神奇的矛盾,并且(不能)您也无法使系统的授权对话框再次出现。
您能做的最好的事情就是建立自己的对话框(即警报),请求用户转到“设置”并翻转开关以授予您授权。您甚至可以将用户带到“设置”(iOS 8中的新增功能)。但是您无法再次获得该系统授权对话框。