Android 13 の通知はオプトイン モデルを使用します。これは、オプトアウト モデルを使用する以前の Android バージョンからの変更です。 13 では、すべてのアプリは、通知プロンプトを送信する前にユーザーに許可を求める必要があります。このモデルは、通知の中断を減らし、情報の過負荷を最小限に抑え、ユーザーが自分にとって重要なことに基づいてどの通知を表示するかを制御するのに役立ちます。オプトイン モデルをサポートするには、OEM は通知システムとランタイム アクセス許可システムに変更を実装する必要があります。
このページでは、この変更をサポートするために OEM が実装する必要があるものと、実装を検証する方法について説明します。
オプトイン通知の変更を実装する
Android 13 以降、アプリは、通知を送信する前に、システムにandroid.permission.POST_NOTIFICATION
実行時アクセス許可を要求して、通知を送信する意図を宣言する必要があります。
Android 13 以降では、アプリがユーザーに通知を送信できるかどうかを決定する設定は、パーミッション システムに保存されます。 Android 13 より前では、この設定は通知システムに保存されていました。したがって、OEM は、アプリが通知を送信できるかどうかに関する既存の通知データを、通知システムからランタイム許可システムに移行する必要があります。また、OEM は、そのデータをアプリ開発者に表示する通知システムで既存の API を維持する必要があります。
通知および許可システムへの変更は、ユーザー通知動作のオプトイン モデルに基づいており、実装のガイドラインセクションで説明されています。
オプトイン モデルでのユーザー通知の動作
次の表は、Android 13 を実行しているデバイスでのさまざまなアプリ バージョンの通知動作を示しています。
Android 13 のデバイス | Android 13 以降を対象とするアプリ | Android 13 以前を対象とするアプリ |
---|---|---|
新規インストール | アプリからプロンプトが表示されるまで、通知はブロックされます。 アプリは、いつ許可を求めるかを制御します。 | OS からプロンプトが表示されるまで、通知はブロックされます。 アプリの最初の実行時に許可が求められます。 |
既存のアプリ (アップグレード) | アプリからプロンプトが表示されるまで、通知は許可されます。 アプリが最初の予選実行で要求するまで、一時的なアクセス許可が付与されます。 | OS によってプロンプトが表示されるまで、通知は許可されます。 アプリの最初の実行まで、一時的な許可が付与されます。 |
実装のガイドライン
リファレンス実装については、通知サービス、許可サービス、およびポリシー サービスを参照してください。デフォルトのパーミッション ハンドラの例外を実装するには、 Runtime Permissionsを参照してください。
実装中は、Android 13 以前の SDK をターゲットとするアプリのユーザー通知動作に関する次のガイドラインを使用してください。
- Android 13 デバイスに新しくインストールされたアプリは、ユーザーが許可プロンプトを承認しない限り、通知を送信してはなりません。
- アプリが Android 13 以降のバージョンをターゲットにしている場合、ユーザーの許可を求めるタイミングと必要性をアプリが制御するため、アプリからプロンプトが表示されるまで通知をブロックする必要があります。
- アプリが Android 13 より前のバージョンをターゲットにしている場合、OS によってプロンプトが表示されるまで通知をブロックする必要があります。 OS は、アプリの初回実行時に許可プロンプトを表示する必要があります。
Android 13 へのアップグレード前にデバイスに存在していたアプリ、またはバックアップと復元によって復元されたアプリは、ユーザーがそのアプリからアクティビティを初めて起動するまで通知を送信できる必要があります。
Android 13 以降のバージョンの SDK を対象とするアプリの場合、ユーザーがアプリまたは
NotificationChannel
レベルでこのアプリの通知設定を以前にカスタマイズしていない場合は、一時的なアクセス許可の付与を取り消します。アプリは、通知の送信を続行できるようにする前に、ユーザーに許可を求める必要があります。Android 13 を対象とするアップグレードされたアプリに現在、一時的なアップグレード許可による通知許可がなく、ユーザーが少なくとも 1 回起動したことがある場合、アプリは、それ以上のフォアグラウンド サービスの実行を許可する前に、通知許可プロンプトを表示する必要があります。
Android 13 より前のバージョンのターゲット SDK を持つアプリの場合、アプリが少なくとも 1 つの
NotificationChannel
を作成した後、最初のアクティビティの起動をインターセプトして、ユーザーがアプリから通知を受け取りたいかどうかを尋ねる許可プロンプトを表示します。ユーザーが以前に、アップグレード中のデバイス上のアプリまたはデバイスに復元されるバックアップで、アプリまたは
NotificationChannel
レベルで通知設定をカスタマイズした場合、アプリ レベルの設定は、FLAG_PERMISSION_USER_SET
フラグを使用して権限システムに移行する必要があります。アプリが特に要求しない限り、それ以上の通知許可プロンプトをユーザーに表示してはなりません。
バックアップと復元は、Android 13 デバイスと以前の OS バージョンのデバイスとの間で後方互換性と前方互換性を備えている必要があります。 Android 13 デバイスから生成されたバックアップ データは以前の OS バージョンに復元する必要があり、以前の OS バージョンからのバックアップ データは Android 13 デバイスに復元する必要があります。
進行中のメディア再生に関連するメディア通知は、通知許可から除外する必要があります。
通知および許可システムへの変更を検証する
実装を検証するには、次のテストを実行します。
PreferencesHelperTest
、NotificationManagerServiceTest
で指定された単体テスト。アップグレードとバックアップと復元をテストする手動テスト。
通知を送信する CTS 許可および通知システム テスト。これらのテストの一部は、 cts/tests/tests/permission/ 、 NotificationManagerTest.java 、およびcts/tests/tests/notificationlegacy/にあります。