2016-11-28 14 views
0

iOS10アプリケーションをアンインストールした後でロケーションサービスが動作しなくなりました。 Info.plistに説明が設定されているので、位置情報サービスが機能しなくなる理由が混乱します。アプリは、次のコードを使用してステータスを確認する設定 - > Privacy->位置情報サービスにロケーションサービス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"); 
    } 
} 

EDIT: のViewController viewDidLoadメソッドは、次のコードが含まれています

あなたが場所を使用するための警告を促すメッセージが表示されます [yourLocationManager startUpdatingLocation]を使用する必要が
- (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

そしてauthorizationStatuskCLAuthorizationStatusNotDetermined

編集になりますまで

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

あなたは、認可の状態を確認する必要があり、それはXXXだ場合、あなたはrequestAlwaysAuthorization()requestWhenInUseAuthorization()を呼び出す必要があり、この

+0

[_locationManager startUpdatingLocation]を実行します。ボタンが押されても動作しないか、ユーザに許可を求める。私はviewDidで次のようなことがあります。load: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

を追加します。これにより、ユーザーに警告が表示されます。

アプリアイコンを長押ししてXをタップするとアプリが削除され、位置サービスを使用するユーザーのアクセス許可が取り消されたため、requestAlwaysAuthorization()またはrequestWhenInUseAuthorization()に再度アクセスするまでアクセスが拒否されます。

関連する問題