iOS 8での位置情報のプライバシーアクセス
iOS 7では CLLocationManager
を用いて位置情報を利用する際に自動的にシステムのアラートが表示される。
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
[locationManager startUpdatingLocation];
self.locationManager = locationManager;
iOS 8では CLLocationManager
を使う前にまず
- (void)requestWhenInUseAuthorization __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_8_0); - (void)requestAlwaysAuthorization __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_8_0);
これらのメソッドを用途に応じて呼ぶ必要がある。 これらを呼ばないとアラートは表示されない。
CLLocationManager *locationManager = [[CLLocationManager alloc] init]; [locationManager requestWhenInUseAuthorization]; // [locationManager requestAlwaysAuthorization]; [locationManager startUpdatingLocation]; self.locationManager = locationManager;
また、アプリの Info.plist に NSLocationWhenInUseUsageDescription
と NSLocationAlwaysUsageDescription
のキーをそれぞれ設定する必要がある。
これらを設定しないとアラートは表示されない。
Info.plist の編集画面で Privacy の項目に Privacy - Location Usage Description
というものがあるけど、これは NSLocationUsageDescription
というiOS 6と7用のキーで、NSLocationWhenInUseUsageDescription
と NSLocationAlwaysUsageDescription
は Xcode でポップアップされるリストに存在しないのでリストからではなくて直接文字列を記入する必要がある事に注意。*Xcode 6.3で確認