通知

通知功能可在應用程式處於閒置狀態時,為使用者提供簡短且即時的相關資訊。

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

  1. 瞭解通知的結構。
  2. 選擇適用於用途的通知類型。
  3. 設定與所選通知類型相符的通知類別。

重點整理

  • 請考量通知的目的:為何要向使用者發出警示?
  • 決定通知權限模式,考量通知對應用程式的重要性,以及在使用者歷程中要求權限的時機。
  • 選擇通知範本。
  • 建立通知內容:
    • 標題文字應簡要概述通知內容。
    • 內容文字應預覽通知。
    • 圖片內容 (如果適用於應用程式內容)。
    • 媒體範本的媒體主視圖和中繼資料。
  • 根據使用者內容提供文字按鈕、輸入內容或媒體控制項等動作,讓使用者清楚瞭解通知的功能。
  • 加入應用程式圖示,並設定應用程式圖示背景顏色。
  • 設定通知的管道和類別。這樣一來,系統和使用者就能自訂接收的通知,並提供優先順序行為。
  • 如果您的應用程式可能會一次傳送多則通知,請將通知分組。
  • 如需通知範本,請參閱 Figma 上的 Android UI Kit

通知剖析

通知的設計目的,是為了讓使用者輕鬆瀏覽及使用通知中最重要的元素。:

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

通知標頭和內容

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

圖 2:通知標頭區域

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

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:進度範本

媒體範本

媒體範本可讓使用者控制應用程式目前播放的媒體。

  • 在收合狀態下,通知最多可顯示三個動作。大型圖示可顯示相關圖片,例如專輯封面。
  • 展開後,通知會顯示最多五個附帶較大圖片的動作,或六個不含圖片的動作。通知的背景和其他元素會自動繼承圖片的顏色。
圖 10:媒體範本

訊息範本

MessagingStyle 範本專為即時通訊設計。展開後,使用者就能透過這則採用此範本的通知,在通知中回覆訊息。

圖 11:訊息範本

呼叫範本

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

圖 12:通話範本

即時更新範本

即時更新會提供重要更新摘要,讓使用者不必開啟應用程式,即可追蹤進度。使用者可以暫時關閉即時更新通知,或將其降級為標準通知。即時更新通知應遵循通知原則,提供簡潔、及時且相關的資訊。

圖 13:即時更新範本
針對使用者啟動的有限或可追蹤體驗,使用即時更新功能。
如果通知沒有明確的結束時間,請使用即時更新。

實景功能在下列情況下無法正常運作:

  • 如果通知中的資訊來自多個應用程式。
  • 通知是否旨在向使用者提供建議。
  • 是否需要透過客製化視覺效果、動畫或獨特的資料結構來傳達資訊。

通知權限

雖然通知可以提供相關且及時的資訊,但大部分的通知都不適用豁免條款,也就是說,使用者必須同意接收來自應用程式的通知。

但有一個例外狀況:自 Android 13 (API 級別 33) 起,媒體工作階段和管理電話通話的應用程式「不必」要求使用者同意。如果使用者已開啟通知,先前推出的應用程式也可能符合資格。詳情請參閱「豁免條款」。

強烈建議您在設定中提供通知選項,讓使用者更新通知偏好設定

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

如果是不適用於豁免條款的通知,請提示使用者表示是否要選擇接收通知。明確選擇接收通知的使用者,可能會覺得通知更實用且不那麼令人困擾。

圖 14:針對非豁免通知徵詢使用者同意

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

  • 說明通知提供的優點,以及未授予通知權限的結果。
  • 提供內容相關 UI,將通知與其功能或影響內容相關聯。這個 UI 可使用任何表單,以便在應用程式中最佳化整合:例如在費用、底部功能表或新手上路畫面中的資訊卡。您應該可以關閉任何一個通知。
  • 如果使用者已關閉 UI,請勿顯示通知權限對話方塊。

從 Android 13 開始,您可以再次向使用者要求通知權限。

必要通知

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

圖 15:健身應用程式前景服務通知範例

由於這些程序會耗用電量,且可能會使用資料,因此應用程式必須透過顯示不可關閉的通知,讓使用者瞭解這些程序。使用者無法關閉通知,因此您必須提供使用者可執行的動作,以便停止服務。

以下範例顯示健身應用程式發出的通知。使用者已開始進行有效的健身時段,這會將前景服務例項化,以便追蹤健身時段。應用程式會顯示通知,指出它正在追蹤步行,並提供查看運動的選項。

不應使用通知的情況

請勿在下列任何用途中使用通知:

  • 用於交叉宣傳或宣傳其他產品 (這是 Play 商店嚴格禁止的行為)
  • 如果使用者從未開啟您的應用程式
  • 是與使用者溝通的主要管道
  • 鼓勵使用者返回應用程式,但不提供直接價值 (例如「好久不見!」)
  • 針對要求評分應用程式
  • 針對不需要使用者介入的作業,例如同步處理資訊
  • 如要宣告應用程式可在無使用者互動情況下復原的錯誤狀態
  • 節慶或生日訊息
以通知的形式傳送節慶或生日祝福。
在使用者執行任務時打斷他們,只為了詢問他們是否滿意您的服務。

行為

請注意下列通知行為,以及如何在特定情境中處理這些行為。

通知到達

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

  • 發出聲響或讓手機震動。
  • 在狀態列中顯示圖示。這通常是應用程式圖示,但如果您有多種通知類型,請使用可捕捉通知目的的符號。
  • 以抬頭通知的形式顯示,並在目前畫面上顯示,以吸引使用者的注意。

如往,使用者可以選擇變更您設定的通知行為。

圖 16:通知到達

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

2 通知「窺視」目前畫面,在使用者執行任務時吸引他們的注意力。

通知面板

Android 的通知匣通常會以倒轉時間順序顯示通知,並根據下列條件調整:

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

處理過時的通知

通知匣的設計目的,是向使用者顯示目前相關的資訊。如果先前的通知已過時,也就是不再相關,請關閉通知,以免使用者看到。

圖 17:通知匣頂端顯示剛收到的文字,底部則顯示關於新增相片的低優先順序通知

應用程式圖示標記會顯示新通知

在搭載 Android 8.0 (API 級別 26) 以上版本的裝置所支援的啟動器中,應用程式圖示會顯示通知圓點,表示應用程式有與之相關的新通知。這些圓點預設會顯示在支援的啟動器應用程式中,應用程式不需要執行任何操作。此外,您也可以停用和限制徽章。

圖 18:應用程式圖示上的通知圓點,表示應用程式有與之相關的新通知

使用者可透過通知執行的動作

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

  • 前往目的地:使用者可以輕觸通知來導航。如果通知顯示在鎖定的螢幕上,使用者必須輕觸兩下通知,然後輸入 PIN 碼、解鎖圖案或密碼。

    使用者輕觸通知後,應用程式必須顯示與該通知直接相關的使用者介面,並讓使用者立即採取行動。舉例來說,如果通知指出這是雙人遊戲中的輪到你了,輕觸通知後應會直接前往該遊戲。

  • 查看展開後的通知:標題中會顯示展開指標。使用者可以輕觸指標或向下滑動通知內容來展開通知。

    圖 19:展開的通知
  • 關閉通知 (如果允許):使用者可以向左或向右滑動關閉通知。

持續進行的通知 (表示背景中持續進行的程序,例如播放音樂) 可能無法透過滑動手勢關閉。

  • 延後快訊通知:使用者可以向上滑動快訊通知,系統將禁止該事件的後續通知在 1 分鐘內閃爍。

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

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

顯示的控制項會因 Android 版本和應用程式是否有通知管道而異 (自 Android 8.0 版起)。

將多則通知分組

如果應用程式產生多個相同類型的通知,Android 會提供通知分組功能,避免使用者感到不堪負荷。

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

  • 父項通知會顯示子項通知的摘要。
  • 如果使用者展開父項通知,Android 會顯示所有子項通知。
  • 使用者可以展開子通知,查看完整內容。

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

子項通知必須能單獨顯示,因為系統可能會在子項到達時在群組外顯示。

圖 20:已分組的通知收合和展開檢視畫面。

設定

頻道

從 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 和相簿應用程式的螢幕鎖定通知會在使用者選擇在螢幕鎖定畫面上顯示這項資訊後,顯示所有內容。

圖 21:不同靈敏度等級的螢幕鎖定畫面。

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

2 螢幕鎖定畫面上隱藏的敏感通知內容

樣式

簡明扼要的文字

Android 會將內容標題截斷為單行 (即使展開也是如此)。

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

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

優質內容文字應遵循下列規範:

  • 避免超過 40 個字元限制
  • 避免重複內容標題中的內容

大型圖示

在圖像可有效強化通知內容的用途上,請使用大型圖示。例如:

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

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

使用大型圖示來建立品牌形象。
使用大型圖示,以有意義的方式強化通知內容,例如在訊息通知中顯示人物相片。

Android 版本更新

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

平台注意事項

Wear

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