通知は、アプリが使用されていないときに、アプリに関連する簡潔でタイムリーな情報を表示します。
Android OS は通知の多くの側面を制御しますが、他の側面は制御できます。通知を実装する際は、次の手順に沿って操作します。
- 通知の構造を理解する。
- ユースケースの通知タイプを選択します。
- 選択した通知の種類に沿って通知カテゴリを設定します。
まとめ
- 通知の目的を検討します。ユーザーにアラートを送信する理由は何ですか?
- 通知の権限パターンを決定し、通知がアプリにとってどれほど重要か、ユーザー ジャーニーのどこで権限をリクエストするかを検討します。
- 通知テンプレートを選択します。
- 通知コンテンツを作成します。
- 見出しのテキストは、通知を簡潔に要約する必要があります。
- コンテンツ テキストで通知をプレビューする必要があります。
- アプリのコンテンツに該当する場合は、画像コンテンツ。
- メディア テンプレートのメディア キーアートとメタデータ。
- テキスト ボタン、入力、メディア コントロールのいずれかを使用して、コンテンツに基づくアクションを提供することで、ユーザーが通知で何ができるかを明確にします。
- アプリアイコンを含め、アプリアイコンの背景色を設定します。
- 通知のチャンネルとカテゴリを設定します。これにより、システムとユーザーは受け取る通知をカスタマイズでき、優先度を設定できます。
- アプリで複数の通知を同時に配信する可能性がある場合は、通知をグループ化します。
- 通知テンプレートについては、Figma の Android UI キットをご覧ください。
通知の構造
通知は、通知の最も重要な要素を簡単にスキャンして使用できるように設計されています。次の要素があります。
- メイン コンテンツ: 通知の最も目立つ要素を構成します。タイムスタンプなどの補足情報は小さく、メイン コンテンツの上にまとめられています。
- 人物: 通知に人物が含まれている場合、アバターが他のコンテンツよりも目立つように表示されます。
- アクション: ユーザーはインジケーター アイコンをタップして通知を展開できます。アクションは、別の背景色と場所でテキストラベルとともに表示されます。
通知のヘッダーとコンテンツ
折りたたまれた通知には、アプリのアイコン、ヘッダー テキスト、タイムスタンプ、展開インジケータ、コンテンツ テキストが表示されます。大きなアイコンをオプションで表示することもできます。
1 アプリアイコン: アプリアイコンは、アプリのアイデンティティを 2 次元で表現したものです。ステータスバーにはモノクロで表示されます。アプリがさまざまな通知を送信する場合は、アプリのアイコンをシンボルに置き換えて、通知の種類を区別することを検討してください。詳しくは、アイコンの色を適用するをご覧ください。
2 ヘッダー テキスト: 通知やソースの簡単な見出し(ユーザーのアカウント名など)。コンテンツは通知の最も重要な要素です。
3 タイムスタンプ: 通知が送信された日時(不在着信の時刻など)を示します。
4 展開インジケーター: 通知が折りたたまれた状態か展開された状態かを示します。
5 コンテンツのテキスト: サポート情報。
6 大きなアイコン(省略可): 送信者のアバターを含むメッセージなど、通知を意味のある方法で補強するために画像を追加できます。
アイコンの色を適用する
Android 12(API レベル 31)以降では、アプリで設定した通知の色からアイコンの色が導出されます。アプリで色が設定されていない場合は、システム テーマの色が使用されます。以前はグレーでした。
ほとんどのスタイルでは、通知がフォアグラウンド サービス通知の場合にのみ、この色が適用されます。ただし、メディア セッションがアタッチされている MediaStyle 通知と DecoratedMediaCustomViewStyle 通知には、そのような要件はありません。
次のスニペットは、アイコンの色を適用する方法を示しています。
val notification = Notification.Builder()
.setColor(Color.GREEN)
.setColorized(true)
.setSmallIcon(R.drawable.app_icon)
.setStyle(Notification.DecoratedCustomViewStyle())
.build()
通知の操作
1 テキスト ボタンのアクション
2 塗りつぶしアクション ボタン
3 返信文の候補
4 返信テキスト フィールド
Android 7.0(API レベル 24)以降では、より多くのテキストを表示できるように、アイコンなしのアクションが表示されます。Android Wear デバイスと Android 6.0(API レベル 23)以下を搭載するデバイスに対応するため、アプリは引き続きアイコンを提供する必要があります。
展開表示
展開ビューを使用すると、通知から移動することなく、ユーザーに詳細情報を表示できます。
展開された通知では、次のいずれかの種類のアクションを最大 3 つ提供できます。
- 返信文の候補
- 強調されたアクション(ピル型のボタン)
- 標準のテキスト操作
すべきでないこと
すべきこと
通知での入力を有効にする
返信アクションを含めることで、ユーザーが通知に直接入力できるようにします。これは、テキスト メッセージへの返信や簡単なメモの作成など、少量のテキストを入力するために設計されています。
長文の入力の場合は、ユーザーをアプリに移動させ、テキストの表示と編集のためのスペースを増やします。
メッセージ アプリの場合は、ユーザーが返信を送信した後も通知を表示し、会話が一時停止するまで待ってから自動的に通知を閉じることをおすすめします。
ユースケースに応じて通知タイプを選択する
Google は、Android アプリで次の通知テンプレートを使用しています。これらのテンプレートは、アプリに合わせてある程度カスタマイズできます。
通知テンプレートについては、Figma の Android UI Kit をご覧ください。
標準テンプレート
標準テンプレートは、簡潔なテキスト、大きなアイコン(該当する場合)、アクションを許可しており、ほとんどの通知に適しています。
拡張テキスト テンプレート
拡張テキスト テンプレートは、長いテキストのブロックを表示するのに最適です。ユーザーは通知を展開して、より多くのテキストをプレビューできます。
全体像のテンプレート
拡張画像テンプレートは、画像を含む通知用に設計されています。折りたたまれているときは、通知に写真の大きなアイコンのサムネイルが表示されます。展開すると、通知のプレビューが大きく表示されます。
進捗状況テンプレート
進行状況テンプレートは、完了に時間がかかるユーザー開始アクティビティ用に設計されています。このテンプレートを使用する通知は、展開するとプログレス バーが表示され、ユーザーがこのアクティビティを終了できる [キャンセル] アクションも含まれます。(キャンセルできないアクティビティは通知の対象外です)。
メディア テンプレート
メディア テンプレートは、ユーザーがアプリで現在再生中のメディアをコントロールできるように設計されています。
- 折りたたまれた通知には、最大 3 つのアクションを表示できます。大きなアイコンには、アルバムのジャケットなどの関連画像を表示できます。
- 展開すると、通知には最大 5 つのアクションと大きな画像、または 6 つのアクションと画像なしが表示されます。通知の背景などの要素は、画像の色を自動的に継承します。
メッセージ テンプレート
MessagingStyle テンプレートは、リアルタイムのコミュニケーション用に設計されています。このテンプレートを使用した通知は、展開すると、通知内からメッセージに返信できるようになります。
通話テンプレート
CallStyle テンプレートを使用して、大きな画像添付ファイルを含み、着信または発信を示す大判通知を生成します。
通知権限
通知は関連性が高く、タイムリーなものですが、ほとんどの通知は除外対象外です。つまり、ユーザーがアプリからの通知の受信に同意する必要があります。
ただし、Android 13(API レベル 33)以降では、メディア セッションと電話を管理するアプリは、ユーザーの同意を求める必要がなくなります。ユーザーがすでに通知をオンにしている場合、既存のアプリも対象となることがあります。詳しくは、免除をご覧ください。
アプリの設定で通知オプションを提供し、ユーザーが通知の設定を更新できるようにすることを強くおすすめします。
ユーザーに除外されない通知のオプトインを求める
除外対象外の通知については、通知の受信をオプトインするかどうかをユーザーに確認します。通知の受信を明示的に選択したユーザーは、通知をより有用で煩わしくないと感じる可能性が高くなります。
通知ダイアログ プロンプトを表示するまで待機します。
- 通知のメリットと、通知の権限を付与しない場合の結果について説明します。
- 通知をその機能や影響を受けるものに関連付けるコンテキスト UI を提供します。この UI は、アプリに最適に統合するために、さまざまな形式で表示できます。たとえば、料金内のカード、ボトムシート、オンボーディング画面などです。これらのいずれも閉じることができるようにする必要があります。
- ユーザーが UI を閉じた場合は、通知権限ダイアログを表示しないでください。
Android 13 以降では、ユーザーに通知権限の再確認を求めることができます。
必須の通知
フォアグラウンド サービスは、ユーザーがアプリを直接操作していないときに、ユーザーが認識できる方法で処理を実行します。ステータスバーに通知を表示することにより、アプリがフォアグラウンドでタスクを実行していること、それに伴いシステム リソースが消費されていることにユーザーが気付けるようにします。
これらのプロセスはバッテリーとデータを使用する可能性があるため、アプリはユーザーが閉じることができない通知を表示して、ユーザーにこれらのプロセスを認識させる必要があります。ユーザーが通知を閉じることはできないため、ユーザーがサービスを停止するためのアクションを提供する必要があります。
次の例は、フィットネス アプリからの通知を示しています。ユーザーがアクティブなワークアウト セッションを開始したため、ワークアウト セッションをトラッキングするフォアグラウンド サービスがインスタンス化されています。アプリに、ウォーキングをトラッキングしていることを示す通知が表示され、ワークアウトを確認するオプションが表示されます。
通知を使用すべきでない場合
次のユースケースでは通知を使用しないでください。
- 相互プロモーションや別の製品の宣伝(これは Google Play ストアで固く禁止されている)
- ユーザーがアプリを一度も開いたことがない場合
- ユーザーとの主なコミュニケーション手段として
- ユーザーにアプリに戻るよう促すものの、直接的な価値を提供しない(例: 「お久しぶりです!」)
- アプリの評価を求めるリクエストの場合
- 情報の同期など、ユーザーの操作を必要としないオペレーションの場合
- ユーザーの操作なしでアプリが復元できるエラー状態を通知する
- 祝日や誕生日のメッセージの場合
すべきでないこと
すべきでないこと
動作
次の通知の動作と、特定のコンテキストでの処理方法について説明します。
通知の到着
通知が届くと、Android は通知ドロワーに通知を追加します。設定したパラメータとデバイスの現在の状態に応じて、通知は次のいずれかの処理を行います。
- 音を鳴らしたり、スマートフォンのバイブレーションをオンにしたりします。
- ステータス バーにアイコンとともに表示します。通常はアプリのアイコンですが、複数の種類の通知がある場合は、通知の目的を表す記号を使用します。
- ヘッドアップ通知として表示し、現在の画面にちらっと表示してユーザーの注意を引きます。
ユーザーは、設定した通知の動作をいつでも変更できます。
1 ステータスバーの通知インジケーター。通知ドロワーに通知があることを示します。
2 タスクの途中でユーザーの注意を引くために、現在の画面に通知が「覗き見」します。
通知ドロワー
Android の通知ドロワーには通常、通知が逆時系列順に表示されます。ただし、次の条件によって調整されることがあります。
- アプリが指定した通知の優先度または重要度
- 通知が最近音またはバイブレーションでユーザーにアラートを送信したかどうか
- 誰かが通知に関連付けられているかどうか、その人の連絡先がスター付きかどうか
- 通知が、進行中の通話や音楽の再生など、重要なアクティビティを表しているかどうか
- Android OS によるリストの上部と下部にある一部の通知の外観の変更(強調または非強調の追加)。これにより、ユーザーはコンテンツをスキャンしやすくなります。
古い通知を処理する
通知ドロワーは、ユーザーに現在の状況に関連する情報を表示するように設計されています。以前の通知が古い(関連性がなくなった)場合は、ユーザーに表示されないように閉じます。
アプリアイコンのバッジで新しい通知を確認する
Android 8.0(API レベル 26)以降を搭載するデバイスでサポートされているランチャーでは、アプリアイコンに通知ドットが表示され、アプリに関連付けられた新しい通知があることが示されます。これらのドットは、サポートしているランチャー アプリでデフォルトで表示されるので、そのアプリで必要な操作はありません。バッジは無効にしたり、制限したりすることもできます。
ユーザーが通知で実行できるアクション
通知により、ユーザーは次の操作を行うことができます。
目的地に移動する: ユーザーは通知をタップして移動できます。ロック画面に通知が表示された場合は、通知をダブルタップしてから PIN、パターン、パスワードのいずれかを入力する必要があります。
ユーザーが通知をタップすると、アプリは、その通知に直接関連し、ユーザーがすぐにアクションを実行できる UI を表示する必要があります。たとえば、2 人用ゲームで自分の番になったことを知らせる通知をタップすると、そのゲームに直接移動します。
通知の展開ビューを表示します。ヘッダーに展開インジケーターが表示されます。ユーザーは、インジケーターをタップするか、通知本文を下にスワイプして通知を展開できます。
図 18: 拡張通知 通知を閉じる(許可されている場合): 左右どちらかにスワイプして閉じることができます。
音楽の再生など、バックグラウンドで継続中のプロセスを示す継続的な通知は、スワイプで閉じることができない場合があります。
ヘッドアップ通知をスヌーズする: ユーザーがヘッドアップ通知を上にスワイプすると、そのイベントからの通知は 1 分間パルス表示されなくなります。
今後同様の通知を制御する: ユーザーは次の方法で通知コントロールにアクセスできます。
- 個々の通知を長押しする
- 通知を左右にスワイプして、設定アイコンをタップする
表示されるコントロールは、Android のバージョンと、アプリの通知にチャンネルがあるかどうか(Android 8.0 以降)によって異なります。
複数の通知をグループ化する
同じ種類の通知を複数生成するアプリの場合、Android では通知のグループ化により、ユーザーが通知に圧倒されないようにしています。
アプリは、次の階層に従って複数の通知を表示できます。
- 親通知には、子通知の概要が表示されます。
- ユーザーが親通知を開くと、Android はすべての子通知を表示します。
- ユーザーは子通知を展開して、コンテンツ全体を表示できます。
Android は、重複するヘッダー情報なしで子通知を表示します。たとえば、子通知のアプリアイコンが親と同じ場合、子のヘッダーにはアイコンが含まれません。
子通知は、単独で表示されても理解できるものでなければなりません。システムは、子通知が届いたときにグループの外に表示することがあります。
設定
チャンネル
Android 8.0(API レベル 26)以降、通知はすべてチャネルに割り当てる必要があります。チャネルごとに、そのチャネルのすべての通知に適用される表示と音声の動作を設定することができます。ユーザーはこうした設定を変更し、アプリのどの通知チャネルを実際に表示するか、または不要とするかを決めることができます。
実装方法について詳しくは、通知チャンネルを作成して管理するをご覧ください。
重要度は、ユーザーの時間と注意を考慮して選択する必要があります。重要でない通知が緊急であるかのように装われていると、不必要なアラームが発生する可能性があります。
| 重要度 | 動作 | 使用方法 | 例 |
|---|---|---|---|
HIGH |
音を鳴らし、画面に表示 | ユーザーがすぐに知るか、行動する必要がある、時間的に重要な情報 | テキスト メッセージ、アラーム、通話 |
DEFAULT |
音を鳴らす | ユーザーが都合のよいときに確認できるが、ユーザーの作業を中断しない情報 | 交通情報、タスクに関するリマインダー |
LOW |
音声なし | 他の重要度レベルの要件を満たしていない通知チャネル | ユーザーが登録した新しいコンテンツ、ソーシャル ネットワークの招待 |
MIN |
音声や画面表示を使用しない | 待つことができる、またはユーザーに特に関連しない重要でない情報 | 付近の注目スポット、天気、プロモーション用コンテンツ |
事前定義済みカテゴリ
チャンネルを使用するかどうかにかかわらず、各通知を最も適切な事前定義カテゴリに割り当てます。Android は、この情報をランキングとフィルタリングの決定に使用する場合があります。
| カテゴリ | 説明 |
|---|---|
CATEGORY_CALL |
通話の着信(音声またはビデオ)、あるいはそれに類する同期的な通信リクエスト |
CATEGORY_MESSAGE |
直接メッセージの受信(SMS、インスタント メッセージなど) |
CATEGORY_EMAIL |
非同期的なメッセージ(メール) |
CATEGORY_EVENT |
カレンダーの予定 |
CATEGORY_PROMO |
プロモーションや広告 |
CATEGORY_ALARM |
アラームやタイマー |
CATEGORY_PROGRESS |
長時間実行されているバックグラウンド処理の進行状況 |
CATEGORY_SOCIAL |
ソーシャル ネットワークや共有の更新 |
CATEGORY_ERROR |
バックグラウンド処理のエラーや認証ステータス |
CATEGORY_TRANSPORT |
再生のメディア トランスポート コントロール |
CATEGORY_SYSTEM |
システムやデバイスのステータス更新(システム使用のため予約済み) |
CATEGORY_SERVICE |
バックグラウンド サービスが実行中であることを示す通知 |
CATEGORY_RECOMMENDATION |
具体的なおすすめをタイミングよく知らせる通知(例: ニュースアプリで、ユーザーが次に読みたいと思うような記事をすすめる) |
CATEGORY_STATUS |
デバイスや文脈的なステータスに関する進行中の情報 |
ロック画面の通知
画面がロックされているときに通知を表示するようユーザーが選択している場合、アプリがプライベートなコンテンツとしてマークしたコンテンツは、これらの通知によって隠されます。Android は、各通知の可視性レベルを評価して、安全に表示できる内容を判断します。
ロック画面のコンテンツの感度レベルを設定する
ユーザーのプライバシーは非常に重要です。ロック画面に表示できる通知にはさまざまなレベルがあることに注意してください。作成する通知ごとに、公開設定を public、private、または secret に設定する必要があります。
- 公開通知は、セキュリティで保護されたロック画面に完全に表示されます。
- シークレット通知は非表示になります。
- 非公開通知は中間です。投稿したアプリの名前やアイコンなどの基本情報のみが表示されます。非表示になっている通常のコンテンツの代わりに、
2 new messagesなどの個人情報が明らかにならないテキストを表示することもできます。
次の例では、ユーザーがロック画面にこの情報を表示することを選択した後、Gmail アプリとフォトアプリのロック画面の通知にすべてのコンテンツが表示されています。
1 ロック画面にすべての通知内容が表示される
2 ロック画面でプライベートな通知内容が非表示になっている
スタイル
明確で簡潔なテキスト
Android では、コンテンツのタイトルは 1 行に切り捨てられます(展開されている場合でも)。
適切なコンテンツ タイトルは、次のガイドラインに沿っています。
- 30 文字を超えない
- 最も重要な情報が含まれている
- 変数を使用しない(ただし、数値や短いテキスト文字列を含む場合、またはテキストが前に付いている場合を除く)
- アプリ名はヘッダーにすでに表示されているため、除外されます
すべきでないこと
すべきこと
優れたコンテンツ テキストは、次のガイドラインに沿っています。
- 40 文字の制限を超えないようにする
- コンテンツのタイトルと同じ内容の繰り返しを避ける
大きなアイコン
画像が通知の内容を効果的に補強するユースケースでは、大きなアイコンを使用します。以下にいくつか例を示します。
- 他のユーザーからのコミュニケーション(メッセージを送信しているユーザーの画像など)
- 通知を送信するアプリとは異なるコンテンツのソース(ユーザーが登録している YouTube チャンネルのロゴなど)
- 通知に関する意味のある記号(運転ルートの矢印記号など)
人物を表示する場合は、大きいアイコンは円形にする必要がありますが、それ以外の場合は正方形にする必要があります。
すべきでないこと
すべきこと
Android バージョン アップデート
Android の通知システムの UI と通知関連の API は進化を続けています。これらの変更の一覧については、通知の互換性をご覧ください。
プラットフォームに関する考慮事項
Wear
ペア設定された Wear OS デバイスがある場合、展開可能な詳細情報や操作ボタンを含め、すべての通知がそのデバイスに自動的に表示されます。詳しくは、Wear の通知のデザイン ページをご覧ください。