通知是指 Android 在應用程式 UI 之外顯示的訊息 提供使用者提醒、其他人通訊等 即時資訊使用者可以輕觸通知來開啟 或是在通知中直接採取行動
本頁概要說明通知的顯示位置和可用功能。如要開始建立通知,請參閱建立 通知。
如要進一步瞭解通知設計和互動模式,請參閱 通知設計 指南。
在裝置上的顯示樣式
通知會自動顯示給不同位置的使用者,格式也會有所不同。 通知會以圖示顯示在狀態列中,則在 通知導覽匣,以及應用程式圖示上的標記。也會收到通知 以及顯示在配對的穿戴式裝置上
狀態列和通知導覽匣
當您發出通知時,通知會先顯示為狀態列中的圖示。
使用者可以將狀態列向下滑動以開啟通知導覽匣, 他們可以透過通知查看更多詳細資訊並採取行動。
使用者可以向下拖曳導覽匣中的通知,以顯示展開的檢視畫面。 顯示其他內容和動作按鈕 (如有提供)。距離開始還有 在 Android 13 中,這個展開的檢視畫麵包含一個按鈕,可讓使用者 停止正在前景運作的應用程式 服務。
通知在關閉前會持續顯示在通知導覽匣中 或使用者建立存取權
抬頭通知
從 Android 5.0 開始,通知會短暫顯示在浮動中 稱為抬頭通知的視窗。這種行為通常很重要 通知使用者需要立即知道的通知,而且 並在裝置解鎖後顯示
在應用程式發出通知時,系統會顯示抬頭通知。這項服務 並在一段時間後消失,但狀態在通知導覽匣中仍會顯示為 正常工作。
可能會觸發抬頭通知的條件包括:
使用者的活動是以全螢幕模式進行,例如應用程式使用
fullScreenIntent
。通知優先度高,而且開啟鈴聲或震動功能 搭載 Android 7.1 (API 級別 25) 以下版本的裝置。
通知管道對裝置而言具有高度重要性 搭載 Android 8.0 (API 級別 26) 以上版本。
螢幕鎖定
從 Android 5.0 開始,通知可以顯示在螢幕鎖定畫面中。
您可透過程式輔助的方式,設定應用程式張貼的通知是否顯示在 安全螢幕鎖定。如果是的話,則會顯示細節層級。
使用者可以使用系統設定,選擇鎖定畫面顯示的資料詳細程度 過濾通知或停用所有螢幕鎖定通知。開頭是 在 Android 8.0 中,使用者可以停用或啟用每個裝置的螢幕鎖定通知 通知管道
詳情請參閱「設定螢幕鎖定」 瀏覽權限。
應用程式圖示上的標記
在搭載 Android 8.0 (API 級別 26) 以上版本的裝置上,支援的啟動器中, 應用程式圖示會顯示新通知,其中彩色的標記稱為 通知圓點。
使用者可以輕觸瀏覽應用程式圖示,即可查看該應用程式的通知。位使用者 可以關閉該選單的通知,或根據通知執行相關動作,與通知類似 導覽匣。
如要進一步瞭解標記的運作方式,請參閱「修改通知」 徽章。
Wear OS 裝置
如果使用者擁有已配對的 Wear OS 裝置,則所有通知會顯示在該裝置上 包括可展開的詳細資料和動作按鈕。
想要提升瀏覽體驗,可以自訂 並且提供不同動作,包括 建議回覆和語音輸入回覆。如需詳細資訊,請參閱新增 穿戴式裝置特有的功能 通知。
通知剖析
通知的設計取決於系統範本,您的應用程式 定義範本中每個部分的內容。 通知只會出現在展開的檢視畫面中
通知中最常見的部分如圖 7 所示,如下所示:
- 小型圖示:必要;設定使用
setSmallIcon()
。 - 應用程式名稱:由系統提供。
- 時間戳記:由系統提供,但您可以使用
setWhen()
或是使用setShowWhen(false)
。 - 大型圖示:選用;通常只會用於聯絡人相片。
請勿將其用於應用程式圖示。設定依據
setLargeIcon()
。 - 標題:選填;設定使用
setContentTitle()
。 - 文字:選用;設定使用
setContentText()
。
我們強烈建議您使用系統範本,以確保在 所有裝置。如有需要,您可以建立自訂通知 版面配置。
如要進一步瞭解如何建立包含這些功能的通知,以及 詳情請參閱建立 通知。
通知動作
雖然這並非必要,但建議每次開啟通知都是不錯的做法 應用程式活動。除了這個預設值以外 通知動作,您可以新增動作按鈕,以完成應用程式相關的動作 通知任務中往往不開啟活動,例如 如圖 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 所示) 展開。
您還可以建立含有圖片、採用收件匣樣式的可展開通知。 即時通訊對話,或控制媒體播放控制項,如需更多資訊 請參閱「建立可展開式通知」。
通知更新和群組
為了避免使用者過多或多餘的通知, 有其他更新,更新現有 通知 使用 inbox-style 程式庫 通知顯示 對話更新
不過,如果您必須傳送多則通知,則可考慮將通知分組 將獨立通知分成一組 (適用於 Android 7.0 以上版本)。
通知群組可讓你將多則通知收合成 1 則貼文 顯示摘要的通知導覽匣使用者可以逐步展開 通知群組以及群組中的每則通知,以取得更多詳細資訊,如 圖 10
如要瞭解如何在群組中新增通知,請參閱建立群組 通知。
通知管道
從 Android 8.0 (API 級別 26) 開始,所有通知都必須指派給 或就不會出現這可讓使用者停用特定通知 而不是停用所有通知。使用者可以 控制 Android 系統中每個頻道的視覺和聽覺選項 如圖 11 所示使用者也可以輕觸等候通知 變更相關頻道的行為
在搭載 Android 7.1 (API 級別 25) 以下版本的裝置上,使用者可以管理 只接收每個應用程式的通知每個應用程式實際上只有一個管道 。
應用程式發出的各種通知可以有不同的管道。 應用程式也可以建立通知管道,以回應 使用者。例如,您可以為每個 使用者在訊息應用程式中建立的對話群組。
您也可以在管道中指定 Android 8.0 以上版本的通知,因此所有通知張貼至相同的 通知管道的行為都相同詳細說明如下: 專區。
詳情請參閱「建立及管理通知 管道。
通知重要性
Android 會根據通知的「重要性」,判斷 通知打斷使用者,同時以有聲的方式乾擾使用者。重要性越高 通知的干擾程度最高。
在 Android 裝置上:
7.1 (API 級別 25) 以下版本,通知的重要性取決於通知的重要性
通知的
priority
。
在 Android 8.0 (API 級別 26) 以上版本中,通知的重要性為
取決於
importance
敬上
該通知的所屬頻道。使用者可以
一個通知管道,如圖 12 所示。
應用程式可能具備重要性等級,以及相關聯的通知行為 包括:
緊急:會發出音效,並以抬頭通知的形式顯示。
高:會發出音效。
中:不會發出音效。
低:不會發出聲音,也不會出現在狀態列中。
無論重要性為何,所有通知都會顯示在不受干擾的系統中 UI 位置,例如通知導覽匣以及啟動器中的標記 圖示。不過,您可以修改通知的外觀 徽章。
詳情請參閱這篇文章 重要性。
零打擾模式
從 Android 5.0 (API 級別 21) 開始,使用者可以啟用零打擾模式。 關閉所有通知的音效和震動。通知仍存在 顯示在系統 UI 中,除非使用者指定其他設定。
零打擾模式提供三個等級:
- 完全靜音:封鎖所有音效和震動,包括來自鬧鐘、音樂、影片和遊戲的音效和震動要求。
- 僅限鬧鐘:封鎖鬧鐘以外的所有音效和震動。
- 僅限優先通知:使用者可以設定系統通用的類別 。 使用者可針對訊息和來電進行篩選,如圖所示 如圖 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
Notification
到NotificationChannel
。 舉例來說,請使用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) 以及支援套件 企業。即使手機處於鎖定狀態或 使用者選取 [全部清除]。