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;
	}
}