通知總覽

通知是指 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.大型的可展開通知 文字。

您還可以建立含有圖片、採用收件匣樣式的可展開通知。 即時通訊對話,或控制媒體播放控制項,如需更多資訊 請參閱「建立可展開式通知」。

通知更新和群組

為了避免使用者過多或多餘的通知, 有其他更新,更新現有 通知 使用 inbox-style 程式庫 通知顯示 對話更新

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

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

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

如要瞭解如何在群組中新增通知,請參閱建立群組 通知

通知管道

從 Android 8.0 (API 級別 26) 開始,所有通知都必須指派給 或就不會出現這可讓使用者停用特定通知 而不是停用所有通知。使用者可以 控制 Android 系統中每個頻道的視覺和聽覺選項 如圖 11 所示使用者也可以輕觸等候通知 變更相關頻道的行為

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

圖 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)

  • 將個別通知置於特定的 channel

  • 允許使用者關閉每個頻道的通知,而非關閉所有通知 接收來自應用程式的通知

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

  • 允許使用者在導覽匣中延後通知。您可以設定 逾時。

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

  • 遷移部分與通知行為相關的 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) 以及支援套件 企業。即使手機處於鎖定狀態或 使用者選取 [全部清除]