web-dev-qa-db-ja.com

requestWhenInUseAuthorizationがユーザーに場所へのアクセスを要求しないのはなぜですか?

私のviewDidLoadメソッドには

locationManager = [[CLLocationManager alloc]init]; // initializing locationManager
locationManager.delegate = self; // we set the delegate of locationManager to self.
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];


if([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
    [locationManager requestWhenInUseAuthorization];
}

そして、リクエストが呼び出されますが、ユーザーはプロンプトされませんか?どうして?

67
spenf10

おそらくplistファイルを更新する必要があります。 チュートリアルの方法 、クイック&ダーティ:

行う必要があるのは、Info.plistファイルに次のキーのいずれかを追加することです。

NSLocationWhenInUseUsageDescription

NSLocationAlwaysUsageDescription

また、対応するロケーションメソッドWhenInUseまたはBackgroundの承認を要求する必要があります。次の呼び出しのいずれかを使用します。

[self.locationManager requestWhenInUseAuthorization]
[self.locationManager requestAlwaysAuthorization]

役に立つと思う投稿もあります:

iOS 8で位置情報サービスが機能しない

この回答の詳細 plistファイルの更新方法

Info.plistに次のいずれかの行を追加します

<key>NSLocationWhenInUseUsageDescription</key>
<string>The spirit of stack overflow is coders helping coders</string>

<key>NSLocationAlwaysUsageDescription</key>
<string>I have learned more on stack overflow than anything else</string>

コードの発送 の前に、info.plistファイルに含まれる辞書エントリの文字列をカスタマイズしてスペルチェックすることをお勧めします。

262
Adrian