2011-02-03 7 views
4

私はiPhoneアプリ開発の初心者ですが、フォアグラウンドではないときに基本的にあなたの場所を更新するアプリを作ろうとしています。 /彼女はアプリを起動します。私はstartMonitoringSignificantLocationChangeを使うことができると思っていました。これは、アプリケーションがバックグラウンドにあるときに機能するためですが、それは非常に不正確です。私は実際に時間間隔を設定できるようにしたいと考えています。たとえば、10分ごとに場所が更新されますが、そのことについてどのような手掛かりがないのでしょうか。何か案は?監視の代わりに重要な場所変更を監視しますか?

+0

あなたのアプリを起動したときのユーザーの位置を追跡したい場合は、アプリが起動したときに位置情報サービスを開始するだけです。 –

+0

ポイントは、彼がアプリにいないときにユーザーの位置を追跡することです。たとえば、携帯電話をポケットに入れて歩いているときなど、アプリがロードされたときの位置の地図が表示されます。 – evanskis

答えて

3

あなただけstartUpdatingLocation使用しますが、ちょうどあなたのCLLocationManagerのプロパティが設定されていることを確認してくださいでした:

  1. 使用distanceFilterを賢く:代わりに位置更新のためのX分ごとにチェックするだけ更新する場所のマネージャーに伝えます200/300メートルごとに(あなたのユーザーが徒歩であるか、運転しているかによって異なります)。

  2. desiredAccuracyは、同様にアプリがリニューアルされることはありません約100メートル(ヘッダファイルで宣言された定数を見て)ので、あなたのアプリがバッテリーを消耗しません。..

に設定する必要があります死んだとしても、バックグラウンドにとどまっている間は、Location Managerの代理人であることを意味し続けます。locationManager:didUpdateToLocation:fromLocation:を受け取ります。

希望に役立ちます。

5

はここにあなたが持っている

一つの選択肢は、連続位置更新を必要とするアプリケーションを宣言することであるアップルのサイトでbackground location documentationをお読みください。

アプリケーションは、連続背景位置 更新を必要 として自身を宣言することができます。 、前景と背景の両方で、 定期的に位置情報の更新を必要とするアプリケーションは、その Info.plistファイルに にUIBackgroundModesキーを追加し、 場所の文字列を含む配列に このキーの値を設定する必要があります。このオプションは、 のサービス(ナビゲーション サービスなど)を提供するアプリケーションのためのもので、 ユーザーに自分の所在地である を常に知らせることを目的としたアプリケーション向けのもので、 です。アプリケーションのInfo.plistファイル にあるキー の存在は、 のアプリケーションが必要に応じて のアプリケーションを実行できるようにすることをシステムに通知します。

これは、アプリがユーザーの歩みを追跡できるという点で望ましい結果をもたらしますが、これは最も消費電力の高いオプションであり、一般に最も望ましいオプションではないことに気付く必要があります。しかし、あなたが誰かの散歩を追跡しようとしている場合、これはあなたがする必要があるものです。

非常にです。 10分程度で更新情報を取得したいとします。その場合は、この戦略を使用しないで、代わりに重要な場所の更新を使用することをお勧めします。これらはあなたのアプリが閉じられていても、あなたが言うようにアプリケーションを再起動しますが、あまり正確ではありません。それらをより良くするには、アプリが重要な位置更新を取得するとすぐに通常の位置更新を開始し、アプリが再び中断される前に位置を改善するための十分な時間を確保する必要があります。

これは完璧ではありませんが、重要な(つまりセルタワー)変更を使用するよりも優れています。

関連する問題