当您在我的Swift应用程序中按一个按钮时,我试图打开和关闭CoreLocation。应用加载时,这就是我打开它的方式

let locationManager = CLLocationManager()
locationManager.requestWhenInUseAuthorization()

if CLLocationManager.locationServicesEnabled() {
    locationManager.delegate = self
    locationManager.desiredAccuracy = kCLLocationAccuracyBest
    locationManager.startUpdatingLocation()
}


这很好。它会提示用户,然后更新我在地图上的位置。但是,如果您在请求时选择“否”,那么我希望能够再次将其重新打开。我认为这就像再次请求授权一样容易,但是它不起作用。我有一个方法,当按下按钮打开位置时会被调用。

此方法的代码基本上完全相同。最初设置授权状态后,我需要做些其他事情吗?

最佳答案

如果您在请求时选择“否”,我希望能够再次将其重新打开


一旦用户选择拒绝您的授权,您就无法与该用户产生神奇的矛盾,并且(不能)您也无法使系统的授权对话框再次出现。

您能做的最好的事情就是建立自己的对话框(即警报),请求用户转到“设置”并翻转开关以授予您授权。您甚至可以将用户带到“设置”(iOS 8中的新增功能)。但是您无法再次获得该系统授权对话框。

10-06 10:31
查看更多