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");
}
}
}
[_locationManager startUpdatingLocation]を実行します。ボタンが押されても動作しないか、ユーザに許可を求める。私はviewDidで次のようなことがあります。load:self.locationManager = [[CLLocationManager alloc] init]; self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; self.locationManager.delegate = self; didUpdateToLocationがトリガーされません。 – Chris
[self.locationManager requestAlwaysAuthorization]または[self.locationManager requestWhenInUseAuthorization]を追加しましたか? – Rajat
[self.locationManager requestAlwaysAuthorization]; [self.locationManager requestWhenInUseAuthorization]; self.locationManager = [[CLLocationManager alloc] init]; self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; self.locationManager.delegate = self; – Chris