不允许位置服务时,我可以访问核心位置 api 吗?
Posted
技术标签:
【中文标题】不允许位置服务时,我可以访问核心位置 api 吗?【英文标题】:Can I access to core location api when location service is not allowed? 【发布时间】:2011-12-12 04:11:39 【问题描述】:我想在我的应用中搜索当前位置,但我看到整个位置服务都不允许。
@interface LoginViewController : UIViewController <CLLocationManagerDelegate>
CLLocationManager* locationManager;
CLLocation* currentLocation;
//header file
//implementation header file
(void)loginButtonPressed:(id)aSender
if (locationManager == nil)
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.distanceFilter = kCLDistanceFilterNone;
[locationManager startUpdatingLocation];
//implementation CLLocationManagerDelegate
(void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
NSLog(@"update location");
if(self.currentLocation == nil)
self.currentLocation = newLocation;
[locationManager stopUpdatingLocation];
(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
NSLog(@"fail with error");
[locationManager stopUpdatingLocation];
self.currentLocation = nil;
locationManager
调用startUpdatingLocation
时(假设不允许定位服务),locationManager
无法获取当前位置,调用didFailWithError: method
。
在我的情况下,locationManager
在 ios5 上什么都不调用,但在 iOS4 上调用 didFailWithError: method
。我不知道是我的错。
【问题讨论】:
【参考方案1】:不,在开始任何位置更新之前,您应该始终检查是否允许位置监控。如果用户更改了他们对您的应用的偏好,您将只会收到错误消息,而不是实际的位置更新。
您应该检查位置更新是否可用,如果没有,请通知用户他们需要为您的应用重新启用位置服务才能使其正常工作。
【讨论】:
感谢您的建议。在 locationManager 开始调用 startUpdatingLocation 方法之前,它必须检查 CLLocationManager 的状态。所以 if 语句中的条件改为这样 [CLLocationManager locationServicesEnabled]以上是关于不允许位置服务时,我可以访问核心位置 api 吗?的主要内容,如果未能解决你的问题,请参考以下文章
Android Java Google API 应用程序在允许位置访问时崩溃,但在拒绝位置时没有问题......? [复制]