ユーザーの位置座標を調べるためにCLLocationManager
andを使用しています。CLLocationManagerDelegate
最初に座標を取得したことを確認してから、残りのコードを再開したいと思います。コードをロックして位置座標を取得してから再開するにはどうすればよいですか。
アイデアや提案はありますか?
ユーザーの位置座標を調べるためにCLLocationManager
andを使用しています。CLLocationManagerDelegate
最初に座標を取得したことを確認してから、残りのコードを再開したいと思います。コードをロックして位置座標を取得してから再開するにはどうすればよいですか。
アイデアや提案はありますか?
しないでください。位置情報の取得中にフリーズするアプリを望むユーザーは誰でしょうか? 数分かかる場合があり、アプリが数秒で応答しない場合は削除されます。代わりに、アプリが起動したらすぐにロケーション マネージャーをオンにして、デリゲートのコールバックが次のステップを実行するのを待つ必要があります。そのコールバックが返されるまで、ユーザーは、[概要] 画面を見たり、設定を変更したりするなど、場所以外のアクティビティを実行できる必要があります。どちらも持っておらず、その修正が入るまでユーザーが何もできないようにしたい場合は、UIView で画面を覆い、UIProgressIndicator (有限バー タイプではなく無限回転タイプ) を配置します。途中で、位置データを待っているというメッセージが表示されます。また、一部のユーザーはアプリの位置情報権限を付与しない場合があることにも注意してください。
修正を待っている間に単にブロックしないもう 1 つの理由は、電話がかかってきたり、ユーザーが何らかの理由で別のアプリに切り替えたりしたときに、アプリがバックグラウンドにプッシュされる可能性があることです。その時点でアプリがタイト ループに陥り、忙しすぎてバックグラウンドへの移行要求に応答できない場合、OS は操作を完全に強制終了し、ユーザーはアプリに戻ったときにアプリを完全に再起動する必要があります。すべての進行状況と変更は失われます。要約すると、アプリのメイン スレッドをブロックすることは考慮しないでください。