位置情報サービスが有効になっている場合、デバイス (iPod Touch 2G iOS 4.1) をテストしました
permitted = [locationManager locationServicesEnabled];
位置情報サービスが有効になっているかどうかに関係なく、常にYESになります。アプリ固有のボタンではなく、位置情報サービスの一般的なボタンについて話しています。iOS 3.2.2 を搭載した iPad では、すべて正常に動作しています。
位置情報サービスが有効になっている場合、デバイス (iPod Touch 2G iOS 4.1) をテストしました
permitted = [locationManager locationServicesEnabled];
位置情報サービスが有効になっているかどうかに関係なく、常にYESになります。アプリ固有のボタンではなく、位置情報サービスの一般的なボタンについて話しています。iOS 3.2.2 を搭載した iPad では、すべて正常に動作しています。
[locationManager locationServicesEnabled]
これはiOS 4.0 から非推奨になっていることに注意してください。[CLLocationManager locationServicesEnabled]
代わりにクラス メソッドを使用してください。
[CLLocationManager authorizationStatus]
使用する場合
[CLLocationManager locationServicesEnabled]
次に、locationServicesがシステム全体で有効になっているかどうかを調べます。したがって、[設定]-> [位置情報サービス]に移動すると、最初のスイッチが表示されます。そのメソッドはその状態の状態を返し、アプリとは関係ありません。
アプリが位置情報サービスにアクセスできるかどうかを知る必要がある場合は、@Pascaliusの回答を使用してください。
ロケーション マネージャーのデリゲートを実装するときは、didFailWithError を実装する必要があります。ユーザーが場所へのアクセスを許可しなかった場合、適切なエラーが表示されます
Apple ドキュメントの状態:
ユーザーがアプリケーションによる位置情報サービスの使用を拒否した場合、このメソッドはkCLErrorDenied
エラーを報告します。このようなエラーを受け取ったら、位置情報サービスを停止する必要があります。
[CLLocationManager locationServicesEnabled] は、ユーザー設定ボタンがオフに切り替えられたときに NO を返します。そのときだけ、NO を達成しました。