iPhoneアプリでCLLocationManagerを使わない場合に位置情報サービスが許可されているかどうかを判断するには?

CLLocationManagerを使わない場合に位置情報サービスが許可されているかどうかを判断するにはどうするか?

普通にCLLocationManagerを使う場合はCLLocationManagerのデリゲートのlocationManager:didUpdateToLocation:fromLocation:が呼ばれないので問題ないだろう。

しかし、MKMapViewは内部で位置情報サービスを使っているようで、必ずしもCLLocationManagerを独自に使う必要がない場合がある。

こういったケースで実際にCLLocationManagerを使わないまでも、CLLocationManager.locationServicesEnabledで判断すれば良さそうだが、これは「設定」>「一般」>「位置情報サービス」がONになっているかどうかを判断するだけで、アプリ上で出る「〜は現在の位置情報を利用します。よろしいですか?」でOKされたかどうかは判断できないようだ。

そこで、例えばこうする。

//ロケーションサービスが利用可能かどうか
CLLocation *loc = mapView.userLocation.location;
if (!loc){
  NSLog(@"ロケーションサービス利用不可");
}

ユーザーが位置情報の利用を許可しなかった場合はuserLocation.locationの中身が取得出来ないことを利用した。

コメント

このブログの人気の投稿

Windows7でネットワーク上の共有フォルダにアクセスする資格情報を保存するには?

iOSアプリ申請・公開手順まとめ 〜2016年3月版〜

iPhoneXかどうかをJavaScriptで判断するには?