如何在请求用户位置时检测用户何时按下 "allow"

How to detect when user pressed the "allow" when user location is requested

我正在创建一个使用用户当前位置的应用程序。起初 运行,在提示用户允许或拒绝应用程序使用它的位置后,我想在用户按下 "allow" 按钮时做一些事情。有没有办法检测用户何时按下 "allow" 按钮?

您没有直接访问该警报的权限。

如果用户单击 "Don't Allow",则 CLLocationManager 将在其委托上调用 locationManager:didFailWithError:。错误域将为 kCLErrorDomain,错误代码将为 kCLErrorDenied。

您可以查看用户是否允许的状态。

let notificationType = UIApplication.shared.currentUserNotificationSettings?.types
        if notificationType?.rawValue == 0 {
            self.openPushNotificationDialog() //user denied or don't allowed
        } 

官方link通知https://developer.apple.com/documentation/usernotifications/unauthorizationstatus

Swift 3.0

您可以使用下面的委托方法来检测用户是否被授权位置。如果用户允许该位置,则它将 returns 状态 .authorizedAlways.authorizedWhenInUse.

func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {

}

为Swift3X

您可以单击 authorizedalways 允许和拒绝然后调用此方法并获取有关此的一些信息。

func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
if status == CLAuthorizationStatus.NotDetermined {
    locationManager.requestWhenInUseAuthorization()
}
}