CLLocationManagerDelegate内でアプリの位置情報サービス利用可否を判断する方法
[設定]-[一般]-[位置情報サービス] では、アプリ単位に位置情報サービスの使用許可をユーザがON/OFFを設定できる。
アプリ単位で「〜は現在の位置情報を利用します。よろしいですか?」でOKされたかを判断する方法をメモ。
この場合、[CLLocationManager locationServicesEnabled]では判断不可。
このメソッドは全体の設定がONかOFFをBOOL値で返すだけ。
位置情報サービスの使用をアプリが許可されていない場合はエラーが発生し、CLLocationManagerDelegate ProtocolのlocationManager:manager didFailWithError: が呼ばれる。
そのため、OFFに設定されている場合のハンドリングはこのメソッド内で行う。
以下、サンプルコード。
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { if(error) { int code = [error code]; switch (code) { // 位置情報サービスの利用を許可されていない場合 case kCLErrorDenied: // ここでエラーハンドリングを行う break; default: break; } }