建立最新即時資訊通知

最新即時資訊會提供重要更新摘要,讓使用者不必開啟應用程式,就能追蹤進度。系統會優先顯示最新即時資訊通知,但使用者可以暫時關閉,或將最新即時資訊通知降級為標準通知。系統會更醒目地顯示這類通知,包括通知導覽匣和螢幕鎖定畫面的頂端,以及狀態列中的方塊。最新即時資訊通知應遵循通知原則,提供簡短、及時且相關的資訊。

圖 1. 最新即時資訊通知範例。

促銷通知資訊卡的外觀特徵如下:

  • 預設為展開
  • 無法收合

通知必須符合下列規定,才能做為最新即時資訊:

促銷活動特性

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

  • Notification.FLAG_PROMOTED_ONGOING 表示通知是否已升級。
  • Notification.hasPromotableCharacteristics() 會驗證系統是否能提升通知。這個方法不會考量使用者是否在設定中停用應用程式的最新即時資訊。
  • NotificationManager.canPostPromotedNotifications() 會檢查應用程式是否能發布促銷通知,例如使用者是否在設定中啟用或停用這項功能。
  • Settings.ACTION_MANAGE_APP_PROMOTED_NOTIFICATIONS 是意圖動作,可讓應用程式將使用者導向「設定」頁面,啟用這項功能。

使用條件

「最新即時資訊」適用於使用者發起、持續進行且有時效性的活動。

圖 2. 主畫面、螢幕鎖定畫面和方塊上會顯示最新即時資訊。

執行中

最新即時資訊必須代表正在進行的活動,且有明確的開始和結束時間。如果活動發生在過去,請勿使用最新即時資訊。請改用標準通知。尚未開始的活動也是如此,不過即將開始的活動可以使用最新即時資訊。

「最新即時資訊」代表持續性活動。請勿使用最新即時資訊,提供應用程式功能的快速存取途徑。如要執行這項操作,請使用應用程式小工具或自訂快速設定方塊。

  • 適當用途:即時導航、通話中、即時共乘追蹤,以及即時餐點外送追蹤。
  • 不當用途:廣告、宣傳、即時通訊訊息、快訊、近期日曆活動,以及快速存取應用程式功能。

使用者初始

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

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

時效性

只有在活動期間需要使用者持續關注時,才顯示最新即時資訊。最新即時資訊的主要用途是監控,使用者只要看一眼最新即時資訊,就能掌握活動的最新狀態,這對使用者來說非常實用。

最新即時資訊通常適用於在最新即時資訊和一般通知之間轉換的活動。舉例來說,在使用者搭機前幾小時顯示登機證通知是合適的做法,但只有在使用者有迫切需求時,例如抵達機場或會場,或登機開始時,通知才應變成最新即時資訊。相較之下,最新即時資訊不適合用於追蹤包裹,因為使用者不需要持續監控這項資訊。

使用者體驗做法

使用追蹤器圖示呈現狀態。這項設定可動態更新。

進度列上的自訂追蹤器
圖 3. 自訂追蹤器圖示。

如果預計到達時間正在計算中或尚未提供,請勿顯示空白狀態。提供「思考中...」或「重新規劃路線中...」等動態預留位置文字,表示系統正在運作,如範例所示。

nonempty state to show thinking
圖 4. 最新即時資訊的非空白狀態。

狀態方塊

使用者可透過狀態方塊,在通知未顯示時追蹤最新即時資訊。使用 setShortCriticalText 或 setWhen 傳達與進度中心通知相關的重要狀態資訊。

含圖示的狀態方塊
圖 5. 不確定狀態會顯示小圖示 Notification.Builder#setSmallIcon。
顯示時間的狀態方塊
圖 6. 使用 Notification.Builder#setShortCriticalText 顯示絕對時間。
包含資訊的狀態方塊
圖 7. 使用 Notification.Builder#setShortCriticalText 傳達重要資訊。

時間

除非通知遭到關閉或更新,否則時間會觸發通知壽命的倒數計時。以下幾點說明時間在各種情況下的運作方式:

  • 當時間至少在 2 分鐘後:如果目前時間是上午 10:05,而當時間設為上午 10:10,則方塊會顯示「5min」。
  • when 時間為過去:不顯示文字。
  • 使用 Chronometer 顯示時間時,方塊中會顯示計時器。請參閱 setUsesChronometer 和 setChronometerCountdown。只要 Chronometer 計時器為正值,就會顯示在方塊中。
  • 您不希望通知顯示時間:使用 setShowWhen 設為 FALSE。

狀態方塊外觀

狀態方塊一律包含圖示,並可選擇是否包含文字。方塊的寬度上限為 96dp。只有在整個文字都能放入方塊時,才會顯示文字。系統會根據下列條件顯示文字:

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

Wear OS

最新即時資訊會橋接至部分已連結的 Wear OS 裝置。如需這項橋接行為的指引,以及如何為 Wear OS 建立本機最新即時資訊,請參閱 Wear OS 最新即時資訊指南。

Dismissal

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

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

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

常見問題

問題:進度列末端的白點是什麼?

進度無障礙視覺化指標結束
圖 8.End of journey accessibility visualization

答案:進度列末端的白點,在視覺上標示進度列的結尾。

問題:為什麼最新即時資訊不支援自訂通知?

答案:自訂通知的行為在不同 Android 版本和裝置製造商之間有顯著差異,因此難以進行一致的測試和使用者體驗。避免使用 RemoteViews 自訂通知。