ios – CLLocationManager AuthorizationStatus回调?

前端之家收集整理的这篇文章主要介绍了ios – CLLocationManager AuthorizationStatus回调?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的应用程序中,我有一个名为“发现”的选项卡. “发现”选项卡将使用用户当前位置在其附近找到“东西”.而不是向使用者呈现通用的授权请求(通常会根据研究被拒绝),我向用户介绍一个模式来解释我们要求的内容.如果他们说是,那么就会弹出实际的授权消息.

但是,用户仍然可以选择不提示.有没有办法向提示添加回调,以便一旦用户选择一个选项,我可以看到他们接受或拒绝?

我试过这个:

func promptForLocationDataAccess() {
    locationManager.requestWhenInUseAuthorization()
    println("test")
}

正如预期的那样,“println”在请求提示出现的同时执行,所以我不能这样做.

问题是如果用户选择不使用位置数据,则所提供的内容将不同于接受的内容.

理想情况下,我希望有一种回调,但我现在应该采取任何逻辑的方向!

解决方法

你可以使用
locationManager:didChangeAuthorizationStatus: CLLocationManagerDelegate方法作为“回调”的排序.
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
    if (status == kCLAuthorizationStatusDenied) {
        // The user denied authorization
    }
    else if (status == kCLAuthorizationStatusAuthorized) {
        // The user accepted authorization
    }
}

而在Swift(由用户Michael Marvick建议的更新,但由于某些原因被拒绝)):

func locationManager(manager: CLLocationManager,didChangeAuthorizationStatus status: CLAuthorizationStatus) {
    if (status == CLAuthorizationStatus.Denied) {
        // The user denied authorization
    } else if (status == CLAuthorizationStatus.AuthorizedAlways) {
        // The user accepted authorization
    } 
}

猜你在找的iOS相关文章