2011-12-26 1 views
2

バックグラウンドで位置情報サービスが必要なアプリがあります。 info.plistでは、「ロケーション更新のためのAppレジスタ」に背景モードをsetrRequiredしました。 とすべて正常に動作します。プログラムで必要なバックグラウンドモードを変更する

私の質問は、バックグラウンドで実行するにはどうしたらいいですか? オプションを追加してユーザーにそれをオン/オフできるようにすることはできますか?

私はinfo.plistがプログラム的に変更できないことを知っていますので、どうすればいいですか?

答えて

2

キーは説明です。位置情報の更新の登録をサポートしています。だから、あなたがしなければならないことは、アプリがバックグラウンド(またはそれ以前)に入ったときに更新を止めるように指示することです。バックグラウンドでロケーション更新を使用しないでください。

実行時にappのinfo.plist機能を再定義する方法はありません。

+0

ありがとう、私は問題を解決する – icefox

0

伝統的に(そして実用的に)、あなたのアプリが使用されている間にロケーションマネージャを-startUpdatingLocationに設定します。これは、あなたがフルタイムを実行している場合、あなたのバッテリーをかなり素早く消耗します。通常、これを呼び出したり、必要な情報を取得したり、情報を更新したりするには、-stopUpdatingLocationという呼び出しを使用します。これは、すべてのバッテリーを消耗させ、休息させます。

バッテリの寿命を維持したい場合、バックグラウンドまでロールオーバーすると、精度のオプションが非常に限られます。主なものは、-startMonitoringForSignificantChangesです。この位置更新は、主にセルタワーハンドオフおよび三角測量に依存する。したがって、ユーザーが遠距離を移動していない場合や、セル受信が限られているエリアにいる場合は、このバックグラウンドモードがうまく機能するとは思わないでください。

その他の背景オプションは、-startMonitoringRegionです。これにより、場所の周りに円ベースの領域を作成し、-Regionまたは-exitRegionのときに通知を受け取ることができます。これらは、すべてバックグラウンドに入る前に設定する必要があります。彼らはより良い場所の更新の追加の利点があります。 WiFiの変更、セルタワーのハンドオフ、さらにはロケーションアップデートを使用する他のアプリなどがあります。 OSはすべての場所の更新情報を取得し、それらをダウンロードして、OSに登録されているどの地域でも利用できるようにします。

位置情報の更新をバックグラウンドで実行するオプションはありますが、30分の使用後にバッテリーがないことには感謝しません。

幸運。 SOとWeb上でこれらのすべてを達成する方法の例がたくさんあります。トリックは、あなたのために適切な組み合わせを見つけることです。がんばろう。

+0

バッテリーの寿命、そしてユーザーがアプリケーションを閉じても、gpsのアイコンはまだそこにあります。だから私は使用することができますオプションを与えるためには、gpsはバックグラウンドで実行し続けています。 – icefox

関連する問題