1

関数を使用[CLLocationManager locationServicesEnabled]して、位置情報サービスが有効かどうかのステータスを取得しています。コードをviewDidLoadメソッドに保持しました。

if(![CLLocationManager locationServicesEnabled])
{
    NSLog(@"No");
}
else
{
    NSLog(@"Yes");
}

このアプリを初めて実行すると、 が返されますYes。なんで?それは私を返す必要がありますNo。これは、「許可する」または「許可しない」オプションを選択しなかった場合です。私は許可も許可もしていないことを意味しますが、viewDidLoad私は得Yesました。

ここで、「許可しない」を選択して、同じviewController. この時点で、少なくとも私は戻ってくるはずですNoが、それでも私はYes. なんで?

との多くの混乱CLLocationManager

何か案は?

4

1 に答える 1

5

locationServicesEnabled設定で位置情報サービスが有効になっているかどうかを返します。設定で有効になっている場合、この関数は常に返しますYES

ドキュメントから

locationServicesEnabled

デバイスで位置情報サービスが有効になっているかどうかを示すブール値を返します。

討論

ユーザーは、[全般] で [位置情報サービス] スイッチを切り替えることにより、設定アプリケーションから位置情報サービスを有効または無効にすることができます。

位置情報の更新を開始する前に、このメソッドの戻り値を確認して、ユーザーが現在のデバイスで位置情報サービスを有効にしているかどうかを判断する必要があります。このメソッドが NO を返し、それでも位置情報の更新を開始した場合、Core Location フレームワークは、位置情報サービスを再度有効にする必要があるかどうかを確認するようユーザーに求めます。

ユーザーが (アラートビューで) アプリの許可を許可または拒否したかどうかは、このメソッドの戻り値に影響しません。

ユーザーがアプリケーションに位置情報へのアクセス許可を与えているかどうかを知りたい場合は、authorizationStatusを使用できます。

于 2012-12-20T09:56:13.617 に答える