通知

<img <="" alt=""graphic="" src="/static/images/design/ui/mobile/notifications-hero.png" />

通知會在未使用時,提供與應用程式有關的簡短、即時且相關資訊。

Android 作業系統可控管通知的許多方面,但您可以控管其他部分。實作通知時,請按照下列步驟操作:

  1. 瞭解通知剖析。
  2. 為您的用途選擇通知類型。
  3. 根據您選擇的通知類型設定相應的通知類別。

重點整理

  • 考量通知的用途:您為何要將通知告知使用者?
  • 決定通知權限模式、考量通知對應用程式的重要性,以及要在使用者歷程中詢問何種問題。
  • 選擇通知範本。
  • 建立通知內容:
    • 標題文字應簡要歸納通知內容。
    • 內容文字應可預覽通知內容。
    • 圖片內容 (如果適用於您的應用程式內容)。
    • 媒體範本的媒體 Keyart 和中繼資料。
  • 透過文字按鈕、輸入或媒體控制項,根據使用者的內容提供動作,讓使用者清楚瞭解通知可執行的操作。
  • 加入應用程式圖示,並設定應用程式圖示的背景顏色。
  • 設定通知的頻道和類別。如此一來,系統和使用者就能自訂要接收的通知,並提供優先順序行為。
  • 如果您的應用程式可以一次傳送多則通知,群組通知。
  • 如需通知範本,請參閱 Figma 上的 Android UI Kit

通知剖析

通知的設計目的,是易於瀏覽及使用通知最重要的元素。這些元素如下:

  • 主要內容:這是通知最醒目的元素。次要資訊 (例如時間戳記) 較小,且合併在主要內容上方。
  • 人物:如果通知涉及人物,顯示圖片就會從其他內容中脫穎而出。
  • 動作:使用者只要輕觸指標圖示即可展開通知。動作會以不同的背景顏色和位置顯示文字標籤。
圖 1:收合的通知

通知標頭和內容

收合時,通知會顯示應用程式圖示、標頭文字、時間戳記、展開指標和內容文字。也可以視需要顯示大型圖示。

圖 2:通知標頭區域

1 應用程式圖示:應用程式圖示是應用程式身分的 2D 表示法。它會以單色顯示在狀態列中。如果應用程式會傳送多種通知,建議您將應用程式圖示替換為符號,以便區分不同類型的通知。詳情請參閱「套用圖示顏色」。

2 標題文字:通知或來源的簡短標題,例如使用者的帳戶名稱。內容是通知中最醒目的元素。

3 時間戳記:表示通知傳送的時間,例如未接來電的時間。

4 展開指標:指出通知處於收合或展開狀態。

5 內容文字:輔助資訊。

6 大型圖示 (選填):您可以新增圖片來以有意義的方式強化通知,例如包含寄件者顯示圖片的訊息。

套用圖示顏色

從 Android 12 (API 級別 31) 開始,系統會從您在應用程式設定的通知顏色中擷取圖示顏色。如果應用程式並未設定顏色,則會使用系統主題顏色。先前顏色是灰色。

圖 3:產生的樣式化應用程式圖示顏色

對於大多數樣式,只有在通知為前景服務通知時,系統才會套用這個顏色。不過,如果 MediaStyleDecoratedMediaCustomViewStyle 通知已附加媒體工作階段,則沒有這項規定。

下列程式碼片段說明如何套用圖示顏色。

val notification = Notification.Builder()
    .setColor(Color.GREEN)
    .setColorized(true)
    .setSmallIcon(R.drawable.app_icon)
    .setStyle(Notification.DecoratedCustomViewStyle())
    .build()

通知動作

圖 4:通知動作區域

1 文字按鈕動作

2 已填滿動作按鈕

3 建議的回覆

4 回覆文字欄位

從 Android 7.0 (API 級別 24) 開始,系統會針對不含圖示的動作顯示動作,以容納更多文字。為配合 Android Wear 裝置和搭載 Android 6.0 (API 級別 23) 以下版本的裝置,應用程式仍須提供圖示。

展開後的檢視畫面

您可以使用展開的檢視畫面,向使用者顯示更多資訊,而不必離開通知。

展開後,通知最多可以提供下列三種類型的動作:

  • 建議的回覆
  • 強調動作 (藥丸形狀按鈕)
  • 標準文字動作
加入重複輕觸通知內文的文字動作。
讓使用者有機會與通知互動。Google 時鐘應用程式會顯示計時中的計時器,但使用者可以直接從通知暫停或新增計時器。

啟用在通知中輸入功能

您可以加入回覆動作,讓使用者直接在通知中輸入內容。這個程式庫可讓使用者輸入少量文字,例如回覆簡訊或輸入簡短附註。

如要輸入較長的文字,請前往應用程式,讓使用者有更多空間查看及編輯文字。

針對訊息應用程式,我們建議在使用者送出回覆後繼續顯示通知,然後等到對話暫停後,再自動關閉訊息。

圖 5:使用者輕觸「回覆」後,直接在 Android 訊息中回覆,但未離開通知

根據用途選擇通知類型

Google 會在自家 Android 應用程式中使用下列通知範本。您可以根據應用程式的程度自訂這些範本。

前往 Figma 上的 Android UI Kit 取得通知範本。

標準範本

標準範本適用於大部分的通知,可使用簡潔的文字、大型圖示 (如適用) 和動作。

圖 6:標準通知範本

大型文字範本

大型文字範本非常適合用來顯示較長的文字區塊。如此一來,使用者在展開通知後就能預覽更多文字。

圖 7:含有選項大型圖示的大型文字範本

大型圖片範本

大型範本是專為內含圖片的通知而設計。收合時,通知會顯示一張大型圖示縮圖。展開後,通知會顯示較大的預覽畫面。

圖 8:大型圖片範本

進度範本

進度範本適用於需要時間才能完成的使用者啟動活動。展開時,使用這個範本的通知會顯示進度列,並含有可讓使用者終止這個活動的「取消」動作。(無法取消的活動不保證相關通知)。

圖 9:進度範本

媒體範本

媒體範本的設計目的是讓使用者控制目前透過應用程式播放的媒體。

  • 收合時,通知可以顯示最多三個動作。大型圖示可顯示相關圖片,例如相簿封面。
  • 展開時,通知會顯示最多 5 個具有較大圖片的動作,或 6 個無圖片的動作。通知的背景和其他元素會自動繼承圖片的顏色。
圖 10:媒體範本

訊息範本

MessagingStyle 範本是專為即時通訊而設計。展開時,使用這個範本的通知可讓使用者在通知內回覆訊息。

圖 11:訊息範本

來電範本

使用 CallStyle 範本產生包含大型圖片附件的大型通知,並指出來電或撥出電話。

圖 12:呼叫範本

通知權限

而與通知相關的及時性,大部分通知都「不符合豁免規定」,也就是說,使用者必須同意接收應用程式的通知。

以下情況有一個例外狀況:自 Android 13 (API 級別 33) 起,管理通話的媒體工作階段和應用程式可豁免使用者同意。如果使用者已經開啟通知功能,則既有應用程式也可能符合資格。詳情請參閱「豁免」一節。

我們強烈建議您在應用程式設定中提供通知選項,讓使用者可以更新通知偏好設定

提示使用者選擇接收非豁免通知

對於非豁免的通知,請提示使用者表明是否選擇接收通知。明確選擇接收通知的使用者,比較可能覺得實用性和乾擾性較低。

圖 13:要求使用者同意,才能提交不受豁免的通知

等待系統顯示通知對話方塊提示:

  • 說明通知提供的福利,以及未授予通知權限的原因。
  • 針對其功能或受影響的項目,提供相關的 UI。這個 UI 可以採用任何表單,以完美整合至應用程式中:例如費用、底部功能表或新手上路畫面中的範例卡片。以上任何一種都應可以關閉。
  • 如果使用者已關閉 UI,請勿顯示通知權限對話方塊。

從 Android 13 開始,系統會重新提示使用者授予通知權限。

必要通知

前景服務執行的工作屬於使用者可見,但不會直接與應用程式互動。這些服務會顯示狀態列通知,讓使用者瞭解應用程式正在前景執行工作及消耗系統資源。

圖 14:健身應用程式前景服務通知示例

由於這些程序會使用電池和可能的資料,因此應用程式必須顯示無法關閉的通知,讓使用者知道這些功能的用途。使用者無法關閉通知,因此您必須提供操作,讓使用者能夠停止服務。

以下範例顯示來自健身應用程式的通知。使用者已啟動運作中的健身工作階段,將追蹤健身時段的前景服務執行個體化。應用程式會顯示通知,指出追蹤的是步行,並提供查看運動的選項。

不應使用通知的時機

請不要在下列用途中使用通知:

  • 用於交叉宣傳或宣傳其他產品 (Play 商店嚴格禁止這種行為)
  • 如果使用者從未開啟您的應用程式
  • 做為與使用者溝通的主要方式
  • 鼓勵使用者返回應用程式,但不提供直接價值 (例如「有一陣子沒看到你!」)
  • 為應用程式評分的要求
  • 不需要使用者參與的作業,例如同步處理資訊
  • 宣告錯誤狀態,應用程式可能會在使用者未進行互動的情況下就復原
  • 節慶或生日訊息
以通知的形式傳送節日或生日問候語。
在工作進行期間中斷使用者,純粹為了詢問您是否優良。

行為

請留意下列通知行為,以及如何在特定情況下處理通知行為。

通知抵達

收到通知時,Android 會將其新增至通知導覽匣。通知可能會執行下列任一動作,視您設定的參數和裝置目前狀態而定:

  • 讓手機發出音效或震動。
  • 狀態列會以圖示顯示;這通常是應用程式圖示,但如果您有多種通知類型,請使用能擷取通知用途的符號。
  • 以抬頭通知的形式顯示,持續短暫顯示目前的畫面,藉此吸引使用者註意。

使用者隨時可以變更您設定的通知行為。

圖 15:通知抵達

1 狀態列中的通知指標,用於表示通知導覽匣中有通知。

2 「迅速瀏覽」目前畫面的通知,在工作進行期間抓住使用者的注意力。

通知導覽匣

Android 中的通知導覽匣通常會以反向時間順序顯示通知,並在調整時受到下列條件影響:

  • 應用程式指明的通知優先順序或重要性
  • 最近通知是否以音效或震動通知使用者
  • 任何與該通知連結的使用者,以及對方是否為標上星號的聯絡人
  • 通知是否代表重要的持續進行的活動,例如通話中或音樂播放中
  • Android 作業系統在清單頂端和底部改變部分通知外觀,新增強調或強調,藉此協助使用者掃描內容

處理過時通知

通知導覽匣旨在向使用者顯示與目前時間相關的資訊。如果先前的通知過時,也就是已經不再相關,請關閉通知,讓使用者看不到。

圖 16:剛剛抵達的文字會顯示在通知導覽匣頂端,而底部顯示的相片會優先顯示較低優先順序的通知

透過應用程式圖示標記顯示的新通知

在搭載 Android 8.0 (API 級別 26) 以上版本的裝置支援的啟動器中,應用程式圖示會顯示通知圓點,指出應用程式有相關的新通知。根據預設,這些點會在支援這些點的啟動器應用程式中顯示,應用程式不需要採取任何行動。此外,系統也能停用並限制徽章。

圖 17:應用程式圖示上的通知圓點,表示應用程式有新的相關聯的通知

使用者可對通知執行的動作

通知可讓使用者執行下列任一動作:

  • 導航至目的地:如要導航,使用者可能會輕觸通知。如果通知顯示在螢幕鎖定畫面中,使用者必須輕觸兩下通知,然後輸入 PIN 碼、解鎖圖案或密碼。

    使用者輕觸通知後,應用程式必須顯示與通知直接相關的 UI,並讓使用者立即採取行動。舉例來說,如果通知指出對方已經輪到雙人遊戲,只要輕觸通知,即可將使用者直接帶往該遊戲。

  • 查看通知的展開檢視畫面:標頭中顯示展開指標。使用者可以輕觸指標,或向下滑動通知內文來展開內容。

    圖 18:展開的通知
  • 關閉通知 (在允許的情況下):使用者可以向左或向右滑動來關閉通知。

如果持續顯示通知指出背景繼續進行程序 (例如播放音樂),則可能無法透過滑動關閉通知。

  • 延後抬頭通知:使用者可以向上滑動抬頭通知,該事件的後續通知將停止顯示一分鐘。

  • 日後如要控管類似的通知:使用者可以透過以下方式存取通知控制項:

    • 按住個別通知
    • 向左或向右滑動通知,然後輕觸設定圖示

顯示的控制項會因 Android 版本,以及應用程式是否有通知管道 (從 Android 8.0 開始) 而有所不同。

將多則通知分組

針對產生相同類型的多則通知的應用程式,Android 提供通知分組功能,以免造成使用者過多。

您的應用程式可以根據下列階層顯示多則通知。

  • 家長通知會顯示其子項通知的摘要。
  • 如果使用者展開父項通知,Android 會顯示所有兒童通知。
  • 使用者只要展開子項通知,即可顯示完整內容。

Android 會顯示不含重複的標頭資訊的子項通知。舉例來說,如果子項通知的應用程式圖示與其父項相同,子項標頭就不會包含圖示。

如果子項通知看起來是獨自操作,就必須讓他們理解,因為系統可能會在他們抵達群組外部時顯示這類通知。

圖 19:收合及展開的群組通知檢視畫面。

設定

頻道

從 Android 8.0 (API 級別 26) 開始,所有通知都必須指派給某個管道。您可以為每個管道設定視覺和聽覺行為,並將其套用至該管道中的所有通知。使用者可以變更這些設定,並決定要讓應用程式中的哪些通知管道會造成乾擾或顯示。

如要進一步瞭解實作方式,請參閱「建立及管理通知管道」。

選擇重要性時應考量使用者的時間和注意力,將不重要的通知偽裝成緊急通知,可能會產生不必要的鬧鐘。

重要性 行為 適用情境 範例
HIGH 會在螢幕上顯示音效 具時效性的資訊,必須讓使用者立即知道或採取行動 簡訊、鬧鐘、通話
DEFAULT 會發出音效 這些資訊必須讓使用者能盡快看到,但不會幹擾他們正在執行的操作 路況快訊、工作提醒
LOW 不發出音效 不符合其他重要性等級的要求通知管道 使用者訂閱的新內容、社群網路邀請
MIN 不發出音效或顯示通知 可等候或與使用者無關的非必要資訊 鄰近地點、天氣、宣傳內容

預先定義的類別

無論您是否使用管道,請將個別通知指派給最適當的預先定義類別。Android 可能會使用這項資訊來決定排名和篩選。

類別 說明
CATEGORY_CALL 來電 (語音或視訊) 或類似的同步通訊要求
CATEGORY_MESSAGE 外來的直接訊息 (簡訊、即時訊息等)
CATEGORY_EMAIL 非同步大型訊息 (電子郵件)
CATEGORY_EVENT 日曆活動
CATEGORY_PROMO 促銷訊息或廣告
CATEGORY_ALARM 鬧鐘或計時器
CATEGORY_PROGRESS 長期執行的背景作業進度
CATEGORY_SOCIAL 社交網路或分享更新
CATEGORY_ERROR 背景作業或驗證狀態錯誤
CATEGORY_TRANSPORT 用於播放的媒體傳輸控制
CATEGORY_SYSTEM 系統或裝置狀態更新。留作系統用途。
CATEGORY_SERVICE 執行背景服務的指示
CATEGORY_RECOMMENDATION 針對單一事物的即時具體建議。舉例來說,新聞應用程式可能針對使用者的興趣,提出下一則可閱讀的新聞報導建議
CATEGORY_STATUS 關於裝置或相關內容狀態的持續性資訊

螢幕鎖定通知

如果使用者選擇在螢幕鎖定時顯示通知,這類通知將可隱藏應用程式標示為機密的內容。Android 會評估每則通知的瀏覽權限等級,以決定哪些內容可以安全顯示。

為螢幕鎖定畫面上的內容設定靈敏度

使用者隱私至關重要,因此請留意,能在螢幕鎖定畫面上顯示不同層級的通知。您必須將每個通知的瀏覽權限層級設為公開、私人密鑰

  • 在安全的螢幕鎖定畫面中,系統會完整顯示「公開」的通知。
  • 隱藏密鑰通知。
  • 「私人」通知位於中間:畫面只會顯示基本資訊,包括發布該應用程式的名稱和圖示。您可以選擇顯示不會揭露個人資訊的文字,例如 2 new messages

在以下範例中,Gmail 和相簿應用程式的螢幕鎖定通知會在使用者選擇在螢幕鎖定畫面上顯示這些資訊後,顯示所有內容。

圖 20:螢幕鎖定畫面的靈敏度設定不同。

1 螢幕鎖定畫面顯示的所有通知內容

2 在螢幕鎖定畫面上顯示敏感通知內容

樣式

文字簡明扼要

Android 會將內容標題截斷成單行 (即使展開亦然)。

優質的內容標題符合下列規範:

  • 不得超過 30 個字元
  • 包含最重要的資訊
  • 避免使用變數 (除非變數包含數字或短文字字串,或是前面有文字)
  • 排除標頭中已顯示的應用程式名稱
在內容標題中顯示應用程式名稱,這與標頭區域重複,並使用可用的字元。
在內容標題中顯示最重要的資訊。

優質內容文字必須符合下列規範:

  • 避免超過 40 個半形字元的上限
  • 避免重複內容標題

大型圖示

當圖像對通知內容有實質幫助時,可使用大型圖示。例如:

  • 他人的通訊內容,例如某人傳送訊息的圖片
  • 內容來源 (如與傳送通知的應用程式不同,例如使用者訂閱的 YouTube 頻道的標誌)
  • 通知相關意義的符號,例如用來規劃路線的箭頭符號

顯示人物時,大型圖示必須是圓形,而在其他情況下則為正方形。

使用大型圖示建立品牌形象。
使用大型圖示可藉由有意義的方式強化通知的內容,例如顯示使用者的相片。

Android 版本更新

Android 通知系統 UI 和通知相關的 API 都在不斷演進。如需這些變更的清單,請參閱通知相容性

平台注意事項

Wear

如果使用者擁有已配對的 Wear OS 裝置,則所有通知都會自動顯示在該裝置上,包括可展開的詳細資料和動作按鈕。詳情請參閱 Wear 通知的設計頁面