その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

位置情報サービス利用の際のバッテリー電力節約のためのヒント

位置情報対応プログラミングガイドみてたら、わかりやすくまとまってたので。

iPhone OSベースデバイスの無線によるデータの送受信は、デバイス上のその他の操作に比べ、より 多くの電力を必要とします。Core Locationはこれらの無線を利用してユーザの位置を特定するため、 アプリケーションでの位置情報サービスの利用については慎重を期す必要があります。ほとんどの アプリケーションでは、位置情報サービスを実行させたままにしておく必要はないため、サービス をオフにするだけで電力の節約になります。

使用しない間は位置情報サービスをオフにする

曲がり角ごとに指示を出す道案内アプリケーションを除き、ほとんどのアプリケーションでは、位置情報サービスを実行したままにしておく必要はありません。位置情報サービスは、位置情報を取得するのに必要な間だけオンにして、その後はオフにしてください。ユー ザが乗物で移動中でない限り、現在位置は問題になるほど頻繁には変化しません。また、必要であれば後からいつでも、位置情報サービスを再開できます。

可能な場合は、標準位置情報サービスではなく、大幅変更位置情報サービスを使用する

大幅変更位置情報サービスでは、電力を大幅に節約しながらサービスを動かしたままにしておけま す。これは、ユーザの位置変更を追跡する必要があるけれども、標準位置情報サービスで提供されるような高度な測地精度は必要としないアプリケーションに強く推奨されます。

なんとなく、大幅変更位置情報サービスってバックグラウンド用に思ってました。言われてみればフォアグラウンドでもこれでいいのか・・・

アプリケーションに支障をきたさない限り、測地精度にはより低い精度を使用する

必要以上に高い測地精度を要求すると、Core Locationは追加のハードウェアに電力を投入し、不要な精度に対して電力を浪費することになります。アプリケーションにおいてユーザの位置を数メートルの範囲で本当に認識する必要がある場合を除き、desiredAccuracyプロパティにkCLLocationAccuracyBestやkCLLocationAccuracyNearestTenMetersの値を設定しないでく ださい。また、kCLLocationAccuracyThreeKilometersの値を指定しても、位置情報サービスからより精度の高いデータが返されるのを避けることができません。Core Locationは、ほとんどの場合、Wi-FIまたは携帯電話の信号に基づいて100メートル程度以内の測地精度で位置データを返すことができます。

これは朗報!

一定期間を過ぎても測地精度が上がらない場合は位置情報イベントをオフにする

アプリケーションの受信しているイベントの測地精度が望んでいるレベルでない場合、受信しているイベントの測地精度を調べて、時間の経過とともに向上しているか、だいたい同じレベルを維持しているのかを確認します。精度が向上していなければ、望んでいる測地精度が単純にその時点では得られていないということが考えられます。位置情報サービスをいったんオフにしておき、 後で再度試すようにすれば、アプリケーションによる電力浪費を防ぐことができます。

なるほど。