2010-03-15 22 views
1

我有一个应用程序检查位置。它要求用户使用位置,如果用户在菜单上说不,那么当我加载mapview时会出现问题。LocationManagerManager中的“不允许”会一直记录错误

一旦我选择mapView它再次要求用户的位置。如果用户再次表示我的控制台不断显示错误/警告,并且我的位置管理器类的“didFailWithError”中出现NSLog。

如果用户已经说不是,那么是否有停止LocationManage:didFailWithErrors的方法?我不认为苹果会接受我的应用程序,如果日志文件被填满了我的的LocationManager

这里是什么得到在控制台重复

ERROR,Time,290362745.002,Function,"void CLClientHandleDaemonDataRegistration(__CLClient*, const CLDaemonCommToClientRegistration*, const __CFDictionary*)",server did not accept client registration 1 
WARNING,Time,290362745.005,Function,"void CLClientHandleDaemonInvalidation(__CFMessagePort*, void*)",client 1035.0 has been disconnected from daemon 
2010-03-15 12:19:05.002 SAQ[1035:207] LocationManager Error Denied by user 

回答

4

文档上-didFailWithError:方法的例子说:

如果用户拒绝您的应用程序的 使用位置服务,此 方法报告kCLErrorDenied错误。 一旦收到此类错误,您应该停止位置服务 。

所以收到此错误,你应该消息,你的位置经理之后停止更新位置:

[manager stopUpdatingLocation]; 

如果您使用的MKMapView我想设置其showsUserLocation属性为NO应该做的伎俩。

+0

确实....我的地图视图加载showUserLocation这两种情况下(发现的位置被拒绝)。谢谢,当答案如此简单时感到沮丧...再次感谢 – 2010-03-15 17:03:03

+0

即使stopUpdatingLocation被称为immediatley,我仍然总是收到两个didFailWithError调用。 – AlexWien 2013-07-20 16:35:49

0

如果错误代码为kCLErrorDenied,则您有责任检查错误代码并停止更新位置。