怠慢プログラマーの備忘録

怠慢でナマケモノなプログラマーの備忘録です。

【Swift】CLLocationManagerを検証してみた

検証結果


■ バックグラウンド&スリープ状態での位置情報取得可否

【検証方法】

  • アプリをバックグラウンドにした時間帯とデバイスをスリープさせた時間帯に位置情報の通知が取得できているかをデータで検証する。

【検証結果】

フォアグラウンド バックグラウンド
スリープしていない 取得可 取得可
スリープ中 取得可 取得可
  • 仮設ではアプリがバックグラウンド状態でも位置情報を取得できるとしており、仮設通り位置情報を取得できていることを確認。
  • バイスがスリープ時は仮設では取得できないとしていたがスリープ時の時間帯でも位置情報を受診していたことからスリープ時でも取得可能である。

■ 要求する精度設定による精度及びバッテリーの消費量

【検証方法】

  • kCLLocationAcuuracyBestとkCLLocationAcuuracyBestForNavigationの2パターンで検証を行う。
  • それぞれの精度設定において同じルートを徒歩で移動し画面に表示されるルートと取得したデータを比較し検証を行う。
  • 歩行テスト時はスリープバックグラウンド且つスリープ状態で検証。
  • バッテリーの消費量の検証は机上で放置状態とする。
  • それぞれ50%から開始し1,3時間経過後のバッテリーの消費量を比較・検証する。
  • テスト時はバックグラウンド且つスリープ状態で検証。

【検証結果】

精度(データ量)
Best 677
BestForNavigation 688
バッテリー消費量(1時間後) バッテリー消費量(3時間後)
Best 46%(-4%) 21%(-29%)
BestForNavigation 37%(-13%) 20%(-30%)
  • 精度に関して実際に歩行したルートを画面上に表示させるとそれほど大きな差は確認できない。
  • 同じく精度に関して歩行時に取得したデータ(位置情報通知した時間・緯度・経度)の総数は11の差があったが、仮設していたほどの大きな差はない。
  • バッテリーの消費量に関して1時間では9%の差であったが3時間後では1%の差が発生した。