page.title=通知
page.tags="notifications","design","L"
@jd:body
ユーザーに通知する DevBytes:Notifications in the Android L Developer Previewデベロッパー文書
Android 4.4 以前での通知
ビデオ
通知システムを使用すると、ユーザーは友人からの新しいチャット メッセージやカレンダー イベントなど、自分に関係のあるタイムリーなイベントについてアプリで常に通知を受けることができます。通知は、重要な出来事が起こるとすぐに知らせてくれるニュース チャンネルであり、ユーザーが意識していない間に出来事を時系列的に記録するログであると捉えることができます — さらに、すべての Android 端末で適宜同期されます。
Android 5.0 において、通知は構造的に、視覚的に、機能的に重要なアップデートを受信します。
注: このバージョンの Android での通知設計は、従来のバージョンから大きく変わっています。 これまでのバージョンの通知設計について詳しくは、Android 4.4 以前での通知をご覧ください。
このセクションでは、通知の基本パーツと各種端末における通知の表示について詳しく説明します。
あらゆる通知の最低限の基本レイアウトは次のようになっています。
従来のプラットフォーム バージョンの {@link android.app.Notification.Builder Notification.Builder} で作成された通知は、Android 5.0 でも同じように表示され、機能します。スタイルにいくらかの違いがありますが、システムが対処します。 従来のバージョンの Android での通知について詳しくは、Android 4.4 以前での通知をご覧ください。
ユーザー フォトと通知アイコンを使用した、携帯端末での通知(左)と Wear での同じ通知(右)
通知にどこまでの詳細を表示するかを選択できます。 メッセージの最初の数行を表示したり、大きな画像プレビューを表示したりできます。 追加情報はユーザーにより多くのコンテキストを提供し、—場合によっては—メッセージ全体が表示されることもあります。 ユーザーは、ピンチ ズームまたは 1 本指のスワイプで、コンパクトなレイアウトと展開されたレイアウトを切り替えることができます。 1 つのイベントに関する通知に対し、Android では 3 種類の展開レイアウト(テキスト、受信トレイ、画像)をアプリケーションで使用できるようにしています。 次の図に、1 つのイベントに関する通知が携帯端末(左)とウェアラブル(右)でどのように見えるかを示します。
Android では、通知の最下部に表示されるオプションのアクションをサポートしています。ここに示されるアクションを使用することで、ユーザーは特定の通知に対するほとんどの一般的なタスクを通知シェードで処理でき、通知元のアプリケーションを開く必要はありません。これによりやり取りがスピードアップし、スワイプで却下もできることから、ユーザーは自分に関係のある通知に集中しやすくなります。
通知に含めるアクションの数はほどほどに抑えることをお勧めします。 含めるアクションを増やすほど、わかりにくくなるからです。 もっとも差し迫った意味のある重要なアクションだけにして、アクションの数を最小限に抑えてください。
通知に対するアクションとして好ましい候補は次のとおりです。
次のようなアクションは避けてください。
アクションは 3 つまで指定でき、それぞれにアクションのアイコンと名前が付きます。 シンプルな基本レイアウトにアクションを追加すると、展開レイアウトがない場合でも、通知は展開可能になります。 アクションは展開可能な通知にのみ表示され、それ以外では非表示になることから、ユーザーが通知から起動できるどのアクションについても、関連アプリケーションからも利用できるようにしてください。
イマーシブ アプリの最上部に表示されたヘッドアップ通知の例(電話の着信、高優先度)
優先度の高い通知が作成されると(右図)、その展開レイアウトが可能なアクションとともに短時間表示されます。
この時間が過ぎると、通知は通知シェードに戻ります。 通知の優先度を示すフラグが高、最大、全画面の場合は、ヘッドアップ通知になります。
ヘッドアップ通知にふさわしい例
他人から送信されたアイテム(メッセージ、ステータス アップデートなど)の通知には、{@link android.app.Notification.Builder#setLargeIcon setLargeIcon()} を使用して相手の画像を含めます。 また、通知のメタデータに相手に関する情報を添付します({@link android.app.Notification#EXTRA_PEOPLE} を参照)。
通知のメインアイコンは表示され続けるため、ユーザーはそれをステータスバーに表示されるアイコンと関連付けることができます。
通知をトリガーした人と送信内容が表示された通知。
ユーザーが通知の本体(アクション ボタン以外)をタップしたら、アプリが開き、通知に表示されているデータの表示や操作ができる画面へ移動するようにします。 ほとんどの場合、移動先はメッセージのような 1 つのデータアイテムの詳細表示になりますが、通知がスタックされている場合は概要ビューにすることも考えられます。 アプリがユーザーをアプリの最上位レベルより下のどこかに移動する場合は、アプリのバックスタックにナビゲーションを挿入して、ユーザーがシステムの Back ボタンを押すと最上位レベルに戻れるようにします。 詳しくは、ナビゲーションデザイン パターンのホーム画面ウィジェットと通知を経由するアプリへのナビゲーションをご覧ください。
Android では、通知用の優先度フラグをサポートしています。このフラグを使用すると、通知の表示位置に他の通知との相対関係として影響を及ぼして、ユーザーが常に最重要の通知を真っ先に目にするようにできます。 通知を投稿する際には、優先度を次の中から選べます。
|
優先度 |
用途 |
|
|
重大で切迫した通知に対して使用します。緊急を要する状況、または特定のタスクを続ける前に解決する必要がある状況であることをユーザーに通告します。 |
|
|
主に重要な情報に対して使用します。ユーザーが特に関心を持ちそうなメッセージ イベントやチャット イベントなどが該当します。通知の優先度を高く設定すると、ヘッドアップ通知を表示できます。 |
|
|
ここで説明している他の優先度のどれにも該当しないすべての通知に対して使用します。 |
|
|
ユーザーに知らせたいがそれほど緊急ではない通知に対して使用します。 低優先度の通知は一般にリストの末尾に表示され、公の、または間接的なソーシャル アップデートなどに適しています。 ユーザーがこうした通知の設定をしていても、急を要するコミュニケーションや直接的なコミュニケーションより優先されないようにする必要があります。 |
|
|
天気予報や周辺位置情報のようなコンテキスト的またはバックグラウンド的な情報に対して使用します。最小優先度の通知はステータスバーに表示されません。 ユーザーは通知シェードを展開したときにその存在に気づきます。 |
DEFAULT、HIGH、MAX は中断を伴う優先度レベルで、ユーザーによるアクティビティに割り込むリスクがあります。
アプリのユーザーに不快に思われないようにするため、割り込みを伴う優先度レベルの通知は次のような場合に限定してください。
LOW や MIN に設定されている通知も、ユーザーにとって価値がある可能性はあります。
ほとんどとは言わないまでも、多くの通知は、ユーザーの注意を直ちに引く、またはユーザーの手首に振動を与える必要はありませんが、ユーザーがその通知を見ることにしたときに価値があると気づくような情報が含まれている必要があります。
優先度が LOW や MIN の通知の条件は以下のとおりです。
通知が、あらかじめ定義されているカテゴリ(下を参照)のどれかに該当する場合は、それに沿って割り当てます。 通知シェード(やその他の通知リスナー)などの各種システム UI は、評価やフィルタリングの判断にこの情報を使用することがあります。
|
電話(ビデオまたは音声)の着信またはそれに類する同期通信の要求 |
|
|
直接メッセージ(SMS、インスタントメッセージなど)の受信 |
|
|
非同期バルク メッセージ(メール) |
|
|
カレンダー イベント |
|
|
販促または広告 |
|
|
アラームまたはタイマー |
|
|
長時間実行のバックグラウンド処理の進捗 |
|
|
ソーシャル ネットワークまたは共有アップデート |
|
|
バックグラウンド処理または認証ステータスにおけるエラー |
|
|
再生のためのメディア転送コントロール |
|
|
システムまたは端末のステータス アップデート。システム用に予約済み。 |
|
|
バックグラウンド サービス実行中の表示。 |
|
|
1 つの事項に対する具体的でタイムリーな推奨。たとえば、ニュースアプリがユーザーが次に読みたいのではないかと予想した記事を推奨するなど。 |
|
|
端末やコンテキスト ステータスに関する進行中情報。 |
アプリで特定の新しい通知を送信しようとしたときに同じタイプの通知が既に保留されていた場合は、それらを統合してそのアプリに対する 1 つの概要通知にします。新しいオブジェクトは作成しないでください。
概要通知は概要説明を作成し、特定タイプの通知がいくつ保留になっているのかがユーザーにわかるようにします。
非推奨
推奨
概要を構成している個々の通知に関する詳細は、展開ダイジェスト レイアウトを使用して提示できます。 このアプローチにより、ユーザーはどの通知が保留中か、そして関連アプリで詳しく読もうと思うほどそれらに興味があるかを把握しやすくなります。
通知の展開された概要と折りたたまれた概要(InboxStyle を使用)
ユーザーは常に通知を制御できる必要があります。アプリケーションの設定に通知設定アイテムを追加して、ユーザーがアプリの通知を無効にしたり、警告音や振動を使用するかどうかなどのアラート設定を変更したりできるようにしてください。
現在保留になっているのがどのタイプの通知なのか、ユーザーが通知エリアを一目で見分けられることが必要です。
推奨
Android アプリが既に提供している通知アイコンを見ながら、独自アプリ用に見かけの十分異なるアイコンを作成する。
推奨
小さなアイコン用の適切な通知アイコン スタイルと、アクション アイコン用の Material Light アクションバー アイコンスタイルを使う。
推奨
アイコンの見た目はシンプルに保ち、細かくしすぎて見にくくならないようにする。
非推奨
なんらかの追加アルファ(暗転やフェード)を小さなアイコンやアクション アイコンに配置する。エッジはアンチ エイリアス処理できますが、Android ではこれらのアイコンをマークとして使用するため(つまり、アルファ チャンネルのみ使用)、画像は概して完全不透明で描画されます。
非推奨
アプリを他と色で区別する。通知アイコンは、背景が透明な白に限定してください。
多くの Android 端末には通知 LED が用意されており、スクリーンがオフのときでもユーザーに引き続きイベントを通知するために使用されます。
優先度が MAX、HIGH、DEFAULT の通知を LED 点灯するようにし、優先度の低い通知(LOW と MIN)は点灯しないようにしてください。
ユーザーによる通知の制御が LED にも及ぶようにしてください。DEFAULT_LIGHTS を使用すると、LED が白く点灯します。 ユーザーが明示的にカスタマイズしない限り、通知では別の色を使用しないでください。
ユーザーに愛されるアプリを開発するためには、通知を入念にデザインすることが重要です。通知はアプリの声を体現するものであり、アプリの個性の一部です。 望まれない通知や重要ではない通知がユーザーの邪魔になったり、アプリへの注目を集める意図が逆にユーザーに不快に思われたりしかねませんので、通知は適切に使用してください。
ユーザーが楽しんで使えるアプリケーションを開発するには、ユーザーの注目や関心は保護すべきリソースであるという認識が重要です。
Android の通知システムは、ユーザーの注意に対する通知のインパクトを最小限に抑える設計になっていますが、通知がユーザーのタスクフローに割り込むという事実を意識することがやはり重要です。通知を盛り込む予定の場合は、それが割り込みに値するほど重要かどうかを自問してください。
確信が持てない場合は、ユーザーがアプリの通知設定を使用して通知をコントロールできるようにするか、通知のフラグを LOW か MIN に設定してユーザーがしている別のことを邪魔しないようにします。
急を要する通知の例
概して、適切に振る舞うアプリは話しかけられたときだけ口を開きますが、求められていない通知でユーザーの作業に割り込むことにメリットがあるケースもいくつか存在します。
通知は主に急を要するイベントで、特に他人が絡む同期イベントで使用します。 たとえば、受信チャットはリアルタイムの同期コミュニケーションです。 他人が応答を能動的に待っています。 カレンダー イベントも、通知でユーザーの注目を引くタイミングに関する好例です。なぜなら、そうしたイベントは差し迫っており、往々にして他人が絡みます。
以上を除く多くの場合、通知の使用は適切ではありません。
通知はステータスバーにアイコンとして示され、通知ドロワーを開いてアクセスできます。
通知をタップすると関連アプリが開き、その通知に対応する詳細なコンテンツに移動します。通知上で左か右にスワイプされた通知は、ドロワーから削除されます。
音楽再生の進行中通知
進行中通知は、バックグラウンドで進行中の処理に関する情報をユーザーに伝えます。たとえば、音楽プレイヤーは通知システムで現在再生中のトラックを示し、ユーザーが再生を停止するまで通知を継続します。 進行中通知には、ファイルのダウンロードやビデオのエンコードなど、時間のかかるタスクに対するフィードバックをユーザーに示すこともできます。 ユーザーは、進行中通知を通知ドロワーから手動では削除できません。
Android 5.0 では、廃止された {@link android.media.RemoteControlClient} クラスの転送コントロールがロック画面に表示されません。 ただし、通知が表示されるため、ユーザーがロック状態から再生をコントロールするための主な手段は、現状では各アプリの再生通知です。 この動作により、アプリは表示するボタンとその表示形態についてより多くをコントロールでき、画面がロックされているかどうかによらない一貫した操作感をユーザーに提供できます。
アプリが画面上に表示されていないときにダイアログやトーストを作成しないようにしてください。 ダイアログやトーストの表示は、アプリでのアクションに対するユーザーへの即座の応答のみにします。ダイアログやトーストの使用の目安については、確認と通知をご覧ください。
通知はニュースであるため、基本的には新しい順に表示され、アプリが通知に指定した優先度に基づき特別な配慮がなされます。
通知はロック画面の重要な一部であり、端末のディスプレイがオンになるたび前面に出ます。 ロック画面のスペースは限られているため、もっとも緊急か重要な通知を識別することが何より重要になります。 この理由から、Android では洗練された通知並べ替えアルゴリズムを採用しており、その中で以下を考慮しています。
この並べ替え機能を最大限に生かすには、リストにおける特定の位置付けを狙うのではなく、ユーザーの操作感に注目します。
Gmail 通知の優先度はデフォルトであり、そのため Hangouts などのインスタントメッセージ アプリからのメッセージの下に並びますが、新しいメッセージが来たときは一時的にそれより先に表示されます。
通知はロック画面に表示されるため、ユーザーのプライバシーはとりわけ重要な考慮対象です。 通知には機密性の高い情報が含まれることが多く、端末を手に取ってディスプレイをオンにした誰にでも見られるようにすべきではありません。
ロック画面上の通知。コンテンツはユーザーが端末をロック解除した後に表示されます。
セキュリティ保護されたロック画面をセットアップする際、ユーザーはセキュリティ保護されたロック画面には表示しない機密性の高い情報を選ぶことができます。 その場合、システム UI は通知の可視性レベルを考慮して、表示しても問題ない情報を識別します。
可視性レベルをコントロールするには、Notification.Builder.setVisibility() を呼び出し、次の値のどれかを指定します。
VISIBILITY_PUBLIC。通知の内容がすべて表示されます。
可視性レベルが指定されていない場合は、これがシステム デフォルトです。VISIBILITY_PRIVATE。ロック画面に、その通知の存在に関する基本情報、たとえば通知のアイコンやそれを提示したアプリ名などを表示します。
通知のその他の詳細は表示されません。いくつか留意すべき点があります。
Notification.publicVersion フィールドに代替 Notification オブジェクトを用意します。
VISIBILITY_PRIVATE であるべきですが、publicVersion にも "3 件の新しいメッセージ" のような個人を特定する詳細なしでも利便性のある情報を盛り込めます。
Notification.VISIBILITY_SECRET。必要最小限の情報のみ表示し、通知のアイコンさえありません。
通知とそのアクションは、デフォルトで Wear 端末にブリッジされます。デベロッパーは、どの通知が電話から腕時計へ、またはその逆へブリッジするかを制御できます。 また、どのアクションがブリッジするかも制御できます。タップ 1 回では完了しないアクションがアプリに含まれている場合は、そうしたアクションを Wear 通知では隠すか Wear アプリに接続することを検討してください。いずれにしても、ユーザーがアクションを腕時計で完了できるようにします。
電話のような接続状態の端末は、通知を Wear 端末にブリッジして、通知が腕時計に表示されるようにできます。 同様に、アクションもブリッジして、ユーザーが通知に Wear 端末で直接対処できるようにできます。
ブリッジする
ブリッジしない
Wear でのみできるアクションがいくつかあります。次に例を挙げます。