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