通知總覽
文章推薦指數: 80 %
通知泛指Android 在您應用程式UI 以外的位置所顯示的訊息,可為使用者提供提醒內容、其他使用者傳來的通訊內容,或是來自您應用程式的即時資訊。
Platform
AndroidStudio
GooglePlay
Jetpack
Kotlin
Docs
Games
English
BahasaIndonesia
Español–AméricaLatina
Português–Brasil
TiếngViệt
中文–简体
中文–繁體
日本語
한국어
Signin
Platform
AndroidStudio
GooglePlay
Jetpack
Kotlin
Docs
Games
AndroidDevelopers
通知總覽
Stayorganizedwithcollections
Saveandcategorizecontentbasedonyourpreferences.
通知泛指Android在您應用程式UI以外的位置所顯示的訊息,可為使用者提供提醒內容、其他使用者傳來的通訊內容,或是來自您應用程式的即時資訊。
使用者可以輕觸通知來開啟應用程式,或直接透過通知執行動作。
本頁概要說明通知的顯示位置和可用功能。
如果您想開始建構通知,請改為參閱建立通知。
想進一步瞭解通知的設計和互動模式,請參閱通知設計指南。
您也可以參閱Android通知範例,瞭解在行動裝置和穿戴式應用程式中使用Notification.StyleAPI的最佳做法。
在裝置上的顯示樣式
通知會以不同的格式,顯示在不同的位置供使用者查看,例如狀態列中的圖示、通知導覽匣中較詳細的內容、應用程式圖示上的標記,以及自動出現在已配對的穿戴式裝置上。
狀態列和通知導覽匣
當您發出通知時,通知會先顯示為狀態列中的圖示。
圖1.顯示在狀態列左側的通知圖示
使用者可以向下滑動狀態列來開啟通知導覽匣,然後在當中查看更詳細的通知內容,以及執行相關動作。
圖2.通知導覽匣中的通知
使用者可以向下拖曳導覽匣中的通知來展開視圖,藉此顯示更多內容和動作按鈕(如有提供)。
通知導覽匣中的通知會持續顯示,直到由應用程式或使用者關閉為止。
抬頭通知
從Android5.0開始,通知可以短暫地顯示在稱為「抬頭通知」的浮動式視窗中。
這通常是用來發出使用者必須立刻知道的重要通知,而且這種通知只會在裝置解鎖時顯示。
圖3.顯示在前景應用程式前方的抬頭通知
抬頭通知會在應用程式發出通知時立即顯示,並在短暫的時間過後消失,但會跟平常的通知一樣保留在通知導覽匣中。
可能會觸發抬頭通知的範例條件包括:
使用者的活動是以全螢幕模式進行(應用程式使用fullScreenIntentfullScreenIntent)。
在搭載Android7.1(API等級25)以下版本的裝置上,通知擁有高優先順序且使用鈴聲和震動功能。
在搭載Android8.0(API等級26)以上版本的裝置上,通知管道擁有高重要性。
螢幕鎖定
從Android5.0開始,通知可以顯示在螢幕鎖定畫面中。
您可以利用程式設計的方式,設定應用程式顯示在安全螢幕鎖定畫面中的通知內容詳細程度,甚至還能設定是否要讓通知出現在螢幕畫面中。
使用者可以使用系統設定來選擇螢幕鎖定畫面通知的內容詳細程度,還能選擇停用所有的螢幕鎖定畫面通知。
從Android8.0開始,使用者可以分別為每個通知管道選擇要停用或啟用螢幕鎖定畫面通知。
圖4.顯示在螢幕鎖定畫面中的通知,系統已隱藏通知中的敏感內容
詳情請參閱如何設定螢幕鎖定畫面的可見度。
應用程式圖示上的標記
在搭載Android8.0(API等級26)以上版本的裝置所支援的啟動器中,應用程式會在對應的應用程式啟動器圖示上顯示彩色的「標記」(也稱為「通知圓點」),來指出使用者收到新的通知。
使用者可以長按應用程式圖示,查看該應用程式的通知。
使用者隨後即可從選單中關閉或處理通知,與通知導覽匣類似。
圖5.通知標記和長按選單
如要進一步瞭解標記的運作方式,請參閱通知標記。
WearOS裝置
如果使用者擁有已配對的WearOS裝置,則所有通知都會自動顯示在該裝置上,包括可展開的詳細資料和動作按鈕。
您也可以自訂通知在穿戴式裝置上的部分顯示樣式,藉此強化使用者體驗,並提供各種動作選項,包括建議的回覆內容,以及透過語音輸入回覆。
詳情請參閱如何為通知新增穿戴式裝置專用的功能。
圖6.通知會自動顯示在已配對的WearOS裝置上
通知剖析
通知的外觀設計是由系統範本決定,您的應用程式只會定義範本中每個部分的內容。
而通知的某些詳細資料只會顯示在展開後的視圖中。
圖7.顯示基本詳細資料的通知
我們在圖7標示出最常見的通知部分,詳細說明如下:
小型圖示:此為必要元素,您可以利用setSmallIcon()進行設定。
應用程式名稱:這是由系統提供。
時間戳記:這是由系統提供,但您可以利用setWhen()以覆寫,或是利用setShowWhen(false)將其隱藏。
大型圖示:此為選用元素(通常只會用來顯示聯絡人的相片;請勿在此顯示您應用程式的圖示),您可以利用setLargeIcon()進行設定。
標題:此為選用元素,您可以利用setContentTitle()進行設定。
文字:此為選用元素,您可以利用setContentText()進行設定。
強烈建議您使用系統範本,確保所有裝置都有恰當的設計相容性。
不過您也可以視需求建立自訂通知版面配置。
如要進一步瞭解如何建立包含上述功能和其他內容的通知,請參閱建立通知。
通知動作
雖然這並非必要,但每則通知在使用者輕觸時,都應該會開啟適當的應用程式活動。
除了這項預設的通知動作之外,您也可以新增動作按鈕,以便使用者在通知中完成與應用程式相關的工作(而且通常不用開啟活動),如圖9所示。
圖9.含有動作按鈕的通知
從Android7.0(API等級24)開始,您也可以新增動作讓使用者回覆訊息,或是直接在通知中輸入其他文字。
從Android10(API級別29)開始,平台可自動產生動作按鈕,其中包含建議的意圖動作。
如要進一步瞭解新增動作按鈕的相關資訊,請參閱建立通知。
必須解鎖裝置
使用者可能會在裝置的螢幕鎖定畫面上查看通知動作。
如果特定通知動作讓應用程式啟動活動或傳送直接回覆,使用者必須先解鎖裝置,應用程式才能叫用該動作。
在Android12(API級別31)及以上版本中,您可以設定通知動作,使其必須解鎖裝置,應用程式才能叫用該動作(不論動作啟動的工作流程為何)。
這個選項可藉由在已鎖定裝置上的通知增添進階安全保障。
如要規定裝置在叫用特定通知動作前必須先解鎖,請在建立通知動作時將true傳遞至setAuthenticationRequired(),如下所示:程式碼片段:
Kotlin
valmoreSecureNotification=Notification.Builder(
context,NotificationListenerVerifierActivity.TAG)
.addAction(...)
//Thisnotificationalwaysrequestsauthenticationwheninvoked
//fromalockscreen.
.setAuthenticationRequired(true)
.build()
Java
NotificationmoreSecureNotification=newNotification.Builder(
context,NotificationListenerVerifierActivity.TAG)
.addAction(...)
//Thisnotificationalwaysrequestsauthenticationwheninvoked
//fromalockscreen.
.setAuthenticationRequired(true)
.build();
可展開的通知
根據預設,通知的文字內容會遭到截斷,以便在單行顯示所有內容。
如果想增加通知的長度,您可以套用額外的範本來啟用較大型的可展開文字區域,如圖8所示。
圖8.能夠顯示較多文字的可展開通知
您也可以建立含有圖片、採用收件匣樣式、包含即時通訊對話,或是設有媒體播放控制項的可展開通知。
詳情請參閱建立可展開通知。
通知更新和群組
為避免您在有額外的更新消息時,向使用者發出數則或多餘的通知,我們建議您更新現有通知,而不是發出新通知,或是考慮使用收件匣樣式的通知,以對話形式來顯示更新消息。
不過,如果您必須發出數則通知,不妨將這些不同的通知組合成一個群組(Android7.0及以上版本提供這項功能)。
通知群組能讓您將通知導覽匣中的數則通知收合成一則含有摘要的訊息。
使用者只要展開該通知,即可顯示其中每則通知的詳細資料。
使用者可以逐步展開通知群組,以及群組中的每則通知來取得詳細資料。
圖10.已收合與已展開的通知群組
如要進一步瞭解如何將通知新增至群組中,請參閱建立通知群組。
附註:如果同一個應用程式發出了至少四則通知,且沒有指定要使用通知群組功能,系統會自動將這些通知組合成一個群組。
通知管道
從Android8.0(API等級26)開始,所有通知都必須指派專屬管道,否則就不會顯示。
將通知分類到不同的管道之後,使用者就能透過Android的系統設定針對您的應用程式停用特定通知管道(而不是停用您的「所有」通知),還能控制每個管道的視覺和聽覺選項(圖11)。
使用者也可以長按某則通知,來改變相關管道的行為。
在搭載Android7.1(API等級25)以下版本的裝置上,使用者只能管理個別應用程式的通知(在Android7.1以下版本中,每個應用程式只有一個管道)。
圖11.「時鐘」應用程式的通知設定,以及該應用程式的某個管道
附註:使用者介面將管道稱為「類別」。
一個應用程式可以有好幾個通知管道,換句話說,應用程式發出的每種通知都有一個管道。
應用程式也可以建立通知管道,以回應使用者所做的決定。
舉例來說,針對訊息應用程式中建立的每個對話群組,您可以分別設定通知管道。
針對Android8.0及以上版本中的通知,您也可以指定管道的重要性。
因此張貼在相同通知管道中的所有通知,都會有同樣的行為。
詳情請參閱建立及管理通知管道。
通知重要性
Android會根據通知的「重要性」,決定通知在視覺和聽覺上對使用者的干擾程度。
通知的重要性越高,對使用者的干擾程度也就越高。
在Android8.0(API等級26)及以上版本中,通知的重要性取決於通知所屬管道的importance。
使用者可以在系統設定中變更通知管道的重要性(圖12)。
在Android7.1(API等級25)及以下版本中,每則通知的重要性則是由通知的priority決定。
圖12.在Android8.0及以上版本中,使用者可以變更每個管道的重要性
以下是您可以設定的重要性等級:
緊急:會發出音效,並顯示為抬頭通知。
高:會發出音效。
中:不會發出音效。
低:不會發出音效,也不會顯示在狀態列中。
無論重要性為何,所有通知都會顯示在不會造成干擾的系統UI位置(例如通知導覽匣),也會在啟動器圖示上顯示標記(不過您可以修改通知標記的外觀)。
詳情請參閱如何設定重要性。
零打擾模式
從Android5.0(API等級21)開始,使用者可以啟用「零打擾模式」,禁止所有通知讓裝置發出音效或震動。
通知仍會顯示在系統UI中,除非使用者指定其他設定。
零打擾模式提供三種不同的等級:
完全靜音:封鎖所有音效和震動,包括來自鬧鐘、音樂、影片和遊戲的音效和震動要求。
僅限鬧鐘:封鎖鬧鐘以外的所有音效和震動。
僅限優先通知:使用者可以設定哪種系統通用類別能夠干擾自己(例如僅限鬧鐘、提醒、活動、通話或訊息)。
使用者還可以選擇根據寄件者或來電者的身分,對訊息或通知進行篩選(圖13)。
圖13.使用者可以根據系統通用類別(左側),以及根據寄件者或來電者的身分(右側),決定通知的干擾程度。
在Android8.0(API等級26)以上版本中,使用者可以額外允許應用程式專用類別(也稱為管道)的通知干擾自己,方法是分別覆寫每個管道的「零干擾」設定。
舉例來說,假設付款應用程式包含與提款和存款相關的通知管道。
使用者可以在優先模式中,選擇允許讓提款通知、存款通知,或是兩者干擾自己。
在搭載Android7.1(API等級25)及以下版本的裝置上,使用者可以設定是否要讓每個應用程式的通知干擾自己,而不是依照管道進行設定。
如要根據上述使用者設定正確地完成通知設定,您必須設定系統通用的類別和管道。
前景服務的通知
當您的應用程式執行「前景服務」時,您就需要使用通知;前景服務是指在背景長時間執行的重要Service,對使用者來說至關重要,例如媒體播放器。
使用者無法以一般的通知關閉方式來關閉這種通知。
如要移除通知,相關服務必須停止執行或離開「前景」狀態。
詳情請參閱在前景執行服務。
如果您在建構媒體播放器,請同時參閱搭配前景服務使用MediaStyle通知。
發布限制
從Android8.1(API等級27)開始,應用程式每秒只能發出通知音效一次。
如果您的應用程式會在一秒鐘內發布數則通知,這些通知會如預期般地顯示在螢幕上,但只有第一則通知可發出音效(每秒一次)。
不過,Android還限制了更新通知的頻率。
如果您過於頻繁地(在不到一秒鐘內發布許多次)發布單一通知的更新,系統可能會忽略某幾次更新。
通知相容性
從Android1.0開始,通知系統的UI和通知相關的API都不斷在演變進化。
如要使用最新的通知API功能,但同時讓應用程式支援較舊的裝置,請使用支援程式庫通知API:NotificationCompat及其子類別,以及NotificationManagerCompat。
這樣一來,您就不必編寫條件式程式碼來查看API等級,因為這些API都會幫您處理好。
NotificationCompatNotificationCompat也隨著平台的演進而更新,現在包含最新的方法。
但請注意,即使某個方法真的包含在NotificationCompat中,也不代表您就可以在較舊的裝置上提供相應功能。
在某些案例中,在較舊的裝置上呼叫新引進的API,會導致操作無效的結果。
舉例來說,NotificationCompat.addAction()只會在搭載Android4.1(API等級16)及以上版本的裝置上顯示動作按鈕。
以下摘要說明必須注意的Android通知行為變更。
Android4.1(API等級16)
引進可展開的通知範本(稱為通知樣式),提供較大型的通知內容區域來顯示資訊。
使用者只要使用單指向上/向下滑動,即可展開通知。
同時引進以按鈕的形式,為通知新增額外動作的功能。
新增可讓使用者在設定中,分別為每個應用程式關閉通知的功能。
Android4.4(API等級19和20)
在API中新增了通知接聽器服務。
在API等級20中,新增AndroidWear(現在稱為WearOS)的支援功能。
Android5.0(API等級21)
引進螢幕鎖定畫面通知和抬頭通知。
使用者現在可以將手機設為「零干擾」模式,並設定在裝置處於「僅限優先通知」模式時,有哪些通知可以干擾使用者。
API新增了幾個方法,可用於設定是否要讓通知顯示在螢幕鎖定畫面中(setVisibility()),以及指定通知文字的「公開」版本。
新增setPriority()方法,可告訴系統通知對使用者的「干擾程度」(例如,將它設定為高,就會讓通知顯示為抬頭通知)。
新增AndroidWear(現在稱為WearOS)裝置對於通知堆疊的支援。
您可以利用setGroup()將數則訊息組合成一個堆疊。
請注意,平板電腦和手機尚未支援通知堆疊。
通知堆疊後來即成為大家所知的通知群組或組合。
Android7.0(API等級24)
重新設計通知範本的樣式,以強調主頁橫幅和顯示圖片。
新增三個通知範本:一個用於簡訊應用程式,另外兩個則是用來搭配可展開的預設用途和其他系統裝飾項目來裝飾自訂內容視圖。
新增手持裝置(手機和平板電腦)對於通知群組的支援。
而所使用的API,與在Android5.0(API等級21)中引進AndroidWear(現在稱為WearOS)通知堆疊時的API相同。
使用者可以利用內置回覆的功能,直接透過通知回覆(使用者可以輸入文字,系統隨後會將這些文字轉送給通知的主應用程式)。
Android8.0(API等級26)
您現在必須將個別的通知置於特定的管道中。
使用者現在可以根據管道來關閉通知,不必關閉應用程式的所有通知。
針對已發出通知的應用程式,系統會在主螢幕/啟動器畫面中對應的應用程式圖示上顯示通知「標記」。
使用者現在可以透過導覽匣延後通知。
您可以為通知設定自動逾時的時間。
您也可以設定通知的背景色彩。
某些與通知行為相關的API已從Notification遷移至NotificationChannel。
舉例來說,Android8.0及以上版本請使用NotificationChannel.setImportance(),而非NotificationCompat.Builder.setPriority()。
繼續
arrow_forward
建立通知
ContentandcodesamplesonthispagearesubjecttothelicensesdescribedintheContentLicense.JavaandOpenJDKaretrademarksorregisteredtrademarksofOracleand/oritsaffiliates.
Lastupdated2022-05-16UTC.
[{
"type":"thumb-down",
"id":"missingTheInformationINeed",
"label":"MissingtheinformationIneed"
},{
"type":"thumb-down",
"id":"tooComplicatedTooManySteps",
"label":"Toocomplicated/toomanysteps"
},{
"type":"thumb-down",
"id":"outOfDate",
"label":"Outofdate"
},{
"type":"thumb-down",
"id":"translationIssue",
"label":"Translationissue"
},{
"type":"thumb-down",
"id":"samplesCodeIssue",
"label":"Samples/codeissue"
},{
"type":"thumb-down",
"id":"otherDown",
"label":"Other"
}]
[{
"type":"thumb-up",
"id":"easyToUnderstand",
"label":"Easytounderstand"
},{
"type":"thumb-up",
"id":"solvedMyProblem",
"label":"Solvedmyproblem"
},{
"type":"thumb-up",
"id":"otherUp",
"label":"Other"
}]
Twitter
Follow@AndroidDevonTwitter
YouTube
CheckoutAndroidDevelopersonYouTube
LinkedIn
ConnectwiththeAndroidDeveloperscommunityonLinkedIn
MoreAndroid
Android
AndroidforEnterprise
Security
Source
News
Blog
Podcasts
Discover
Gaming
MachineLearning
Privacy
5G
AndroidDevices
Largescreens
WearOS
AndroidTV
Androidforcars
AndroidThings
ChromeOSdevices
Releases
Android11
Android10
Pie
Oreo
Nougat
Marshmallow
Lollipop
KitKat
DocumentationandDownloads
AndroidStudioguide
Developersguides
APIreference
DownloadStudio
AndroidNDK
Support
Reportplatformbug
Reportdocumentationbug
GooglePlaysupport
Joinresearchstudies
Android
Chrome
Firebase
GoogleCloudPlatform
Allproducts
Privacy
License
Brandguidelines
Getnewsandtipsbyemail
Subscribe
English
BahasaIndonesia
Español–AméricaLatina
Português–Brasil
TiếngViệt
中文–简体
中文–繁體
日本語
한국어
延伸文章資訊
- 1Notification、提醒式通知(横幅)踩坑与通知界面设置跳转
Android基础知识(二十):Notification、提醒式通知(横幅)踩坑与通知界面设置跳转一、Notification通知与基本用法通知Notification是Android系统中 ...
- 2Android—提醒式通知的顯示與限制 - 程式前沿
提醒式通知也稱為橫幅通知或懸浮通知,適用於用戶應該立即知曉的通知,它會短暫地懸浮在Window上,等到顯示時間耗盡或者用戶上劃後消失,隨後仍顯示在 ...
- 3Android Notification 状态栏通知 - 简单教程
设置相关的一些方法 ; setDefaults(int) · 属性, 说明. Notification.DEFAULT_VIBRATE, 添加默认震动提醒 ; setContentIntent(...
- 4Android—提醒式通知的显示与限制 - 简书
提醒式通知也称为横幅通知或悬浮通知,适用于用户应该立即知晓的通知,它会短暂地悬浮在Window上,等到显示时间耗尽或者用户上划后消失,随后仍显示在 ...
- 5透過通知接收快訊- Android - Google Chrome說明
你可以透過Chrome 的通知設定,選擇是否要接收來自網站、應用程式和擴充功能的通知(例如會議提醒)。 如果畫面上出現彈出式視窗或廣告,你可以透.