2016-11-28 58 views
0

我卸载iOS10应用程序后位置服务停止工作。我在Info.plist中设置了描述,所以它让我很困惑为什么位置服务会停止工作。该应用程序并不在设置 - >与隐私露面>定位服务位置服务使用iOS10重新安装后停止工作

<key>NSLocationAlwaysUsageDescription</key> 
<string>This app needs to use your location so that it may send it to your selected contacts.</string> 
<key>NSLocationWhenInUseUsageDescription</key> 
<string>This app needs to use your location so that it may send it to your selected contacts.</string> 

使用下面的代码表明,状态没有确定检查状态。

if ([CLLocationManager locationServicesEnabled]) { 
    if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusRestricted) { 
     NSLog(@"RESTRICTED"); 
    } else if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied) { 
     NSLog(@"DENIED"); 
    } else if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined) { 
     NSLog(@"NOT DETERMINED"); 
    } else if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedAlways) { 
     NSLog(@"ALWAYS"); 
    } else if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedWhenInUse) { 
     NSLog(@"WHEN IN USE"); 
    } 
} 

编辑: 的的viewController viewDidLoad方法包含以下代码:

- (void)viewDidLoad { 
    [self.locationManager requestAlwaysAuthorization]; 
    [self.locationManager requestWhenInUseAuthorization]; 
    self.locationManager = [[CLLocationManager alloc] init]; 
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    self.locationManager.delegate = self; 

    if ([CLLocationManager locationServicesEnabled]) { 
     if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusRestricted) { 
      NSLog(@"RESTRICTED"); 
     } else if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied) { 
      NSLog(@"DENIED"); 
     } else if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined) { 
      NSLog(@"NOT DETERMINED"); 
     } else if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedAlways) { 
      NSLog(@"ALWAYS"); 
     } else if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedWhenInUse) { 
      NSLog(@"WHEN IN USE"); 
     } 
    } 
} 

回答

0

您需要使用[yourLocationManager startUpdatingLocation]这会提示使用位置的警报。

在此之前authorizationStatus将是kCLAuthorizationStatusNotDetermined

编辑

self.locationManager = [[CLLocationManager alloc] init]; 
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
[self.locationManager requestAlwaysAuthorization]; 
self.locationManager.delegate = self; 

添加此

+0

我运行[_locationManager startUpdatingLocation];当按下按钮时,但它不起作用或要求用户许可。我有以下viewDid负载:self.locationManager = [[CLLocationManager alloc] init]; self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; self.locationManager.delegate = self;并且didUpdateToLocation不会被触发。 – Chris

+0

您是否添加了[self.locationManager requestAlwaysAuthorization]或[self.locationManager requestWhenInUseAuthorization]? – Rajat

+0

[self.locationManager requestAlwaysAuthorization]; [self.locationManager requestWhenInUseAuthorization]; self.locationManager = [[CLLocationManager alloc] init]; self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; self.locationManager.delegate = self; – Chris

0

你需要检查授权状态,如果是XXX,你需要调用requestAlwaysAuthorization()requestWhenInUseAuthorization()。这将触发用户的警报。

如果你已经被删除的应用程序长按应用图标,然后轻敲X,即撤销用户的权限,以使用位置服务,所以直到你再次调用requestAlwaysAuthorization()requestWhenInUseAuthorization()应用程序将被拒绝访问。

相关问题