如何在用户请求用户位置时检测用户何时按下“允许”

时间:2017-07-29 11:00:29

标签: ios swift swift3 location cllocation

我正在创建一个使用用户当前位置的应用。首次运行时,在提示用户允许或拒绝应用程序使用它的位置后,我想在用户按下“允许”按钮时执行操作。有没有办法检测用户何时按下“允许”按钮?

3 个答案:

答案 0 :(得分:4)

Swift 3.0

您可以使用以下委托方法来检测用户是否是授权位置。如果用户允许该位置,则会返回状态.authorizedAlways.authorizedWhenInUse

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

}

答案 1 :(得分:0)

您无法直接访问该提醒。

如果用户点击"不允许"然后CLLocationManager将在其委托上调用 locationManager:didFailWithError:。错误域为kCLErrorDomain,错误代码为kCLErrorDenied。

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

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

通知的正式链接https://developer.apple.com/documentation/usernotifications/unauthorizationstatus

答案 2 :(得分:0)

适用于Swift 3X

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

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