当我们在应用程序中使用位置服务时,我们会收到iOS警报,说明应用程序正在尝试使用当前位置 - 允许/不允许。
我们是否有代表回拨这些按钮?
我想点击“不允许”。
答案 0 :(得分:16)
您无法直接访问该警报。
如果用户按下“不允许”,或者该应用程序无权使用位置服务,则CLLocationManager
将在其代理上调用locationManager:didFailWithError:
。错误域将为kCLErrorDomain
,错误代码为kCLErrorDenied
。
答案 1 :(得分:7)
您可以简单地选择如下所示的操作:
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
if (status == kCLAuthorizationStatusAuthorizedAlways || status == kCLAuthorizationStatusAuthorizedWhenInUse) {
[self addRegion];
}
else if (status == kCLAuthorizationStatusDenied) {
NSLog(@"Location access denied");
}
}
确保设置位置管理员的代理。
答案 2 :(得分:3)
在启动位置管理器之前,您还应该检查用户是否允许您的应用的位置服务。使用CLLocationManager
类方法locationServicesEnabled
进行检查。
这是doc:
locationServicesEnabled
返回一个布尔值,指示是否在设备上启用了位置服务。
+ (BOOL)locationServicesEnabled
返回值 如果启用了位置服务,则为YES;如果不启用,则为NO。
讨论 用户可以通过在设置>中切换开关,从设置应用程序中完全启用或禁用位置服务。一般>位置服务。
您应该在开始位置更新之前检查此方法的返回值,以确定用户是否为当前设备启用了位置服务。如果此方法返回NO并且您仍然启动位置更新,则Core Location框架会提示用户提供确认面板,询问是否应重新启用位置服务。