iPhone locationManager:禁用GPS时didFailWithError问题

时间:2010-04-20 01:51:50

标签: iphone mapkit cllocationmanager

所以,我跟着其他相关主题,但由于某种原因,我仍然有这个错误,我准备把头发撕掉。我已经实现了locationManager:didFailWithError来检查并查看用户是否选择“不允许”来使用当前位置。

-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
NSLog(@"IN ERROR");
if ([error code] == kCLErrorDenied){  
 [manager stopUpdatingLocation];
 }
}

但是,当用户选择“不允许”时,总会出现以下错误...这很奇怪,特别是文本“IN ERROR”出现的顺序。

  

错误,时间,293420691.000,功能,“空隙   CLClientHandleDaemonDataRegistration(__ CLClient *   常量   CLDaemonCommToClientRegistration *   const __CFDictionary *)“,服务器没有   接受客户注册1   2010-04-19 21:44:51.000   testApp [1414:207]错误

所以,它甚至在有机会进入didFailWithError函数之前就输出了这个错误。有没有人对可能发生的事情有任何想法? locationManager代码的其余部分如下:

self.locationManager = [[[CLLocationManager alloc] init] autorelease];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
locationManager.distanceFilter = 2;  
[locationManager startUpdatingLocation];

2 个答案:

答案 0 :(得分:0)

看起来只是来自Core Location的信息性消息。它没有崩溃您的应用程序,用户将看不到它,它仍然使用正确的错误代码调用didFailWithError。

在我的测试中,消息显示在iPhone模拟器和设备(3.1.3)和iPad模拟器上,但不在iPad设备上(3.2)。

答案 1 :(得分:0)

如果你也使用MapKit,这是MapKit中的一个错误。 MapKit正在使用Core Location注册,然后在用户拒绝位置更新或未通过时未正确处理报告的错误。它应该通过委托方法传递此错误(就像它对地理编码错误一样),但不是。

不幸的是我想不出任何方法来拦截来自核心位置的消息,因为MapKit维护了一个用于获取位置的CLLocationManager实例,而这是向其委托报告错误的实例。