为了监视位置服务授权状态的变化,您需要实现获得类似的CLLocationManagerDelegate
方法locationManager:didChangeAuthorizationStatus:
-(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
if (status == kCLAuthorizationStatusDenied) {
// permission denied
}
else if (status == kCLAuthorizationStatusAuthorized) {
// permission granted
}
}
有关可能的授权状态及其描述的完整列表,您可以查看CLAuthorizationStatus的官方文档。
编辑
您可能已经有了 的实例CLLocationManager
,我们称之为locationManager
。然后为了实现你的委托,你让你的类符合CLLocationManagerDelegate
协议(你可以在类的头文件中声明它——这不是强制性的,但它会为你提供一些静态检查工具)并将其分配给如下delegate
属性:locationManager
locationManager.delegate = self; //assuming that self is gonna be the delegate
如果您按照说明做了所有事情,您的控制器将在每次授权更改时被调用,如文档所述:
每当应用程序使用位置服务的能力发生变化时,都会调用此方法。