質問

iPhone GPS 開発に関するヒントやコツを提供するフィードバックやブログ リンクなどを探しています。API を読んで理解し、デモアプリを立ち上げて実行するなどしましたが、iPhone の GPS でいくつかの「癖」に遭遇しました。たとえば、iPhone が「省電力」モードになると、受信する位置情報の更新がかなり少なくなるように思えます。アプリケーションで音楽を再生することでこの問題に対処できると読みました [これが真実かどうかはわかりませんが]。

また、合理的な万歩計を作成するには、水平精度が 20 メートル未満の読み取り値を除外する必要があるようです。これは正しいと思いますか?

iPhone の GPS に関する問題を解決するためのチェックリストのようなものはウェブ上にありますか?

前もって感謝します。

役に立ちましたか?

解決

具体的なリストはわかりませんが、留意すべき点がいくつかあります。

  • GPS検索は行っていません。コアの場所の検索を行っています。Core Location は GPS から情報を取得している場合と取得していない場合があります。多くの人が GPS を搭載していない 3g 以前の iPhone を今でも使用しており、3g 携帯電話であっても、多くの場合 (屋内にいる場合など) GPS が利用できない可能性があります。このような場合、電話は携帯電話の塔に基づいて三角測量を試み、Core Location が結果を返します。GPSよりも精度はかなり低くなります。
  • Core Location はデータをキャッシュします。アプリに提供される最初の測定値は古い測定値である可能性が高く、携帯電話が移動したかどうかに応じて、正確である場合もあればそうでない場合もあります。必ず場所のタイムスタンプを確認し、アプリの起動前のものであるかどうかを確認してください。
  • 「省電力」モードが何を意味するのかわかりませんが、画面がロック/オフになっているときのことを考えているのであれば、アプリがまだ実行されている場合、Core Location の実行は停止されません。逆に、Core Location を使用するアプリの実行中に携帯電話をロックすると、新しい位置データが利用可能になると携帯電話がアプリを更新し続けるため、予想よりもはるかに早く携帯電話のバッテリーが消耗する可能性があります。アプリケーションでこれを回避するには、UIApplicationWillResignActiveNotification をリッスンして画面のロックを検出し、UIApplicationDid becomeActiveNotification をリッスンしてロック解除を検出します。
  • 精度が高いほど、結果を取得するまでに時間がかかります。これは、限界まで待つ時間が長いほど、より良い結果が得られるためです。N メートル以内にいる必要があると判断した場合は、電話機がその位置に戻るまでユーザーがそこに立たなければならない時間を考慮してください。

20 メートルが十分な精度であるかどうかは、アプリケーションの使用方法に基づいて判断するしかありません。アプリをテストし、希望どおりに動作するかどうかを確認します。

他のヒント

Tom は素晴らしい答えを出してくれました (特に最初の値が返されるのは古いキャッシュされた場所である可能性があることに注意したいと思いました) が、さらにいくつか追加することがありました。

  • 位置管理者に少なくとももう 1 回位置情報の更新を強制的に発行させたい場合は、位置管理者に停止して再開するように指示できます。
  • ご存知なかった方のために説明すると、CLLocation には 2 つの場所間の距離を示す便利なメソッドがあります。
  • ドキュメントに記載されているように、 locationManager:didFailWithError を実装する必要があります。ただし、その必要はありません (ロケーション マネージャーの更新を一時的に停止するだけの場合)。
  • ユーザーがアプリケーションの位置情報の更新を禁止するシナリオを徹底的にテストしてください。
  • 非常にまれに、アップデートが順番通りに行われないことがあります (つまり、より正確な位置情報が得られ、その後に少し精度の低い古い日付の位置情報が得られます)
  • シミュレーターは位置情報を更新しますが、常にあなたの位置を Apple 本社として報告します。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top