Android, iOSのジオフェンシング機能を調べた

メモ

AndroidiOSも、同時に登録できるジオフェンス数は多くない(Android: 100件、iOS: 20件)。多数のジオフェンスを登録したい場合は工夫が必要。

  • ユーザーの進路に合わせて遠ざかったポイントを削除、近づいたポイントを追加
  • ジオフェンススポットをクラスタリングし、大きい範囲にしておく。大きい範囲に入ったらより詳細なジオフェンスを登録しなおす。

ジオフェンシングとは

特定の領域(ジオフェンス)を定め、領域の境界線を横切ったことを検出することで、領域への「進入」「退出」を検知し、何らかの処理を行うことができる。

ジオフェンスの定め方はいろいろある。

  • 地理的位置を中心とした半径50mの円の範囲
  • Wi-Fi アクセスポイントの電波を検知できる範囲
  • Bluetoothビーコンの電波を検知できる範囲

Android

Google Play services location APIs の機能として提供されている。

Create and monitor geofences

仕様

  • 同時に設定できるアクティブなジオフェンスは、1アプリにつき100件まで
    • バイスをマルチユーザーで利用している場合は、1アプリにつきユーザーごとに100件まで
  • ジオフェンス内滞留時間を指定することができる
    • 指定の時間滞在していたら通知する、といった調整が可能
  • ジオフェンスの有効期限を設定することができ、期限切れになると自動的に削除される

iOS

CoreLocationフレームワークに、地理的領域の観測機能とビーコンによる領域観測機能が用意されている。今回は、地理的領域の観測機能についてのみ調査した。

https://developer.apple.com/jp/documentation/UserExperience/Conceptual/LocationAwarenessPG/RegionMonitoring/RegionMonitoring.html

仕様

  • 同時に設定(監視)できる地理的領域は、1アプリにつき最大20件
  • アプリケーションが実行していない時でも監視されており、実行されていないときに領域の境界線を横切った場合はアプリケーションがバックグラウンドで起動される。
  • 「設定」アプリで、ユーザーが「位置情報サービス」を無効にしている場合は利用できない。
  • 「設定」アプリで、ユーザーが「Background App Refresh」をデバイスかアプリケーションのどちらかで無効にしている場合は利用できない。
  • バイス機内モードになっていて、必要なハードウェアの電源を入れられない場合は利用できない。