【发布时间】:2015-01-15 00:38:51
【问题描述】:
我有一个问题,在用户 (1) 接受或 (2) 拒绝我使用位置服务的请求后,没有调用 locationManager:didChangeAuthorizationStatus。通过放置不同的NSLog 语句,我得出的结论是,当我请求授权时调用该方法,而不是在用户做出选择时调用。有没有人有同样的问题?如果有,你是怎么解决的?
这是我如何初始化我的location manager:
if (_locationManager == nil) {
NSLog(@"Creating location manager");
_locationManager = [[CLLocationManager alloc] init];
_locationManager.delegate = self;
_locationManager.distanceFilter = kCLDistanceFilterNone;
_locationManager.desiredAccuracy = kCLLocationAccuracyBest;
}
if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined) {
NSLog(@"Not determined");
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"dynamicNotifOn"]) {
[_locationManager requestAlwaysAuthorization];
} else {
[_locationManager requestWhenInUseAuthorization];
}
} else if (...) {...
方法如下:
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
NSLog(@"Callback");
if (status == kCLAuthorizationStatusAuthorizedAlways || status == kCLAuthorizationStatusAuthorizedWhenInUse) {
NSLog(@"Authorized");
[_mainButton setIsLoading:NO];
[self startGettingLocation];
} else if (status == kCLAuthorizationStatusDenied || status == kCLAuthorizationStatusRestricted) {
NSLog(@"Denied");
_currentState = CurrentStateError;
[_mainButton setUpButtonForState:_currentState];
}
}
在我按下初始化位置管理器(顶部代码块)的按钮后,控制台打印出如下内容:
Creating location manager
Not determined
Callback
然后我在弹出的 AlertView 中做出选择:
*nothing*
【问题讨论】:
标签: ios objective-c cllocationmanager