位置情報権限をリクエストするとプライバシーに関するおすすめの方法のページで説明されているとおり、アプリはユーザー向けの機能に必要な位置情報権限を要求し、それをユーザーに適切に開示する必要があります。ほとんどのユースケースにおいて、位置情報が必要になるのは、ユーザーがアプリを操作しているときに限られます。アプリがバックグラウンドで位置情報にアクセスする場合(ジオフェンスを実装する場合など)は、位置情報がアプリの中核的機能にとって必要不可欠であること、ユーザーにとって明白なメリットがあること、位置情報にアクセスしていることをユーザーが認識できることが要件として求められます。
注: Google Play ストアは、デバイスの位置情報に関するポリシーを更新しました。アプリによるバックグラウンドでの位置情報へのアクセスは、アプリの中核的機能にとって必要不可欠で、関連するポリシー要件を満たす場合にのみ許可されます。ここで説明するおすすめの方法を採用しても、アプリがバックグラウンドで位置情報を利用することを Google Play が承認するとは限りません。
詳細については、デバイス位置情報に関するポリシーの変更をご覧ください。
バックグラウンドでの位置情報へのアクセスに関するチェックリスト
バックグラウンドで行われる可能性がある位置情報アクセス ロジックを見つけるには、下記のチェックリストを使用します。
アプリのマニフェストで、
ACCESS_COARSE_LOCATION
権限とACCESS_FINE_LOCATION
権限を探します。アプリにこれらの位置情報へのアクセス権が必要であることを確認します。- Android 10(API レベル 29)以上をターゲットとするアプリの場合は、
ACCESS_BACKGROUND_LOCATION
権限も探します。アプリにこの権限を必要とする機能があることを確認します。
- Android 10(API レベル 29)以上をターゲットとするアプリの場合は、
コード内で位置情報アクセス API(Fused Location Provider API、Geofencing API、LocationManager API など)を使用している部分(以下の構造など)を探します。
- バックグラウンド サービス
JobIntentService
オブジェクトWorkManager
またはJobScheduler
タスクAlarmManager
の処理- アプリ ウィジェットから起動されるペンディング インテント
位置情報にアクセスする SDK またはライブラリをアプリが使用する場合、そのアクセスはアプリが行ったものと見なされます。SDK またはライブラリが位置情報にアクセスする必要があるかどうかを確認するには、ライブラリのドキュメントを参照してください。
バックグラウンドでの位置情報へのアクセスを評価する
アプリがバックグラウンドで位置情報にアクセスすることがわかった場合は、以下のアクションを行うことを検討してください。
- バックグラウンドでの位置情報へのアクセスがアプリの中核的機能にとって必要不可欠かどうかを評価します。
バックグラウンドで位置情報にアクセスする必要がない場合は、その処理を削除します。
Android 10(API レベル 29)以上をターゲットとするアプリの場合は、アプリのマニフェストから
ACCESS_BACKGROUND_LOCATION
権限を削除します。この権限を削除すると、アプリは Android 10 を実行するデバイスで位置情報への常時アクセスを選択することができなくなります。アプリがバックグラウンドで位置情報にアクセスしているとき、ユーザーがそれを認識できることを確認します。これは、バックグラウンドでの位置情報へのアクセスがユーザーにとってわかりにくい場合、特に重要です。
可能であれば、位置情報アクセス ロジックをリファクタリングして、アプリのアクティビティがユーザーに明示されるときに限り、位置情報をリクエストするようにします。
バックグラウンドでの位置情報の更新に対する制限
アプリがバックグラウンドで位置情報にアクセスする必要がある場合、Android 8.0(API レベル 26)以上を実行するデバイスでは、Android がデバイスの電池寿命を節約するためにバックグラウンド位置情報の制限を設定することに留意してください。Android のこれらのバージョンでは、アプリがバックグラウンドで実行されている場合、位置情報の更新データを受信できるのは 1 時間あたり数回だけです。詳細については、バックグラウンド位置情報の制限をご覧ください。
参考情報
バックグラウンドでの位置情報の使用について詳しくは、以下の資料をご覧ください。
動画
サンプル
サンプル: バックグラウンドで動作中のアプリが位置情報にアクセスする際のおすすめの方法を示すためのサンプル。