通知

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

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

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

  1. 瞭解通知的構成元素。
  2. 請依您的用途選擇通知類型。
  3. 根據您選擇的通知類型設定對應的通知類別。

受迫失誤數

  • 請思考通知的目的:您為何要通知使用者?
  • 因此,請決定通知權限模式,思考通知對應用程式的重要性,以及使用者歷程中該詢問的方式。
  • 選擇所需通知範本。
  • 建立通知內容:
    • 標題文字應簡述通知內容。
    • 內容文字應預覽通知。
    • 圖片內容 (如適用)。
    • 媒體範本的媒體鍵和中繼資料。
  • 根據內容提供動作,例如使用文字按鈕、輸入或媒體控制項,讓使用者清楚知道可以如何處理通知。
  • 加入應用程式圖示並設定應用程式圖示背景顏色。
  • 設定通知的頻道和類別。如此一來,系統和使用者就能自訂要接收的通知並提供優先行為。
  • 如果您的應用程式可能會同時傳送數則通知,就是群組通知。
  • 查看 Figma 上的 Android UI 套件以取得通知範本。

通知剖析

通知的設計宗旨,是讓使用者能夠輕鬆掃描,並使用通知最重要的元素。:

  • 主要內容:此為通知中最顯眼的元素。時間戳記等次要資訊比較小,並整合在主要內容上方。
  • 人物:如果通知與人物有關,顯示圖片就會與內容的其他部分有所出入。
  • 動作:使用者可以輕觸指標圖示來展開通知。動作會以不同的背景顏色和位置顯示文字標籤。
圖 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 套件以取得通知範本。

標準範本

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

圖 6:標準通知範本

大型文字範本

大型文字範本適合用來顯示較長的文字區塊。這可讓使用者在展開通知後預覽更多文字。

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

大型圖片範本

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

圖 8:大型圖片範本

進度範本

進度範本是專為使用者啟動的活動而設計,這些活動需要一段時間才能完成。展開後,使用這個範本的通知會顯示進度列,同時也會包含可讓使用者終止該活動的「取消」動作。(不可取消的活動不願收到通知)。

圖 9:進度範本

媒體範本

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

  • 通知收合時,最多可以顯示三個動作。大型圖示可顯示相關圖片,例如相簿封面。
  • 展開通知時,通知最多會顯示 5 個具有較大圖片的操作,或顯示六個沒有圖片的操作。通知的背景和其他元素會自動繼承圖片的顏色。
圖 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 會評估每則通知的瀏覽權限層級,決定哪些內容可以安全顯示。

針對螢幕鎖定畫面上的內容設定敏感程度

對使用者隱私至關重要,因此請注意,螢幕鎖定畫面上會顯示不同層級的通知。對於您建立的每則通知,您都必須將瀏覽權限層級設為「public、private」或「secret」。

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

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

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

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

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

樣式

清晰精簡的文字

Android 會將內容標題截斷成一行 (即使展開也一樣)。

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

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

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

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

大型圖示

如果圖像能大幅強化通知內容,請使用大型圖示。例如:

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

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

使用大型圖示宣傳品牌。
使用大型圖示以有意義的方式強化通知內容,例如在訊息通知中附上人物的相片。

Android 版本更新

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

平台注意事項

Wear

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