2016-06-24 16 views
0

私は場所のアクセス許可に取り組んでいますが、問題は次にあります。 ユーザーは、プライバシからロケーションサービスを無効にし、アプリケーションをインストールしました。私は位置情報サービスを有効にするよう求めるコード行を持っています:if (![CLLocationManager locationServicesEnabled] || [CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied)...これはかなりうまく動作しています。問題は、アプリケーションが場所を使用することを許可するようにアプリケーションに要求していないということです。許可を求めるためのコード:CLLocationManagerのアクセス許可

if ([self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) { 
     [self.locationManager requestWhenInUseAuthorization]; 
    } 

注:場所サービスが有効になっている場合すべてが正常に動作し、それが承認初めて要求します。

EDIT:権限のための完全なコード:認証ステータスがNotDeterminedされたときに

-(void)setupPermissions 
{ 
    self.locationManager = [[CLLocationManager alloc] init]; 
    self.locationManager.delegate = self; 
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; 

    if (![CLLocationManager locationServicesEnabled] || [CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied) { 

    } 

    if ([self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) { 
     [self.locationManager requestWhenInUseAuthorization]; 
    } 
    [self.locationManager startUpdatingLocation]; 
} 
+0

の代わりにあなたのコードについて話して、あなたのコードを表示してください。権限を取得しようとするあなたの本当の、完全なコード。ありがとう。 – matt

+0

ええ、ごめんなさい。私の質問を編集しました。 – Stefan

答えて

2

あなたのコードは意味をなさない。だから、あなたは空で、別のifその常に実行にかかわらず、最初のifが何をするかのいずれかのifを持って

if (something) { 
} 
if (somethingelse) { 
    [self.locationManager requestWhenInUseAuthorization]; 
} 

:あなたはこれを持っています。おそらく、else ifを2番目の条件として使用することを意味していましたか?

(そして、あなたはすでに言われてきたとステータスがNotDeterminedされていない限り、 requestWhenInUseAuthorizationを呼び出すことは無意味である、ということを覚えておいてください。)

+0

はい、空の場合は削除しました。しかし、どのように私はこの問題を解決することができます "トラック"ユーザーが位置情報サービスを変更し、 "ライブ"に許可するように頼んでいる? – Stefan

+0

ユーザ_changes_ロケーションサービスの場合、ロケーションマネージャデリゲートは 'locationManager:didChangeAuthorizationStatus:'を取得します。 – matt

+0

はい、男、魅力のように動作します!ありがとう!!! – Stefan

1

あなたはiOSのユーザーのアクセス権を要求するために得ることができる唯一の時間です。

ユーザーがあなたのアプリを拒否した場合、再度プロンプトを表示させるには、アプリをアンインストールするか、端末のプライバシーをリセットするしかありません。

最も簡単な方法は、アラートコントローラに設定へのリンクを提供して、アラートコントローラがそれをオンにできるようにすることです。

Here is a link that shows the process for doing that

関連する問題