通知總覽

通知是指 Android 在應用程式 UI 之外顯示的訊息 提供使用者提醒、其他人通訊等 即時資訊使用者可以輕觸通知來開啟 或是在通知中直接採取行動

本頁概要說明通知的顯示位置和可用功能。如要開始建立通知,請參閱建立 通知

如要進一步瞭解通知設計和互動模式,請參閱通知設計指南

在裝置上的顯示樣式

通知會自動顯示給不同位置的使用者,格式也會有所不同。 通知會以圖示的形式顯示在狀態列中,並在通知導覽匣中顯示較詳細的內容,以及應用程式圖示上的標記。通知也會顯示在已配對的穿戴式裝置上。

狀態列和通知導覽匣

當您發出通知時,通知會先顯示為狀態列中的圖示。

圖 1. 通知圖示會顯示在狀態左側 長條。

使用者可以向下滑動狀態列來開啟通知導覽匣,然後在當中查看更詳細的通知內容,以及執行相關動作。

圖 2. 通知導覽匣中的通知。

使用者可以向下拖曳導覽匣中的通知,以顯示展開的檢視畫面。 顯示其他內容和動作按鈕 (如有提供)。自 Android 13 起,這個展開檢視畫面會加入一個按鈕,讓使用者停止有持續性前景服務的應用程式

通知會持續顯示在通知導覽匣中,直到由應用程式或使用者關閉為止。

抬頭通知

從 Android 5.0 開始,通知會短暫顯示在浮動中 稱為抬頭通知的視窗。這種行為通常很重要 通知使用者需要立即知道的通知,而且 並在裝置解鎖後顯示

圖 3. 顯示在前景應用程式前方的抬頭通知。

在應用程式發出通知時,系統會顯示抬頭通知。抬頭通知會在應用程式發出通知時立即顯示,並在短暫的時間過後消失,但會跟平常的通知一樣保留在通知導覽匣中。

可能會觸發抬頭通知的條件包括:

  • 使用者的活動是以全螢幕模式進行,例如應用程式使用 fullScreenIntent 時。

  • 通知優先度高,而且開啟鈴聲或震動功能 搭載 Android 7.1 (API 級別 25) 以下版本的裝置。

  • 通知管道對裝置而言具有高度重要性 搭載 Android 8.0 (API 級別 26) 以上版本。

螢幕鎖定

從 Android 5.0 開始,通知可以顯示在螢幕鎖定畫面中。

您可以利用程式設計的方式,設定應用程式是否要顯示在安全螢幕鎖定畫面中的通知,以及顯示的詳細程度。

使用者可以使用系統設定,選擇鎖定畫面顯示的資料詳細程度 過濾通知或停用所有螢幕鎖定通知。從 Android 8.0 開始,使用者可以分別為每個通知管道選擇要停用或啟用螢幕鎖定畫面通知。

圖 4. 在螢幕鎖定畫面上顯示含有敏感內容的通知 隱藏。

詳情請參閱「設定螢幕鎖定畫面的可見度」。

應用程式圖示上的標記

在搭載 Android 8.0 (API 級別 26) 以上版本的裝置所支援的啟動器中,應用程式會在對應的應用程式啟動器圖示上顯示彩色的「標記」(也稱為「通知圓點」),來指出使用者收到新的通知。

使用者可以按住應用程式圖示,查看該應用程式的通知。使用者隨後即可從選單中關閉或處理通知,與通知導覽匣類似。

圖 5. 通知標記,以及輕觸和按住選單。

如要進一步瞭解標記的運作方式,請參閱「修改通知」 徽章

Wear OS 裝置

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

想要提升瀏覽體驗,可以自訂 並且提供不同動作,包括 建議回覆和語音輸入回覆。如需詳細資訊,請參閱新增 穿戴式裝置特有的功能 通知

圖 6. 通知會自動顯示在已配對的 Wear OS 上 裝置。

通知剖析

通知的設計取決於系統範本,您的應用程式 定義範本中每個部分的內容。 通知只會出現在展開的檢視畫面中

圖 7. 顯示基本詳細資料的通知。

通知中最常見的部分如圖 7 所示,如下所示:

  1. 小型圖示:必要元素,請使用 setSmallIcon() 進行設定。
  2. 應用程式名稱:由系統提供。
  3. 時間戳記:由系統提供,但您可以使用 setWhen() 覆寫,或是使用 setShowWhen(false) 隱藏。
  4. 大型圖示:選用;通常只會用於聯絡人相片。 請勿將其用於應用程式圖示。設定依據 setLargeIcon()
  5. 標題:選用;使用 setContentTitle() 設定。
  6. 文字:選用;使用 setContentText() 設定。

我們強烈建議您使用系統範本,以確保在 所有裝置。如有需要,您可以建立自訂通知 版面配置

如要進一步瞭解如何建立包含上述功能和其他內容的通知,請參閱「建立通知」。

通知動作

雖然這並非必要,但建議每次開啟通知都是不錯的做法 應用程式活動。除了這個預設值以外 通知動作,您可以新增動作按鈕,以完成應用程式相關的動作 通知任務中往往不開啟活動,例如 如圖 8 所示

圖 8. 含有動作按鈕的通知。

從 Android 7.0 (API 級別 24) 開始,您可以新增動作來回覆 或是直接在通知中輸入其他文字。

從 Android 10 (API 級別 29) 開始,平台可以自動產生 動作按鈕,其中包含建議的意圖型動作。

如要進一步瞭解如何新增動作按鈕,請參閱建立 通知

需要解鎖裝置

使用者可能會在裝置的螢幕鎖定畫面上查看通知動作。如果通知動作導致應用程式啟動活動或傳送直接回覆,使用者必須先解鎖裝置,應用程式才能叫用該通知動作。

在 Android 12 (API 級別 31) 以上版本中,您可以設定通知動作,使其必須解鎖裝置,應用程式才能叫用該動作 (不論動作啟動的工作流程為何)。這個選項可在已鎖定裝置上的通知增添進階安全保障。

需先解鎖裝置,才能要求應用程式叫用特定通知 動作,將 true 傳入 setAuthenticationRequired() ,如以下程式碼片段所示:

Kotlin

val moreSecureNotification = Notification.Action.Builder(...)

    // This notification always requests authentication when invoked
    // from a lock screen.
    .setAuthenticationRequired(true)
    .build()

Java

Notification moreSecureNotification = new Notification.Action.Builder(...)

    // This notification always requests authentication when invoked
    // from a lock screen.
    .setAuthenticationRequired(true)
    .build();

可展開的通知

根據預設,通知的文字內容會遭到截斷,以便在單行顯示所有內容。如果 如果想延長通知長度,可以啟用較大的文字區域 將附加在套用額外的範本後 (如圖 9 所示) 展開。

圖 9.能夠顯示較多文字的可展開通知。

您也可以建立含有圖片、採用收件匣樣式、包含即時通訊對話,或是設有媒體播放控制項的可展開通知。詳情請參閱「建立可展開通知」。

通知更新和群組

為避免您在有額外的更新消息時,向使用者發出數則或多餘的通知,請更新現有通知,而不是發出新通知,或是使用收件匣樣式的通知,以對話形式來顯示更新消息。

不過,如果您必須傳送多則通知,則可考慮將通知分組 將獨立通知分成一組 (適用於 Android 7.0 以上版本)。

通知群組可讓你將多則通知收合成 1 則貼文 顯示摘要的通知導覽匣使用者可以逐步展開通知群組,以及群組中的每則通知來取得詳細資料,如圖 10 所示。

圖 10. 已收合與已展開的通知群組。

如要進一步瞭解如何將通知新增至群組中,請參閱「建立通知群組」。

通知管道

從 Android 8.0 (API 級別 26) 開始,所有通知都必須指派專屬管道,否則就不會顯示。這樣一來,使用者就能停用應用程式的特定通知管道,而非停用「所有」通知。使用者可以透過 Android 系統設定控制每個管道的視覺和聽覺選項,如圖 11 所示。使用者也可以輕觸等候通知 變更相關頻道的行為

在搭載 Android 7.1 (API 級別 25) 以下版本的裝置上,使用者可以管理 只接收每個應用程式的通知在 Android 7.1 以下版本中,每個應用程式實際上只有一個管道。

圖 11.「時鐘」應用程式通知設定,以及該應用程式的某個管道。

應用程式可以為每種通知類型設定不同的管道。應用程式也可以建立通知管道,以回應 使用者。例如,您可以為每個 使用者在訊息應用程式中建立的對話群組。

針對 Android 8.0 以上版本中的通知,您也可以指定管道的「重要性」等級,因此張貼在相同通知管道中的所有通知,都會有同樣的行為。詳細說明如下: 專區。

詳情請參閱「建立及管理通知管道」。

通知重要性

Android 會根據通知的「重要性」,決定通知在視覺和聽覺上對使用者的干擾程度。重要性越高 通知的干擾程度最高。

在 Android 裝置上: 7.1 (API 級別 25) 以下版本,通知的重要性取決於通知的重要性 通知的 priority

在 Android 8.0 (API 級別 26) 以上版本中,通知的重要性取決於通知所屬管道的 importance。使用者可以 一個通知管道,如圖 12 所示。

圖 12. 使用者可以在 Android 裝置上變更每個管道的重要性 8.0 以上版本。

應用程式可能具備重要性等級,以及相關聯的通知行為 包括:

  • 緊急:會發出音效,並以抬頭通知的形式顯示。

  • 高:會發出音效。

  • 中:不會發出音效。

  • 低:不會發出聲音,也不會出現在狀態列中。

無論重要性為何,所有通知都會顯示在不受干擾的系統中 UI 位置,例如通知導覽匣以及啟動器中的標記 圖示。不過,您可以修改通知的外觀 徽章

詳情請參閱這篇文章 重要性

零打擾模式

從 Android 5.0 (API 級別 21) 開始,使用者可以啟用零打擾模式。 關閉所有通知的音效和震動。通知仍會顯示在系統 UI 中,除非使用者指定其他設定。

零打擾模式提供三個等級:

  • 完全靜音:封鎖所有音效和震動,包括來自鬧鐘、音樂、影片和遊戲的音效和震動要求。
  • 僅限鬧鐘:封鎖鬧鐘以外的所有音效和震動。
  • 僅限優先通知:使用者可以設定哪種系統通用類別能夠干擾自己,例如僅限鬧鐘、提醒、活動、通話或訊息。使用者可針對訊息和來電進行篩選,如圖所示 如圖 13 所示

圖 13. 使用者可以根據系統通用類別 (左側),以及寄件者或來電者 (右側),決定通知的干擾程度。

在 Android 8.0 (API 級別 26) 以上版本中,使用者可以額外允許 收集應用程式特定類別的通知 (也稱為 ,逐一覆寫每個頻道的「零打擾」模式。舉例來說,假設付款應用程式包含與提款和存款相關的通知管道。使用者可以在優先模式中,選擇允許提款通知、存款通知,或是兩者皆可通知。

在搭載 Android 7.1 (API 級別 25) 以下版本的裝置上,使用者可以允許 而不是從一個應用程式 查看每個管道的流量狀況

如要針對這些使用者設定設定通知,您必須設定 整個系統 類別

前景服務的通知

當您的應用程式執行前景服務時,您就需要使用通知;前景服務是指在背景長時間執行的重要 Service,對使用者來說至關重要,例如媒體播放器。使用者無法以一般的通知關閉方式來關閉這項通知。移除 通知,必須停止服務或從前景移除服務 時間。

詳情請參閱「前景服務」。如果您在建構媒體播放器,請同時參閱「在背景播放媒體」。

貼文限制

從 Android 8.1 (API 級別 27) 開始,應用程式不會發出通知音效 每秒超過 1 次如果您的應用程式在單一訊息中發布多則通知 它們會正常顯示,但只有第一則通知 發出聲音。

不過,Android 還限制了更新通知的頻率。如果發生以下情況: 太常發布單一通知的更新,例如,每則通知的發布頻率 一秒,系統可能會捨棄更新。

通知相容性

持續改善 Android 通知系統 UI 和通知相關 API 持續進化。如要使用最新的通知 API 功能,但同時支援舊版裝置,請使用支援程式庫通知 API、NotificationCompat 及其子類別,以及 NotificationManagerCompat。這樣一來,您就不必編寫條件式程式碼來查看 API 級別,因為這些 API 都會幫您處理好。

NotificationCompat 也隨著平台的演進而更新,現在包含最新的方法。不過,NotificationCompat 中的方法可用性不會 並保證為舊款裝置提供相應功能。在某些情況下,在較舊的裝置上呼叫新引進的 API 會導致操作無效的結果。

以下摘要說明各 API 級別的最重要行為變更 Android 通知。

Android 5.0 (API 等級 21)

  • 介紹螢幕鎖定和抬頭通知。

  • 使用者可以將手機設為零打擾模式,並設定 裝置開啟時,通知不會受到干擾 。

  • 新增方法,用於設定是否要讓通知顯示在螢幕鎖定畫面中 (例如 setVisibility()),以及指定通知文字的「公開」版本。

  • 新增 setPriority() 方法,指示系統 通知是指舉例來說,將優先級設為高 通知會顯示為抬頭通知。

  • 為 Android Wear (現在稱為 Wear OS) 裝置新增通知堆疊支援功能。您可以利用 setGroup() 將數則訊息組合成一個堆疊。在 Android 7.0 (API 級別 24) 之前,平板電腦或手機不支援通知堆疊 (後來稱為群組或組合)。

Android 7.0 (API 等級 24)

  • 重新設計通知範本的樣式,強調主頁橫幅和 顯示圖片。

  • 新增三個通知範本:一個用於訊息應用程式,另外兩個通知範本 使用可展開的預設用途和其他元素來裝飾自訂內容檢視區塊 系統裝飾

  • 支援手機和平板電腦等手持裝置 通知群組。使用與 Android Wear 相同的 API (現在稱為 Wear) OS) 推出於 Android 5.0 (API 級別 21) 中導入的通知堆疊。

  • 允許使用者透過內嵌回覆功能,在通知中回覆。使用者可以輸入文字,系統隨後會將這些文字轉送給通知的主要應用程式。

Android 8.0 (API 等級 26)

  • 將個別通知置於特定管道中。

  • 使用者現在可以根據管道來關閉通知,不必關閉應用程式的所有通知。

  • 讓已啟用通知的應用程式在頂端顯示通知徽章 主畫面或啟動器畫面中的應用程式圖示。

  • 使用者可以透過導覽匣延後通知。您可以為通知設定自動逾時的時間。

  • 可讓您設定通知的背景顏色。

  • 將部分與通知行為相關的 API 移出 NotificationNotificationChannel。 舉例來說,請使用 NotificationChannel.setImportance() 而不是 NotificationCompat.Builder.setPriority() (Android 8.0 以上版本)。

Android 13.0 (API 級別 33)

  • 新增 runtime 權限。如要讓應用程式傳送非豁免通知,使用者必須將這項權限授予應用程式。

Android 14.0 (API 級別 34)

  • 限制全螢幕意圖通知只能用於提供通話和 鬧鐘。使用 NotificationManager.canUseFullScreenIntent API 執行下列操作: 檢查應用程式是否具備相關權限如果不是,則應用程式可以使用 ACTION_MANAGE_APP_USE_FULL_SCREEN_INTENT可啟動設定頁面 使用者可在其中授予權限

  • 允許 即使在不開啟通知動作的情況下 已設定 Notification.FLAG_ONGOING_EVENT 標記。這不適用於 如果 Notification.FLAG_ONGOING_EVENT 標記是 CallStyle 則通知 設定或部署裝置政策控制器 (DPC) 以及支援套件 企業。這項功能也不會在手機鎖定或使用者選取「清除所有內容」時生效。