通知について

通知は、アプリの UI の外で Android が表示するメッセージであり、リマインダー、他の人からのメッセージ、アプリからのタイムリーな情報などをユーザーに提供します。ユーザーは通知をタップしてアプリを開いたり、通知から直接操作したりできます。

このページでは、通知が表示される場所と利用できる機能について概説します。通知の作成方法については、通知を作成するをご覧ください。

通知のデザインと操作パターンについて詳しくは、通知のデザインガイドをご覧ください。

デバイスでの表示

通知は、さまざまな場所にさまざまな形式で自動的に表示されます。通知は、ステータスバーのアイコン、通知ドロワー内の詳細なエントリ、アプリアイコンのバッジとして表示されます。通知は、ペア設定されたウェアラブル デバイスにも表示されます。

ステータスバーと通知ドロワー

通知を発行すると、最初にステータスバーにアイコンとして表示されます。

図 1. ステータスバーの左側に通知アイコンが表示されます。

通知ドロワーを開くには、ステータスバーを下にスワイプします。通知ドロワーでは、詳細を確認したり、通知から操作を行ったりできます。

図 2. 通知ドロワー内の通知。

ドロワー内で通知を下にドラッグすると、ビューを展開できます。展開されたビューにはコンテンツがさらに表示され、操作ボタンも表示されます(存在する場合)。Android 13 以降、この展開されたビューには、ユーザーがフォアグラウンド サービスが進行中のアプリを停止できるボタンがあります。

通知は、アプリまたはユーザーによって破棄されるまで通知ドロワー内に表示され続けます。

ヘッドアップ通知

Android 5.0 以降では、ヘッドアップ通知と呼ばれるフローティング ウィンドウ内の短い通知を表示できるようになりました。この動作は通常、ユーザーがすぐに知る必要がある重要な通知に適しており、デバイスがロック解除されている場合にのみ表示されます。

図 3. ヘッドアップ通知はフォアグラウンド アプリの前面に表示されます。

ヘッドアップ通知は、アプリが通知を発行すると表示されます。しばらくすると消えますが、通知ドロワーには通常どおり表示されたままになります。

ヘッドアップ通知をトリガーする可能性がある条件には、以下のようなものがあります。

  • ユーザーのアクティビティが全画面モードになっている(アプリが fullScreenIntent を使用している場合など)。

  • 通知の優先度が高く、通知に着信音またはバイブレーションが使用されている(Android 7.1(API レベル 25)以前が実行されているデバイス)。

  • 通知チャンネルの重要度が高い(Android 8.0(API レベル 26)以降が実行されているデバイス)。

ロック画面

Android 5.0 以降では、通知をロック画面に表示できます。

アプリから送信された通知をセキュリティで保護されたロック画面に表示するかどうか、また表示する場合の詳細レベルをプログラムで設定できます。

ユーザーはシステム設定を使用して、ロック画面に通知を表示する場合の詳細レベルを選択したり、ロック画面の通知をすべて無効にしたりできます。Android 8.0 以降では、通知チャンネルごとにロック画面の通知を無効または有効にすることができます。

図 4. ロック画面上の通知(プライベートな内容は非表示に設定)。

詳しくは、ロック画面の表示を設定する方法をご覧ください。

アプリアイコンのバッジ

Android 8.0(API レベル 26)以降を搭載するデバイスでサポートされているランチャーでは、アプリアイコンの色付きのバッジ(「通知ドット」とも呼ばれます)によって新しい通知が示されます。

アプリアイコンを長押しすると、そのアプリに関する通知が表示されます。通知のメニューで、通知ドロワーと同様に、通知の破棄や通知に対する操作を行えます。

図 5. 通知バッジと長押しメニュー。

バッジの仕組みについて詳しくは、通知バッジを変更するをご覧ください。

Wear OS デバイス

ペア設定された Wear OS デバイスがある場合、展開可能な詳細情報や操作ボタンを含め、すべての通知がそのデバイスに自動的に表示されます。

ウェアラブルでの通知の表示をカスタマイズすることによってエクスペリエンスを強化できるほか、定型返信文や音声入力による返信などの各種操作を行うこともできます。詳しくは、ウェアラブル固有の機能を通知に追加する方法をご覧ください。

図 6. ペア設定された Wear OS デバイスには通知が自動的に表示されます。

通知の構造

通知のデザインはシステム テンプレートによって決まります。アプリではテンプレートの各部分の内容を定義します。通知の詳細情報は、ビューを拡大した場合にのみ表示されます。

図 7. 基本情報で構成された通知。

図 7 に通知の一般的な要素を示します。

  1. 小さいアイコン: 必須。setSmallIcon() を使用して設定します。
  2. アプリ名: システムによって表示されます。
  3. タイムスタンプ: システムによって表示されます。setWhen() で上書きできます。また setShowWhen(false) で非表示にすることもできます。
  4. 大きいアイコン: 省略可。通常は連絡先の写真にのみ使用します。アプリアイコンには使用しないでください。setLargeIcon() を使用して設定します。
  5. タイトル: 省略可。setContentTitle() を使用して設定します。
  6. テキスト: 省略可。setContentText() を使用して設定します。

すべてのデバイスで適切なデザインの互換性を確保するため、システム テンプレートを使用することを強くおすすめします。必要に応じて、カスタム通知レイアウトを作成できます。

これらの機能などを使用して通知を作成する方法について詳しくは、通知を作成するをご覧ください。

通知の操作

必須ではありませんが、各通知をタップすると、適切なアプリのアクティビティが開くようにすることをおすすめします。このデフォルトの通知アクションに加え、図 8 に示すように、(多くの場合、アクティビティを開かずに)通知からアプリ関連のタスクを実行するアクション ボタンを追加することもできます。

図 8. 操作ボタン付きの通知。

Android 7.0(API レベル 24)以降では、メッセージに返信したり、通知から直接テキストを入力したりする操作を追加することもできます。

Android 10(API レベル 29)以降では、プラットフォームで、インテント ベースのアクションの候補を使ってアクション ボタンが自動的に生成されます。

操作ボタンの追加方法について詳しくは、通知を作成するをご覧ください。

デバイスのロック解除を必須にする

デバイスのロック画面に通知の操作が表示されることがあります。通知の操作によってアプリがアクティビティを起動したり、ダイレクト返信をしたりする場合、アプリがその通知の操作を呼び出す前に、ユーザーはデバイスのロックを解除する必要があります。

Android 12(API レベル 31)以降では、アプリが操作を呼び出すには、そのワークフローに関係なくデバイスのロック解除が必要となるように、通知の操作を設定できます。このオプションにより、ロックされたデバイスにおける通知のセキュリティが強化されます。

デバイスをロック解除するまでアプリが通知の操作を呼び出せないようにするには、次のコード スニペットに示すように、通知の操作を作成するときに truesetAuthenticationRequired() に渡します。

Kotlin

val moreSecureNotification = Notification.Action.Builder(...)

    // This notification always requests authentication when invoked
    // from a lock screen.
    .setAuthenticationRequired(true)
    .build()

Java

Notification moreSecureNotification = new Notification.Action.Builder(...)

    // This notification always requests authentication when invoked
    // from a lock screen.
    .setAuthenticationRequired(true)
    .build();

展開可能な通知

デフォルトでは、通知のテキスト コンテンツは 1 行に収まるように切り詰められます。通知に表示するテキストを増やしたい場合は、追加のテンプレートを適用することにより、展開可能なテキスト領域を拡大できます(図 9)。

図 9. 展開可能な通知では、表示するテキストを増やすことができる。

展開可能な通知では、画像を含めたり、受信トレイのスタイルにしたり、チャットのスレッドやメディア再生コントロールを表示したりすることもできます。詳しくは、展開可能な通知を作成するをご覧ください。

通知の更新とグループ

追加情報がある場合に多数の通知や重複する通知がユーザーに送られないようにするために、新しい通知を発行する代わりに、既存の通知を更新するか、受信トレイのスタイルの通知を使用して、スレッドの最新情報を表示します。

ただし、複数の通知を提供する必要がある場合は、個別の通知をグループ化することを検討してください(グループ化機能は Android 7.0 以降で利用できます)。

通知をグループ化することで、複数の通知を通知ドロワー内で 1 つにまとめて折りたたむことができます。図 10 に示すように、ユーザーは通知グループを徐々に展開して、グループ内の各通知の詳細を確認できます。

図 10. 通知グループの折りたたみバージョンと展開バージョン。

通知をグループに追加する方法については、通知グループを作成するをご覧ください。

通知チャンネル

Android 8.0(API レベル 26)以降では、すべての通知をチャンネルに割り当てる必要があります。そうしないと通知が表示されません。これにより、ユーザーはアプリの通知をすべて無効にする代わりに、特定の通知チャンネルを無効にできます。図 11 に示すように、ユーザーは Android のシステム設定から各チャンネルの表示と音のオプションを設定できます。また、通知を長押しすると、関連付けられているチャンネルの動作を変更できます。

Android 7.1(API レベル 25)以前が実行されているデバイスでは、通知の管理はアプリ単位でのみ行うことができます。Android 7.1 以前では、実質的に各アプリで使用できるチャンネルは 1 つだけです。

図 11. 時計アプリの通知設定とそのチャンネルの 1 つ。

アプリは、アプリが発行する通知のタイプごとに異なるチャンネルを持つことができます。また、ユーザーの選択に応じて通知チャンネルを作成することもできます。たとえば、メッセージ アプリでユーザーが作成した会話グループごとに異なる通知チャンネルを設定できます。

Android 8.0 以降では、通知の重要度もチャンネルで指定します。そのため、同じ通知チャンネルに送信された通知はすべて同じ動作になります。これについては、次のセクションで説明します。

詳細については、通知チャンネルを作成して管理するをご覧ください。

通知の重要度

Android では通知の重要度を基に、通知の表示と音を決定します。通知の重要度が高いほど、通知の表示と音が目立つようになります。

Android 7.1(API レベル 25)以前では、通知の重要度は通知の priority によって決まります。

Android 8.0(API レベル 26)以降では、通知が送信されたチャンネルの importance によって通知の重要度が決まります。通知チャンネルの重要度はシステム設定で変更できます(図 12 を参照)。

図 12. Android 8.0 以降では、ユーザーが各チャンネルの重要度を変更できます。

重要度の選択肢と関連する通知の動作は次のとおりです。

  • 緊急: 音が鳴り、ヘッドアップ通知として表示されます。

  • 高: 音が鳴ります。

  • 中: 音が鳴りません。

  • 低: 音が鳴らず、ステータスバーにも表示されません。

すべての通知は、重要度に関係なく、システム UI の邪魔にならない場所(通知ドロワー内など)に表示されます。また、ランチャー アイコンにバッジとして表示されます。ただし、通知バッジの外観を変更することはできます。

詳しくは、重要度を設定する方法をご覧ください。

サイレント モード

Android 5.0(API レベル 21)以降では、サイレント モード(すべての通知の音とバイブレーションがオフになります)を有効にすることができます。ユーザーが特に指定しない限り、システム UI には通常どおり通知が表示されます。

サイレント モードでは以下の 3 つのレベルを指定できます。

  • サイレント: すべての音とバイブレーション(アラーム、音楽、動画、ゲームなど)をブロックします。
  • アラームのみ: アラームを除くすべての音とバイブレーションをブロックします。
  • 優先する通知のみ: システム全体で表示を許可するカテゴリを設定できます(アラーム、リマインダー、イベント、通話、メッセージのみなど)。メッセージと通話については、図 13 に示すように、送信者または発信者に基づいてフィルタを適用できます。

図 13. ユーザーは、システム全体のカテゴリ(左)と、送信者または発信者(右)に基づいて通知を許可できる

さらに、Android 8.0(API レベル 26)以降では、サイレント モードをチャンネル(アプリ固有のカテゴリ)単位でオーバーライドすることにより、チャンネルごとに通知を許可できます。たとえば、入出金に関連する通知チャンネルがある決済アプリの場合、ユーザーは出金通知、入金通知、またはその両方を許可できるようになります(優先モードの場合)。

Android 7.1(API レベル 25)以前が実行されているデバイスでは、チャンネル単位ではなくアプリ単位で通知を許可できます。

これらのユーザー設定に関する通知を設定するには、システム全体のカテゴリを設定する必要があります。

フォアグラウンド サービスの通知

「フォアグラウンド サービス」(メディア プレーヤーのように長時間バックグラウンドで実行され、ユーザーが認識できる Service)をアプリで実行している場合は通知が必要です。この通知は他の通知のように破棄することはできません。通知を削除するには、サービスを停止するか、フォアグラウンド状態を解除する必要があります。

詳しくは、フォアグラウンド サービスをご覧ください。メディア プレーヤーを作成する場合は、バックグラウンドでのメディアの再生もご覧ください。

通知の動作

クールダウン

Android 16.0(API レベル 36)

通知がアプリに代わって自動的にグループ化されるようになりました。

次の通知は自動的にグループ化されます。

  • 要約のない通知
  • 子通知のない通知
  • 子通知が 1 つまたは少ない通知

Android 15.0(API レベル 35)

Android 15 では、通知のクールダウン機能が導入されています。この機能は、連続して届く通知のエクスペリエンスを向上させることを目的としています。この機能は、最大 2 分間、繰り返し表示される通知の外観、音量、バイブレーションの強さを軽減します。

注意を引くために音声と触覚が必要な重要な通知は、クールダウンの対象外です。ユーザーは [設定] で通知のクールダウンをオフにできます。

図 9. 通知のクールダウン設定。

通知のクールダウン設定を見つける方法の例を次に示します。

Kotlin

val intent = Intent(Settings.ACTION_MANAGE_ADAPTIVE_NOTIFICATIONS)
val pendingIntent =
            PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE)

Java

Intent intent = new Intent(Settings.ACTION_MANAGE_ADAPTIVE_NOTIFICATIONS)
PendingIntent pendingIntent =
            PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE)