iPhoneアプリでCLLocationManagerを使わない場合に位置情報サービスが許可されているかどうかを判断するには?
CLLocationManagerを使わない場合に位置情報サービスが許可されているかどうかを判断するにはどうするか?
普通にCLLocationManagerを使う場合はCLLocationManagerのデリゲートのlocationManager:didUpdateToLocation:fromLocation:が呼ばれないので問題ないだろう。
しかし、MKMapViewは内部で位置情報サービスを使っているようで、必ずしもCLLocationManagerを独自に使う必要がない場合がある。
こういったケースで実際にCLLocationManagerを使わないまでも、CLLocationManager.locationServicesEnabledで判断すれば良さそうだが、これは「設定」>「一般」>「位置情報サービス」がONになっているかどうかを判断するだけで、アプリ上で出る「〜は現在の位置情報を利用します。よろしいですか?」でOKされたかどうかは判断できないようだ。
そこで、例えばこうする。
ユーザーが位置情報の利用を許可しなかった場合はuserLocation.locationの中身が取得出来ないことを利用した。
普通にCLLocationManagerを使う場合はCLLocationManagerのデリゲートのlocationManager:didUpdateToLocation:fromLocation:が呼ばれないので問題ないだろう。
しかし、MKMapViewは内部で位置情報サービスを使っているようで、必ずしもCLLocationManagerを独自に使う必要がない場合がある。
こういったケースで実際にCLLocationManagerを使わないまでも、CLLocationManager.locationServicesEnabledで判断すれば良さそうだが、これは「設定」>「一般」>「位置情報サービス」がONになっているかどうかを判断するだけで、アプリ上で出る「〜は現在の位置情報を利用します。よろしいですか?」でOKされたかどうかは判断できないようだ。
そこで、例えばこうする。
//ロケーションサービスが利用可能かどうか CLLocation *loc = mapView.userLocation.location; if (!loc){ NSLog(@"ロケーションサービス利用不可"); }
ユーザーが位置情報の利用を許可しなかった場合はuserLocation.locationの中身が取得出来ないことを利用した。
コメント
コメントを投稿