建立即時更新通知

系統會優先顯示即時更新通知。系統介面會更顯眼地顯示升級通知,包括通知導覽匣和螢幕鎖定畫面頂端,以及狀態列中的資訊方塊。

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

宣傳通知資訊卡具有下列外觀特徵:

  • 預設為展開
  • 無法收合

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

促銷活動特徵

下列 API 可協助您判斷系統是否會宣傳通知:

  • Notification.FLAG_PROMOTED_ONGOING 表示通知是否為宣傳內容。
  • Notification.hasPromotableCharacteristics() 會驗證系統是否可以提升通知優先順序。這個方法不會考量使用者是否在設定中停用應用程式的即時更新。
  • NotificationManager.canPostPromotedNotifications() 會檢查應用程式是否可以發布宣傳通知,例如使用者是否在設定中啟用或停用通知。
  • Settings.ACTION_MANAGE_APP_PROMOTED_NOTIFICATIONS 是意圖動作,可讓應用程式將使用者導向「設定」,啟用這項功能。

使用條件

針對進行中、使用者發起且時間敏感的活動,使用即時更新。

進行中

即時更新必須代表正在進行的活動,且有明確的開始和結束時間。如果活動已結束,請勿使用即時更新。請改用標準通知。尚未開始的活動也適用這項規定,但即將開始的活動可以使用即時更新功能。

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

  • 適用情況:導航期間、通話期間、追蹤叫車服務期間,以及追蹤外送服務期間。
  • 不當用途:廣告、宣傳內容、即時通訊訊息、快訊、即將到來的日曆活動,以及快速存取應用程式功能。

使用者初始

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

有時,使用者可能會執行某項動作,在未來一段時間內啟動活動。舉例來說,如果使用者購買機票或演唱會門票、報名參加比賽,或以其他方式表明日後會參加時間敏感型活動,在這些情況下,系統可能會在預定活動開始時自動顯示即時更新。不過,應用程式必須調整觸發條件,確保只在活動即將開始時顯示。如果使用者明確表示要開始監控背景事件 (例如體育賽事),您就可以開始發布該事件的即時更新。 不過,您也應在相關聯的通知中加入「取消釘選」動作。

時效性

只有在活動期間需要使用者持續關注時,才顯示即時更新。即時更新的主要用途是監控,使用者只要瀏覽即時更新,就能掌握活動的最新狀態,從中獲益良多。

如果活動會在即時更新和一般通知之間轉換,通常適合使用即時更新。舉例來說,在使用者搭機前數小時顯示登機證通知是適當的,但只有在使用者有迫切需求時,通知才應變成即時更新,例如抵達機場或場地,或開始登機時。相反地,使用者不需要持續監控包裹,因此不適合使用即時更新追蹤包裹。

狀態方塊

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

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

時間

除非通知遭到關閉或更新,否則當時間會觸發通知存續時間的倒數計時。

  • 「何時」時間至少要比目前時間晚 2 分鐘:如果目前時間是上午 10:05,而「何時」時間設為上午 10:10,則資訊方塊會顯示「5 分鐘」。
  • 如果「何時」時間超過 1 分鐘前,系統就不會顯示通知。
  • 如果不希望通知在通知欄中顯示時間,請使用 setShowWhen FALSE

狀態方塊外觀

狀態方塊一律包含圖示,並可選擇是否包含文字。晶片的寬度上限為 96dp。根據下列條件顯示文字:

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

關閉

使用者可以在通知匣中控管通知顯示設定。發布不必要的即時動態更新,可能會導致使用者撤銷應用程式的發布權限。

如要避免使用者完全停用「最新即時資訊」,請勿發布使用者可能會關閉的更新。請勿重新發布使用者已關閉的即時更新。使用 setDeleteIntent 偵測已關閉的更新。

請參閱範例應用程式,試用這些 API。