我正在使用CLLocationManager来监控我的应用中的用户位置。下面列出了产生问题的步骤: -
当我第一次调用CLLocationmanager的requestwheninuseauthorization方法时,它会显示位置访问权限警告&我不允许或不允许按钮做出选择。
现在,如果手机因闲置一段时间或被电话打断而被锁定。
我解锁手机&看到我的应用程序已经在前台运行了位置访问权限对话框,现在解锁手机后我没有在我的应用程序中的屏幕上找到位置访问权限警报。它只是消失了,尽管我既不拒绝也不接受提供位置访问。
原因可能是什么?我怎么能解决这个问题,否则可能是一个解决方法,因为它似乎是iOS的一个问题。根据我的要求,用户必须在使用我的应用程序之前提供位置访问权限。
答案 0 :(得分:2)
正如Sandeep暗示的那样,我在viewDidLoad:viewcontroller的方法中使用了以下代码,添加了UIApplicationDidBecomeActiveNotification的观察者。
[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didBecomeActive)
name:UIApplicationDidBecomeActiveNotification
object:nil];
现在我再次在我的didBecomeActive viewcontroller方法中提供了位置授权对话框。
- (void)didBecomeActive {
// Here put your conditions to check that user hasn't already authorised or rejected the location access permissions.
[self.locationManager requestWhenInUseAuthorization];
}
因此,现在每当用户解锁设备时,由于上述实施,授权对话始终存在。
答案 1 :(得分:0)
每当您想要访问位置信息时,您可以使用它来测试用户是否已授予位置访问权限:)
BOOL isAuthorized = [CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedWhenInUse;
BOOL isTurnedOn = [CLLocationManager locationServicesEnabled];
if (isAuthorized || !isTurnedOn) {
[self.locationManager startUpdatingLocation];
}
else {
[self.locationManager requestWhenInUseAuthorization];
}