建立即時更新通知

系統會推播即時更新通知。宣傳通知會在系統介面上顯示得更醒目,包括通知面板和螢幕鎖定畫面的頂端,以及狀態列中的方塊。

圖 1. 即時更新通知範例。

宣傳通知卡的顯示方式如下:

  • 預設為展開
  • 無法折疊

通知必須符合下列條件,才能視為即時更新:

  • 必須是標準/無樣式、BigTextStyleCallStyleProgressStyle
  • 必須在 Android 資訊清單 android.permission.POST_PROMOTED_NOTIFICATIONS 中要求下列非執行階段權限。
  • 必須使用 EXTRA_REQUEST_PROMOTED_ONGOINGNotificationCompat.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 是意圖動作,可讓應用程式將使用者傳送至「設定」以啟用這項功能。

使用條件

請將即時更新功能用於持續進行、由使用者啟動且時間敏感的活動。

進行中

直播更新必須代表正在進行的活動,並有明確的開始和結束時間。如果活動發生在過去,請勿使用即時更新功能。請改用標準通知。這也適用於尚未開始的活動,但即將開始的活動可以使用即時更新功能。

即時資訊代表持續進行的活動。請勿使用即時更新功能,加快應用程式功能的存取速度。如要這麼做,請使用應用程式小工具或自訂「快速設定」方塊。

  • 適當用途:目前導航、進行中的通話、共乘服務追蹤和外送餐點追蹤。
  • 不當用途:廣告、促銷活動、即時通訊訊息、快訊、即將發生的日曆活動,以及快速存取應用程式功能。

使用者初始

大部分的即時更新應代表使用者明確觸發的活動,例如開始健身、啟動駕駛導航或叫車。請勿在即時更新中顯示環境資訊,例如使用者的環境、興趣或即將發生的事件。不允許其他方觸發的活動產生即時更新。

有時,使用者可能會在未來某個時間點執行某項動作,啟動活動。舉例來說,如果使用者購買航班或演唱會的票券、報名參加錦標賽,或以其他方式表示將參加某個時間敏感的活動,在這種情況下,建議在預定活動開始時自動顯示即時更新內容。不過,應用程式必須調整觸發條件,讓通知只在活動即將發生時顯示。如果使用者明確表示要開始監控背景事件 (例如體育賽事),您就可以開始發布該事件的即時動態。不過,您也應在相關通知中加入「取消固定」動作。

時效性

只有在活動中需要使用者注意時,才顯示即時更新。即時更新的主要用途是監控,當使用者透過即時更新掌握活動的變化狀態,即可獲得重大效益。

對於在 LiveUpdate 和一般通知之間轉換的活動,通常會適合使用 LiveUpdate。舉例來說,在航班起飛前數小時顯示登機證通知是適當的做法,但只有在使用者有迫切需求時,才應將通知設為即時更新,例如使用者抵達機場或地點,或是登機作業開始時。相反地,Live Update 不適合用於追蹤套件,因為使用者不需要持續監控套件。

狀態方塊

狀態方塊可讓使用者在未顯示通知時,追蹤即時更新。使用 setShortCriticalTextsetWhen 傳達與進度為主的通知相關的重要狀態資訊。

含有圖示的狀態方塊
圖 2. 未定狀態會顯示小圖示 Notification.Builder#setSmallIcon
含有時間的狀態方塊
圖 3. 使用 Notification.Builder#setShortCriticalText 顯示絕對時間。
含有資訊的狀態方塊
圖 4. 使用 Notification.Builder#setShortCriticalText 傳達重要資訊。

時間

除非通知遭到略過或更新,否則當時間到達時,系統會啟動通知的倒數計時。

  • 當時間至少比目前時間晚 2 分鐘:如果目前時間是上午 10 點 05 分,而當時間設為上午 10 點 10 分,則晶片會說「5 分鐘」。
  • 如果「何時」時間超過 1 分鐘,系統就不會顯示通知。
  • 如果您不希望在通知欄中顯示時間,請使用 setShowWhenFALSE

狀態方塊外觀

狀態方塊一律會包含圖示,並可選加入文字。方塊的寬度上限為 96dp。顯示文字時,請根據下列條件:

  • 如果字元少於 7 個,則顯示整個文字。
  • 如果顯示的文字不到一半,請只顯示圖示。
  • 如果超過一半的文字會顯示在螢幕上,請盡可能顯示更多文字。

關閉

使用者可以控制通知遮罩中的通知顯示設定。發布不必要的即時動態可能會導致使用者撤銷應用程式的發布權限。

為避免使用者完全停用即時更新功能,請避免發布使用者可能會略過的更新。請勿重新發布使用者關閉的即時路況更新。使用 setDeleteIntent 偵測已關閉的更新。