ライブ更新通知を作成する

システムは、ライブ更新通知を促進します。優先通知は、通知ドロワーの上部やロック画面など、システム サーフェスに目立つように表示されます。また、ステータスバーにチップとして表示されます。

図 1. ライブ更新通知の例。

プロモーション通知カードの外観には次の特徴があります。

  • デフォルトで展開済み
  • 折りたたみ不可

通知がライブ更新として適格となるには、次の要件を満たしている必要があります。

  • 標準/スタイルなし、BigTextStyleCallStyleProgressStyle のいずれかにする必要があります。
  • Android マニフェスト android.permission.POST_PROMOTED_NOTIFICATIONS で、次のランタイム以外の権限をリクエストする必要があります。
  • EXTRA_REQUEST_PROMOTED_ONGOING または NotificationCompat.Builder#requestPromotedOngoing を使用してプロモーションをリクエストする必要があります。
  • ongoing にする必要があります(FLAG_ONGOING_EVENT を設定)。
  • contentTitle を設定する必要があります。
  • customContentView は設定しないでください(RemoteViews は設定しないでください)。
  • setGroupSummary を使用するグループの概要ではない
  • 通知チャンネルに IMPORTANCE_MIN含まれていない必要があります。

プロモーションの特性

次の API は、システムが通知を昇格させるかどうかを判断するのに役立ちます。

  • Notification.FLAG_PROMOTED_ONGOING は、通知が昇格されているかどうかを示します。
  • Notification.hasPromotableCharacteristics() は、システムが通知を昇格できるかどうかを検証します。この方法では、ユーザーが設定でアプリのライブ更新を無効にしているかどうかは考慮されません。
  • NotificationManager.canPostPromotedNotifications() は、ユーザーが設定でプロモート通知を有効または無効にしているかどうかなど、アプリがプロモート通知を送信できるかどうかを確認します。
  • Settings.ACTION_MANAGE_APP_PROMOTED_NOTIFICATIONS は、アプリがユーザーを設定に送信してこの機能を有効にできるようにするインテント アクションです。

使用条件

進行中、ユーザーが開始した、時間に敏感なアクティビティには、ライブ アップデートを使用します。

実行中

ライブ更新は、明確な開始と終了時間を持つ、現在進行中のアクティビティを表す必要があります。アクティビティが過去に発生した場合は、ライブ更新を使用しないでください。代わりに、標準の通知を使用してください。これは、まだ開始されていないイベントにも当てはまります。ただし、開始間近のイベントにはライブ更新を使用できます。

ライブ更新は進行中のアクティビティを表します。ライブ アップデートを使用して、アプリの機能へのアクセスを高速化しないでください。これを実現するには、アプリ ウィジェットまたはカスタム クイック設定タイルを使用します。

  • 適切な用途: ナビゲーションの使用中、通話中の通話、配車サービスのトラッキング中、フード デリバリーのトラッキング中。
  • 不適切な使用: 広告、プロモーション、チャット メッセージ、アラート、今後のカレンダー イベント、アプリ機能へのクイック アクセス。

ユーザー起動型。

ほとんどのライブ更新は、ユーザーが明示的にトリガーしたアクティビティ(ワークアウトの開始、運転ナビゲーションの開始、ライドシェアの呼び出しなど)を表す必要があります。ユーザーの環境、興味 / 関心、今後の予定などのアンビエント情報をライブ更新に表示しないでください。他の当事者によってトリガーされたアクティビティがライブ更新を生成するのを許可しない。

ユーザーが、将来のアクティビティを開始するアクションを実行することがあります。たとえば、ユーザーがフライトやコンサートのチケットを購入したり、トーナメントに登録したり、時間に制約のあるイベントへの参加を表明したりした場合です。このような場合は、スケジュールされたイベントの開始時にライブ更新を自動的に表示するのが適切です。ただし、アクティビティが差し迫っている場合にのみ表示されるように、アプリでトリガーを調整する必要があります。ユーザーがスポーツの試合などのバックグラウンド イベントのモニタリングを開始することを明示的に示している場合は、そのイベントのライブ更新の投稿を開始できます。ただし、関連する通知に固定解除アクションも含める必要があります。

時間が限られている

アクティビティ全体でユーザーの注意を必要とする場合にのみ、ライブ アップデートを表示します。ライブ更新の主なユースケースはモニタリングです。ユーザーがライブ更新をちらっと見て、アクティビティの変化する状態を把握することで大きなメリットを得られる場合です。

ライブ更新と通常の通知を切り替えるアクティビティには、ライブ更新が適しています。たとえば、搭乗券の通知は、ユーザーのフライトの何時間も前に表示するのが適切ですが、ユーザーが切迫したニーズを持っている場合(空港や会場に到着したときや搭乗が始まったときなど)にのみ、通知をライブ更新にする必要があります。一方、ライブ更新は、ユーザーが常にモニタリングする必要がないため、荷物を追跡するには適していません。

ステータス チップ

ステータス チップを使用すると、通知が表示されていないときにライブ情報を追跡できます。setShortCriticalText または setWhen を使用して、進行状況重視の通知に関する重要な状態情報を伝えます。

アイコン付きのステータス チップ
図 2. 未確定の状態には小さなアイコン Notification.Builder#setSmallIcon が表示されます。
時刻付きステータス チップ
図 3. 絶対時間を表示するには Notification.Builder#setShortCriticalText を使用します。
情報を含むステータス チップ
図 4. Notification.Builder#setShortCriticalText を使用して重要な情報を伝えます。

日時

通知が閉じられたり更新されたりしない限り、通知の存続期間のカウントダウンがトリガーされます。

  • 開始時間が 2 分以上先の場合: 現在の時刻が午前 10 時 5 分、開始時間が午前 10 時 10 分に設定されている場合、チップには「5 分」と表示されます。
  • 開始時間が 1 分以上前の場合、通知は表示されません。
  • シェードに表示される通知に時刻を表示しない場合は、setShowWhen から FALSE に変更します。

ステータス チップの外観

ステータス チップには必ずアイコンが含まれ、必要に応じてテキストも含まれます。チップの最大幅は 96 dp です。次の条件に応じてテキストを表示します。

  • 7 文字未満の場合は、テキスト全体を表示します。
  • テキストの半分未満が表示される場合は、アイコンのみを表示します。
  • テキストの半分以上が表示される場合は、できるだけ多くのテキストを表示します。

却下

ユーザーは通知シェードで通知の表示設定を管理できます。不要なライブ情報を投稿すると、ユーザーがアプリの投稿権限を取り消す可能性があります。

ユーザーがライブ情報を完全に無効にできないようにするには、ユーザーが閉じてしまう可能性のある更新を投稿しないでください。ユーザーが閉じたライブ情報を再投稿しないでください。setDeleteIntent を使用して、閉じた更新を検出します。