2010-11-22 6 views
16

現在、私のアプリケーションは、現在の場所を使用するための許可を1度だけ求めます。ユーザーが許可しない場合、彼は一般設定でロケーション警告をリセットしない限り、再度尋ねません。私は後でこの許可を与えるために、アプリ内からユーザーにチャンスを与えたいと思います。つまり、特定のボタンを押すとダイアログが再び表示されます。これは可能ですか?CLLocationは再度許可を求めます

ご協力いただきありがとうございます。

+0

おそらくそうではありません。それは、ロケーションの警告をリセットする必要があるという点です。 – ryyst

答えて

9

新しい回答:iOSの8で今 あなたがプログラム的にデバイスの設定アプリで開くことができます。以前のiOSバージョンをサポートし、これを処理することができることを確認したい場合は、

NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; 
[[UIApplication sharedApplication] openURL:url]; 

を次の操作を行います。

旧回答: ネイティブポップアップを強制的に表示して(ユーザーが設定ページにジャンプできるようにする)方法がわかりません。

ユーザーがアプリの位置情報サービスを許可しているかどうかを判断するために、次のメソッドを使用することができます。 CLLocationManager:

+(CLAuthorizationStatus)authorizationStatus 

ロケーションサービスをグローバルにデバイスレベルで有効かされていない場合にも見つけることができます、あまりにも: CLLocationManager:ロケーションサービスは、デバイス上で使用可能にしている場合

+(BOOL)locationServicesEnabled 
+0

これは部分的にのみ正確です。 locationServicesEnabledは、アプリのロケーション権限ではなく、デバイスの設定についてのみ通知します。 – Acey

14

[CLLocationManager locationServicesEnabled]はちょうどあなたに伝えます。

thisによる。

[CLLocationManager authorizationStatus]

結果はあなたがsettings.appに彼を送信することにより、位置情報サービスの利用を許可するようにユーザーに伝えることができkCLAuthorizationStatusDeniedである場合には、これらの

typedef enum { 
    kCLAuthorizationStatusNotDetermined = 0, 
    kCLAuthorizationStatusRestricted, 
    kCLAuthorizationStatusDenied, 
    kCLAuthorizationStatusAuthorized 
} CLAuthorizationStatus; 

の1を返します

関連する問題