通知は、アプリの UI の外で Android が表示するメッセージであり、リマインダー、他の人からのメッセージ、アプリからのタイムリーな情報などをユーザーに提供します。ユーザーは通知をタップしてアプリを開いたり、通知から直接操作したりできます。
このページでは、通知が表示される場所と利用可能な機能の概要について説明します。
実装ガイド
アプリにさまざまな通知機能を実装する方法については、次のガイドをご覧ください。
- 通知を作成する: 基本的な通知を作成して発行する方法について説明します。
- 通知権限:
POST_NOTIFICATIONS実行時の権限を処理する方法について説明します。 - 通知チャンネル: ユーザーが通知の動作を制御できるようにします。
- 展開可能な通知:
BigTextStyleやMessagingStyleなどのスタイルを使用して、より多くのコンテンツを表示します。 - バブル: 会話にフローティングの展開可能なオーバーレイを使用します。
- 進行状況中心の通知: ライドシェアや配達など、ユーザーが開始したジャーニーを追跡します。
- 通話スタイルの通知: 着信と進行中の通話を他の通知タイプと区別します。
- ライブ更新通知: 進行中のアクティビティの進捗状況を追跡します。
- ビュー固有の通知ガイド: ビューベースのアプリに通知を実装するためのガイドです。
通知のデザインと操作パターンについて詳しくは、 通知のデザイン ガイドをご覧ください。
デバイスでの表示
通知は、さまざまな場所にさまざまな形式で自動的に表示されます。 通知は、ステータスバーのアイコン、通知ドロワー内の詳細なエントリ、アプリアイコンのバッジとして表示されます。
クロスデバイスの動作
通知は、デフォルトでペア設定されたウェアラブルにも表示されます。通知コンテンツがソースデバイスにのみ関連する場合、
を使用します
setLocalOnly()。たとえば、メディアのダウンロードが完了したことを確認する通知などです。Wear OS 通知に固有のガイダンスについては、
Wear OS 通知のガイダンスをご覧ください。
ステータスバーと通知ドロワー
通知を発行すると、最初にステータスバーにアイコンとして表示されます。
図 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 に通知の一般的な要素を示します。
- 小さいアイコン: 必須。
setSmallIcon()を使用して設定します。 - アプリ名: システムによって表示されます。
- タイムスタンプ: システムによって表示されます。
setWhen()を使用してオーバーライドできます。またsetShowWhen(false)を使用して非表示にすることもできます。 - 大きいアイコン: オプション。通常は連絡先の写真の表示にのみ使用します。
アプリアイコンの表示には使用しないでください。
setLargeIcon()を使用して設定します。 - タイトル: オプション。
setContentTitle()を使用して設定します。 - テキスト: オプション。
setContentText()を使用して設定します。
システム テンプレートを使用して、すべてのデバイスで適切なデザインの互換性を確保することを強くおすすめします。必要に応じて、カスタム通知レイアウト を作成できます。
これらの機能を含む通知を作成する方法について詳しくは、通知を作成するをご覧ください。
通知の操作
必須ではありませんが、各通知をタップすると、適切なアプリのアクティビティが開くようにすることをおすすめします。このデフォルトの操作に加え、図 8 に示すように、(多くの場合、アクティビティを開かずに)通知からアプリ関連のタスクを実行する操作ボタンを追加することもできます。
図 8.操作ボタン付きの通知。
Android 7.0(API レベル 24)以降では、メッセージに返信したり、通知から直接テキストを入力したりする操作を追加することもできます。
Android 10(API レベル 29)以降では、プラットフォームで、インテント ベースのアクションの候補を使ってアクション ボタンが自動的に生成されます。
操作ボタンの追加方法について詳しくは、通知を作成するをご覧ください。
デバイスのロック解除を必須にする
デバイスのロック画面に通知の操作が表示されることがあります。通知の操作によってアプリがアクティビティを起動したり、ダイレクト返信をしたりする場合、アプリがその通知の操作を呼び出す前に、ユーザーはデバイスのロックを解除する必要があります。
Android 12(API レベル 31)以降では、アプリが操作を呼び出すには、そのワークフローに関係なくデバイスのロック解除が必要となるように、通知の操作を設定できます。このオプションを使用すると、ロックされたデバイスの通知にセキュリティ レイヤが追加されます。
デバイスをロック解除するまでアプリが通知の操作を呼び出せないようにするには、次のコード スニペットに示すように、通知の操作を作成するときに true を setAuthenticationRequired() に渡します。
val moreSecureNotification = 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.通知のクールダウンの設定。
通知のクールダウンの設定を見つける方法の例を次に示します。
val intent = Intent(Settings.ACTION_MANAGE_ADAPTIVE_NOTIFICATIONS)
val pendingIntent =
PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE)