現在の場所を取得したいのですが、代わりにエラーが発生します。
これは私のView Controllerのスニペットです。
- (void)viewDidLoad {
self.locationManager = [[CLLocationManager alloc] init];
[locationManager setDelegate:self];
[locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
[locationManager startUpdatingLocation];
}
- (void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray<CLLocation *> *)locations {
// I would get the latest location here
// but this method never gets called
}
- (void)locationManager:(CLLocationManager *)manager
didFailWithError:(NSError *)error {
NSLog(@"didFailWithError: %@", error);
}
私はデリゲートメソッドを期待していますlocationManager:didUpdateLocations:
が呼び出されますが、代わりにlocationManager:didFailWithError:
が呼び出され、これを出力します。
didFailWithError: Error Domain=kCLErrorDomain Code=0 "The operation couldn’t be completed. (kCLErrorDomain error 0.)"
実際に有効なWiFiおよび3G接続があることを確認してください
...その場合:
設定に移動して位置情報サービスをリセットします
これはその問題の世話をする必要があります。これはデバイス/ネットワーク関連であり、アプリ関連ではありません。特に、アプリが位置情報サービスに依存しており、デバイスがWiFiのみで、人々がAppStoreで否定的な評価を与えている場合、それは迷惑です...ご容赦ください。
シミュレーターを使用している場合:
command + shift + ,
Xcodeでスキームエディターを開くAllow Location Simulation
None
をデフォルトの場所として選択すると、問題が発生した可能性があります。
このエラーを無視して、更新または別のエラーが発生するのを待ちます。
ロケーションマネージャのドキュメントには、このエラーは一時的なものであると書かれています。すぐに場所を取得できなかったことを知らせますが、試行は続けます。 「このような状況では、エラーを無視して新しいイベントを待つことができます。」これは、locationManager:didFailWithError:
という名前のメソッドを使用する本当に骨の折れる方法です-Appleに感謝します!
シミュレーターを再起動してみてください(使用しているものと仮定)。
他のすべてを試した後、これは私のために働いた。
シミュレータの再起動はうまくいきませんでした。
"iOS Simulator" >> "Reset Content and Settings...
経由ですべてをクリアする必要がありました。
シミュレータでこのエラーが発生していました。デバッグパネルの場所ボタンをクリックして場所を設定すると、問題が修正されました。 (ボタンが青色であることを確認してください)
私は同じ問題を抱えています。考えられる説明/修正はカバーされていると思います このSO post で。
シミュレーターの「場所」を変更することは私のために働いた。
デバッグ>場所>(Cine Bicycle Rideなどではなく、Mineがチェックされていません)
シミュレーターで、[設定]> [全般]> [リセット]> [場所とプライバシーのリセット]に移動します。
シミュレーターを終了し、アプリを再度実行します
シミュレータを使用していると仮定すると、Debug -> Location
および場所を設定します。
何も選択していない場合、このエラーが発生します。
custom location
を使用している場合は、長くて正しい方法を使用していることを確認してください。
私は以前に問題を見てきましたが、それを解決する方法がありますが、それは1回しか機能しません。プロジェクトをもう一度実行したい場合は、毎回解決策を繰り返す必要があります.
1.Xcode、製品->スキーム->スキームの編集で、「ロケーションシミュレーターを許可」をキャンセルします。
2. iOSシミュレーターに移動し、コンテンツと設定をリセットします。
3.Xcodeに戻り、最初のステップを繰り返します。
4. iOSシミュレーターにリセットします。その後、動作します。
このような問題は、場所を「Apple
」に設定することで解決できます。少なくともテスト目的には機能します。
返された開発者の場合:) [シミュレータ]メニューから[Debug->Location->Freeway Drive
]を選択するだけです。それでも問題が解決しない場合は、シミュレータメニューから[シミュレータ->コンテンツと設定のリセット]を実行してみてください。これは同じ問題で一度助けになりました。一部のタイムシミュレータの場所は「Custom location
」に設定されているため、何も検出されません。
- 内容と設定をリセットしました。
- 派生データからデータを削除しました。
- Xcode、およびシミュレータを再起動し、私のために働いた。
@Memと他の多くの人の回答から
シミュレーターで家に帰る
ホーム->設定->プライバシー->場所->アプリを選択し、常に選択する
デバイスで試してください。シミュレーターが現在地を取得できない場合があります。
プライバシーを追加するとき-使用中の場所info.plistの使用方法の説明それは私のために解決されました