通知泛指 Android 在您應用程式 UI 以外的位置所顯示的訊息,可為使用者提供提醒內容、其他使用者傳來的通訊內容,或是來自您應用程式的即時資訊。使用者可以輕觸通知來開啟應用程式,或直接透過通知執行動作。
本頁概要說明通知的顯示位置和可用功能。
導入指南
下列指南說明如何在應用程式中導入各種通知功能:
- 建立通知:瞭解如何建構及發出基本通知。
- 通知權限:瞭解如何處理
POST_NOTIFICATIONS執行階段權限。 - 通知管道:讓使用者控管通知行為。
- 可展開的通知:使用
BigTextStyle或MessagingStyle等樣式顯示更多內容。 - 泡泡:使用浮動、可展開的對話重疊畫面。
- 進度通知:追蹤使用者發起的行程,例如共乘和外送。
- 通話樣式通知:區分來電和通話中通知與其他通知類型。
- 最新即時資訊通知:追蹤持續性活動的進度。
- View 專屬通知指南:在 View 應用程式中實作通知的指南。
如要進一步瞭解通知的設計和互動模式,請參閱「通知設計指南」。
在裝置上的顯示樣式
通知會自動以不同的格式,顯示在不同的位置供使用者查看。通知會以圖示形式顯示在狀態列中,並在通知導覽匣中顯示更詳細的項目,以及在應用程式圖示上顯示標記。
跨裝置行為
根據預設,通知也會顯示在配對的穿戴式裝置上。如果通知內容僅與來源裝置相關,請使用 setLocalOnly()。例如,確認媒體下載完成的通知。如需 Wear OS 通知的專屬指南,請參閱「Wear OS 通知」指南。
狀態列和通知導覽匣
發出通知時,通知會先顯示為狀態列中的圖示。
使用者可以向下滑動狀態列來開啟通知導覽匣,然後在當中查看更詳細的通知內容,以及執行相關動作。
使用者可以向下拖曳導覽匣中的通知來展開檢視畫面,藉此顯示更多內容和動作按鈕 (如有提供)。自 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(),程式碼片段如下所示:
val intent = Intent( context, null /** Replace with a valid target activity */ ) val moreSecureNotification = NotificationCompat.Action.Builder( 0, "Reply", PendingIntentCompat.getActivity(context, 0, intent, PendingIntent.FLAG_NO_CREATE, false) ) // This notification always requests authentication when invoked // from a lock screen. .setAuthenticationRequired(true) .build()
可展開的通知
根據預設,通知的文字內容會遭到截斷,以便在單行顯示所有內容。如果想增加通知的長度,您可以套用額外的範本來啟用較大型的可展開文字區域,如圖 9 所示。
您也可以建立含有圖片、採用收件匣樣式、包含即時通訊對話,或是設有媒體播放控制項的可展開通知。詳情請參閱「建立可展開通知」。
通知更新和群組
為避免您在有額外的更新消息時,向使用者發出數則或多餘的通知,我們建議您更新現有通知,而不是發出新通知,或是考慮使用收件匣樣式的通知,以對話形式來顯示更新消息。
不過,如果您必須發出數則通知,不妨將這些不同的通知組合成一個群組 (Android 7.0 及以上版本提供這項功能)。
通知群組能讓您將通知導覽匣中的數則通知收合成一則含有摘要的訊息。使用者可逐步展開通知群組,以及群組中的每則通知來取得詳細資料,如圖 10 所示。
如要瞭解如何將通知新增至群組,請參閱「建立通知群組」。
通知管道
從 Android 8.0 (API 級別 26) 開始,所有通知都必須指派專屬管道,否則就不會顯示。這樣一來,使用者就能針對您的應用程式停用特定通知管道,而不是停用「所有」通知。使用者可以透過 Android 系統設定,控制每個管道的視覺和聽覺選項,如圖 11 所示。使用者也可以按住某則通知,變更相關管道的行為。
在搭載 Android 7.1 (API 級別 25) 以下版本的裝置上,使用者只能管理個別應用程式的通知。在 Android 7.1 以下版本中,每個應用程式實際上只有一個管道。
應用程式發出的每種通知,都可以有專屬管道。應用程式也可以建立通知管道,以回應使用者所做的決定。舉例來說,針對訊息應用程式中建立的每個對話群組,您可以分別設定通知管道。
在 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 16.0 (API 級別 36)
現在,系統會代表應用程式自動將通知分組。
系統會自動將下列通知分組:
- 沒有摘要的通知
- 沒有子通知的通知
- 只有一則或少數幾則子通知的通知
Android 15.0 (API 級別 35)
通知緩和模式
Android 15 推出通知冷卻功能,旨在改善連續收到通知時的使用體驗。這項功能會降低重複通知的顯示頻率、音量和震動強度,最長可達兩分鐘。
需要透過音訊和觸覺回饋引起注意的重大通知,不受冷卻時間限制。使用者可以在「設定」中關閉通知冷卻功能。