位置服务iOS提醒回电

时间:2011-05-06 01:34:09

标签: iphone objective-c cocoa-touch cllocationmanager

当我们在应用程序中使用位置服务时,我们会收到iOS警报,说明应用程序正在尝试使用当前位置 - 允许/不允许。

我们是否有代表回拨这些按钮?

我想点击“不允许”。

3 个答案:

答案 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框架会提示用户提供确认面板,询问是否应重新启用位置服务。