2017-09-06 8 views
0

CLLocationManagerを使用してiosアプリケーションを開発しています。ios11 didUpdateLocationsが呼び出されていません

ios10まで、私はstartUpdatingLocationを呼び出し、その後didUpdateLocationsが呼び出されました。そして私は位置情報を取得しました。

今、iOS11 beta9とXcode beta6をアップデートします。 私はstartUpdatingLocationを呼び出しましたが、didUpdateLocationsは呼び出されませんでした。 私は場所を知ることができません。

場所は私のアプリの中核となる情報です。 同じ問題がある人はいますか?またはこの問題を解決できますか? 私の貧しい私の英語のために申し訳ありません。ありがとうございました。

+1

コードを追加できますか? –

+0

ありがとうございます。しかし、私はこの問題を解決しました。答えは質問 –

+0

のコメントの下にあります。他人を助けるか、質問を削除すると思われる場合は、実際の回答をソリューションに投稿してください。 – rmaddy

答えて

1

iOS 11では、info.plistに新しいプライバシーキーが追加されています。これらのいずれかを追加して、info.plistに追加していただければ幸いです。

/* 
*  Either the NSLocationAlwaysAndWhenInUseUsageDescription key or both the 
*  NSLocationAlwaysUsageDescription and NSLocationWhenInUseUsageDescription 
*  keys must be specified in your Info.plist; otherwise, this method will do 
*  nothing, as your app will be assumed not to support Always authorization. 
*/ 
+0

ありがとう!私はこの問題を解決しました。私は許可を得るために "requestAlwaysAuthorization"を使用しましたが、問題はここにありました。私はiOS11から "requestWhenInUseAuthorization"を使用する必要があります。私が修正した後、didUpdateLocationsが呼び出されました。 –

0

私は別の問題があったInfo.plsit

privacy - location usage description 
Privacy - Location When In Use Usage Description 
Application NSLocationAlwaysUsageDescription 

enter image description here

+0

ありがとうございましたが、ユーザーのアクセス許可を変更する必要がありました。 –

+0

これら3つの文字列は、許可を得るためのポップアップを表示します。 –

0

を追加します。インスタンスメソッドではなくクラスメソッドとして誤ってメソッドを宣言しました。

+ (void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations 

ではなく

- (void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations 

私は "+" を変更すると、 " - "、すべてがうまく働きました。

関連する問題