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

システムはライブ アップデートの通知を優先します。プロモーション通知は、通知ドロワーやロック画面の上部、ステータスバーのチップなど、システム サーフェスでより目立つように表示されます。

図 1. ライブ アップデート通知の例。

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

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

ライブアップデートとして認定されるには、通知が次の要件を満たしている必要があります。

  • Standard/No Style、BigTextStyleCallStyle、または ProgressStyle にする必要があります。
  • Android マニフェストで次の非実行時の権限 android.permission.POST_PROMOTED_NOTIFICATIONS をリクエストする必要があります。
  • EXTRA_REQUEST_PROMOTED_ONGOING または NotificationCompat.Builder#requestPromotedOngoing を使用してプロモーションをリクエストする必要があります。
  • ongoingFLAG_ONGOING_EVENT を設定)にする必要があります。
  • contentTitle を設定する必要があります。
  • customContentView を設定してはなりません(RemoteViews はありません)。
  • setGroupSummary を使用したグループの概要にすることはできません
  • TRUEsetColorized してはなりません。
  • 通知チャンネルに IMPORTANCE_MIN が含まれていてはなりません。

プロモーションの特性

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

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

使用条件

ライブ アップデートは、進行中のアクティビティ、ユーザーが開始したアクティビティ、時間的制約のあるアクティビティに使用します。

実行中

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

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

  • 適切な使用例: ナビゲーションの実行中、通話中、ライドシェアの追跡中、フード デリバリーの追跡中。
  • 不適切な使用: 広告、プロモーション、チャット メッセージ、アラート、今後のカレンダーの予定、アプリ機能へのクイック アクセス。

ユーザー起動型。

ほとんどのライブ アップデートは、ワークアウトの開始、運転ナビゲーションの開始、ライドシェアの呼び出しなど、ユーザーが明示的にトリガーしたアクティビティを表す必要があります。ユーザーの環境、興味、今後の予定などの周囲の情報をライブ アップデートに表示しないでください。他のユーザーによってトリガーされたアクティビティでライブ アップデートを生成しないようにします。

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

Time Sensitive

ライブ アップデートは、アクティビティ全体を通してユーザーの注意が必要な場合にのみ表示します。ライブ アップデートの主なユースケースはモニタリングです。ユーザーはライブ アップデートを一目で確認することで、アクティビティの進行状況を把握できます。

ライブ アップデートは、ライブ アップデートと通常の通知の間で遷移するアクティビティに適しています。たとえば、搭乗券の通知はフライトの数時間前に表示するのが適切ですが、空港や会場に到着したときや搭乗が開始されたときなど、ユーザーが緊急の必要性を感じたときにのみ、ライブ アップデートに切り替えるべきです。一方、ユーザーが常にモニタリングする必要がないため、荷物の追跡にはライブ アップデートは適していません。

ステータス チップ

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

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

時間

通知が非表示になるか更新されない限り、when 時間は通知の有効期間のカウントダウンをトリガーします。

  • when 時間が 2 分以上先の場合: 現在の時刻が午前 10 時 5 分で、when 時間が午前 10 時 10 分に設定されている場合、チップには「5 分」と表示されます。
  • when タイムが 1 分以上過去の場合、通知は表示されません。
  • シェードに表示される通知に時刻を表示したくない場合は、setShowWhenFALSE に設定します。

ステータス チップの外観

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

  • 7 文字未満の場合は、テキスト全体を表示します。
  • テキストの半分未満しか表示されない場合は、アイコンのみを表示します。
  • テキストの半分以上が表示される場合は、可能な限り多くのテキストを表示します。

却下

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

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

これらの API を試すには、サンプルアプリをご覧ください。