我正在使用一种方法创建位置管理器(如果它不存在并启动它)。它检查用户是否禁用了位置服务,并且尊重该位置服务,除非BOOL被授予启动服务。该方法返回一个BOOL来指示服务已经启动或没有启动。CLLocation Manager不提示用户
这适用于第一次启动服务和提示用户。如果他们点击允许事情正常进行,并且如果他们点击不允许我提供手动输入位置的视图。
但是我希望用户能够改变他们对使用位置服务的想法,所以我有一个按钮让他们回到使用GPS。它再次调用相同的函数,但是这次忽略了用户位置服务首选项。我相信这应该会提示用户再次允许/禁止,但我正在获得一个直接的kCLDenied错误代码。
基于http://developer.apple.com/iphone/library/documentation/UserExperience/Conceptual/LocationAwarenessPG/CoreLocation/CoreLocation.html#//apple_ref/doc/uid/TP40009497-CH2-SW11我期望另一个用户提示,而不是立即的错误。
- (BOOL)startLocationServices:(BOOL)ignorePrefs
{
//
// /*UNREVISEDCOMMENTS*/
//
if (locationManager == nil)
{
if ([CLLocationManager locationServicesEnabled] || ignorePrefs)
{
locationManager = [[CLLocationManager alloc] init];
[locationManager setDelegate:self];
[locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
[locationManager setDistanceFilter:10.0];
}
else
{
return NO;
}
}
[locationManager startUpdatingLocation];
return YES;
}
(我的位置管理委托发布和如果接收到拒绝错误设置位置经理为零。)
优秀的问题。我也有同样的问题。 – hop 2011-05-23 22:55:34