建立最新即時資訊通知

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

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

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

  • 預設為展開
  • 無法收合

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

促銷活動特徵

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

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

使用條件

針對持續進行、使用者發起且時效性高的活動,請使用最新即時資訊。

圖 2. 在主畫面和螢幕鎖定畫面上顯示即時更新資訊,並以動態磚形式呈現。

作用中

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

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

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

使用者初始

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

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

時效性

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

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

使用者體驗做法

使用追蹤器圖示可查看狀態。這項設定可以動態更新。

進度列上的自訂追蹤指標
圖 3. 自訂智慧手環圖示。

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

非空白狀態,顯示思考中
圖 4. 直播更新的非空白狀態。

狀態方塊

使用者可以透過狀態資訊方塊追蹤最新即時資訊,即使通知不在檢視畫面中也沒問題。使用 setShortCriticalTextsetWhen 傳達進度中心通知的重要狀態資訊。

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

時間

除非通知遭到關閉或更新,否則當時間會觸發通知存續時間的倒數計時。以下幾點將說明時間在不同情況下的運作方式:

  • 「何時」時間至少要比目前時間晚 2 分鐘:如果目前時間是上午 10:05,而「何時」時間設為上午 10:10,則方塊會顯示「5 分鐘」
  • 時間為過去:不會顯示文字。
  • 使用 Chronometer 時,晶片中的計時器會顯示時間。 請參閱 setUsesChronometersetChronometerCountdown。只要時間為正數,計時器就會顯示在動態磚中。
  • 不想在通知中顯示時間:使用 setShowWhen 移除 FALSE

狀態方塊外觀

狀態方塊一律包含圖示,並可選擇是否包含文字。晶片的寬度上限為 96dp。只有當整個文字可容納於晶片中時,才會顯示文字。文字顯示方式取決於下列條件:

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

Dismissal

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

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

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

常見問題

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

進度無障礙視覺化指標的結尾
圖 8.旅程終點無障礙程度視覺化

答:進度列尾端的白點會以視覺化方式標示進度列的結尾。

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

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