5

ユーザーの GPS 位置情報を使用し、小さな計算を行い、データを Bluetooth Low Energy (4.0) ウォッチに送信するフィットネス (ランニング) 用の iOS (7.0+) アプリケーションを開発しています。このプロセスは、ユーザーが iOS デバイスをロックしている場合でも、バックグラウンドで実行する必要があります。

次のバックグラウンド モードも実装しました。

 App communicates using CoreBluetooth
 App registers for location updates

デバイスがロックされている一定の時間 (例: 2 時間) を除いて、すべてが正常に機能するようになりました。ただし、iOS デバイスは位置情報の更新を停止します。 GPS 値を Bluetooth ウォッチに送信します。次に、デバイスのロックを解除し、アプリを再度開くと、位置情報サービスが正常に機能するようになります。

一定時間後に位置情報の更新を突然停止することなく、位置情報サービスをバックグラウンド (デバイスをロック) で常に実行し続ける方法を知っている人はいますか? 可能であれば、GPS を使用する場合よりもバッテリーを消耗しすぎない効率的なソリューションが優先されます。

4

1 に答える 1

10

最も重要:を開始する前に、 に設定pausesLocationUpdatesAutomaticallyしていることを確認してください ( docsを参照)。 NOCLLocationManager

バッテリーの使用量を最小限に抑えるには、遅延位置情報の更新も使用する必要があります (詳細は SO を参照)。これにより、GPS チップが位置情報の更新を収集している間、CPU がスリープしてバッテリーを節約できます。定期的にそれらを CPU にダンプします。これは、時計を 1 秒に 1 回更新する必要がある場合には適していないかもしれませんが、10 秒、20 秒、または 30 秒ごとに更新できる場合は、それだけ多くの CPU ウェイクアップを節約できます。

于 2014-08-22T15:10:45.397 に答える