Android 13 では、アプリから除外対象外の通知を送信する新しい実行時の権限 POST_NOTIFICATIONS
が導入されました。この変更は、ユーザーが重要な通知に集中するのに役立ちます。
この機能による制御の強化と柔軟性の向上を活用するため、できるだけ早く Android 13 をターゲットに設定することを強くおすすめします。引き続き 12L(API レベル 32)以下をターゲットとする場合は、アプリの機能のコンテキストに応じて権限をリクエストする機会を失うことになります。
新しい権限を使用する
アプリから新しい通知権限をリクエストするには、アプリを更新して Android 13 をターゲットに設定し、以下のセクションで説明しているように、他の実行時の権限をリクエストする場合と同様のプロセスを実施します。
アプリのマニフェスト ファイルで宣言する必要がある権限を、次のコード スニペットに示します。
<manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest>
アプリの機能は権限ダイアログでのユーザーの選択によって異なる
権限ダイアログでは、ユーザーは次のアクションを実行できます。
- [許可] を選択する
- [許可しない] を選択する
- どちらのボタンも押さずにダイアログをスワイプして閉じる
以下のセクションでは、ユーザーが選択したアクションに基づくアプリの動作について説明します。
ユーザーが [許可] を選択した場合
ユーザーが [許可] を選択した場合、アプリは次のことを実行できます。
- 通知を送信する。すべての通知チャンネルが許可されます。
- フォアグラウンド サービスに関する通知を送信する。この通知は通知ドロワーに表示されます。
ユーザーが [許可しない] を選択した場合
ユーザーが [許可しない] を選択した場合、アプリは通知を送信できません。少数の特定のロールを除いて、すべての通知チャンネルがブロックされます。これは、ユーザーがシステム設定でアプリの通知をすべて手動でオフにした場合の動作と似ています。
ユーザーがダイアログをスワイプして閉じた場合
ユーザーがダイアログをスワイプして閉じた場合(つまり、[許可] と [許可しない] のどちらも選択しなかった場合)の動作は次のとおりです。
- アプリが一時的な通知権限の付与の対象である場合、システムは一時的な権限付与を維持します。
- アプリに一時的な権限が付与されない場合、アプリは通知を送信できません。
新しくインストールされたアプリへの影響
Android 13 を搭載したデバイスにユーザーがアプリをインストールした場合、アプリの通知はデフォルトでオフになります。アプリは、新しい権限をリクエストしてユーザーがその権限をアプリに付与するまで、通知の送信を控える必要があります。
権限ダイアログが表示されるタイミングは、アプリのターゲット SDK バージョンによって異なります。
- Android 13 以上をターゲットとするアプリは、権限ダイアログが表示されるタイミングを完全に制御できます。この機会を利用して、アプリがこの権限を必要とする理由をユーザーに説明し、権限を付与するようすすめます。
- アプリが 12L(API レベル 32)以下をターゲットとする場合、権限ダイアログは、最初の通知チャンネルの作成時に表示されます。通常、これはアプリの起動時です。
既存のアプリのアップデートへの影響
新しい通知権限の許可に伴う中断を最小限に抑えるため、Android 13 へのシステム アップグレードより前にユーザーのデバイスにインストールされていたすべての対象アプリに対し、一時的に新しい通知権限が自動的に付与されます。この一時的な権限付与の持続時間は、アプリのターゲット SDK バージョンによって異なります。
Android 13 以上をターゲットとするアプリの場合、一時的な権限付与は、アプリが初めてアクティビティを起動するまで持続します。
権限ダイアログが表示されるタイミングは、アプリで完全に制御できます。この機会を利用して、アプリがこの権限を必要とする理由をユーザーに説明し、権限を付与するようすすめます。
アプリが 12L 以下をターゲットとする場合、一時的な権限付与は、通知権限の実行時ダイアログでユーザーが明示的にオプションを選択するまで持続します。つまり、ユーザーがオプションを選択せずに権限プロンプトを閉じた場合、システムはアプリに対する一時的な権限付与を維持します。
一時的な権限付与の対象
アプリが一時的な権限付与の対象となるには、アプリに既存の通知チャンネルがあり、12L 以下を搭載したデバイスでユーザーがアプリの通知を明示的に無効にしていないことが必要です。
12L 以下を搭載したデバイスでユーザーがアプリの通知を無効にした場合、デバイスが Android 13 以上にアップグレードされても、ユーザーの拒否は引き続き有効です。
除外
メディア セッションに関する通知は、この動作変更から除外されます。
おすすめの方法
このセクションでは、新しい通知権限をアプリで最も効果的に使用するためのいくつかの方法について説明します。
アプリのターゲット SDK バージョンを更新する
権限ダイアログが表示されるタイミングをより柔軟に制御するには、アプリを更新して Android 13 をターゲットに設定します。
通知権限プロンプトを表示するまで通知の送信を控える
ユーザーに権限の付与をリクエストする前に、アプリに関する十分な説明をユーザーに提供します。
新規ユーザーは、多くの場合、アプリを操作しながら個々の通知リクエストのメリットを直接確かめようとします。アプリでは、ユーザー アクションから権限プロンプトをトリガーすることができます。通知権限プロンプトをいつ表示すればよいかについて、いくつかの例を次に示します。
- ユーザーが「警報ベル」ボタンをタップしたとき。
- ユーザーが誰かのソーシャル メディア アカウントをフォローすることを選択したとき。
- ユーザーが料理の宅配を注文したとき。
図 1 は、通知権限をリクエストする際の推奨されるワークフローを示しています。代わりに、アプリの起動時に表示されるリクエストを設定して、アプリが 3 回目か 4 回目に起動された後で初めて表示されるようにすることもできます。
コンテキストに応じて権限をリクエストする
アプリ内で通知権限をリクエストする場合は、適切なコンテキストでリクエストし、通知の用途とユーザーがオプトインした方がよい理由を明確に示します。たとえば、メールアプリには、新着メールごとに通知を送信するオプションや、そのユーザーが唯一の受信者であるメールについてのみ通知を送信するオプションが含まれていることがあります。
この機会を利用して通知の意図を明確に示すと、ユーザーがアプリに通知権限を付与する可能性が高まります。
アプリから通知を送信できるかどうかを確認する
アプリから通知を送信する前に、ユーザーがアプリの通知を有効にしているかどうかを確認します。そのためには、areNotificationsEnabled()
を呼び出します。
責任を持って権限を使用する
通知を送信する承認が得られたら、責任を持って権限を使用してください。ユーザーは、アプリが送信した 1 日あたりの通知の数を確認できます。また、いつでも権限を取り消すことができます。