Android 上的本機通知- Xamarin - Microsoft Learn

文章推薦指數: 80 %
投票人數:10人

Android 5.0 中引進了可見度和類別,在舊版Android 中無法使用。

從Android 8.0 開始, 通知通道 是用來控制通知向使用者呈現的方式。

展開的版面配置. 從 ... 跳到主要內容 已不再支援此瀏覽器。

請升級至MicrosoftEdge,以利用最新功能、安全性更新和技術支援。

下載MicrosoftEdge InternetExplorer和MicrosoftEdge的詳細資訊 目錄 結束焦點模式 閱讀英文 儲存 目錄 閱讀英文 儲存 列印 Twitter LinkedIn Facebook 電子郵件 目錄 Android上的本機通知 發行項 09/21/2022 8位參與者 本文內容 本節說明如何在Xamarin.Android中實作本機通知。

它會說明Android通知的各種UI元素,並討論與建立和顯示通知相關的API。

本機通知概觀 Android提供兩個系統控制的區域,可向使用者顯示通知圖示和通知資訊。

第一次發佈通知時,其圖示會顯示在通知區域中,如下列螢幕擷取畫面所示: 若要取得通知的詳細資料,使用者可以開啟通知選單(展開每個通知圖示,以顯示通知內容)並執行與通知相關聯的任何動作。

下列螢幕擷取畫面顯示對應至上方顯示之通知區域的通知選單: Android通知使用兩種類型的版面配置: 基底版面配置–精簡、固定的簡報格式。

展開的版面配置–可擴充為較大大小的簡報格式,以顯示更多資訊。

下列各節將說明這些配置類型(以及如何建立)。

注意 本指南著重于Android支援程式庫中的NotificationCompatAPI。

這些API可確保Android4.0(API層級14)的最大回溯相容性。

基底版面配置 所有Android通知都是以基本版面配置格式為基礎建置,至少包含下列元素: 通知圖示,代表原始應用程式,如果應用程式支援不同類型的通知,則為通知類型。

通知標題,如果通知是個人訊息,則為寄件者的名稱。

通知訊息。

時間戳記。

下圖顯示這些專案: 基底版面配置限制為高度(dp)的64個密度獨立圖元。

Android預設會建立此基本通知樣式。

或者,通知可以顯示代表應用程式或寄件者相片的大型圖示。

在Android5.0和更新版本的通知中使用大型圖示時,小型通知圖示會顯示為大型圖示的徽章: 從Android5.0開始,通知也可以出現在鎖定畫面上: 使用者可以按兩下鎖定畫面通知來解除鎖定裝置,並跳至源自該通知的應用程式,或撥動以關閉通知。

應用程式可以設定通知的可見度層級,以控制鎖定畫面上顯示的內容,而且使用者可以選擇是否允許鎖定畫面通知中顯示的敏感性內容。

Android5.0引進了一種高優先順序的通知簡報格式,稱為「頭部向上」。

頭部通知會從畫面頂端向下滑動幾秒,然後重新回到通知區域: 頭部通知可讓系統UI將重要資訊放在使用者前面,而不會中斷目前執行中活動的狀態。

Android包含通知中繼資料的支援,以便以智慧方式排序和顯示通知。

通知中繼資料也會控制通知在鎖定畫面和向上格式呈現的方式。

應用程式可以設定下列類型的通知中繼資料: 優先順序–優先順序層級會決定通知的呈現方式和時機。

例如,在Android5.0中,高優先順序通知會顯示為「頭頭通知」。

可見度–指定當通知出現在鎖定畫面時,要顯示多少通知內容。

類別–通知系統如何在各種情況下處理通知,例如當裝置處於「不要打擾」模式時。

注意 Android5.0中引進了可見度和類別,在舊版Android中無法使用。

從Android8.0開始,通知通道是用來控制通知向使用者呈現的方式。

展開的版面配置 從Android4.1開始,您可以使用展開的配置樣式來設定通知,讓使用者能夠展開通知的高度,以檢視更多內容。

例如,下列範例說明合約模式中的展開版面配置通知: 當此通知展開時,它會顯示整個訊息: Android支援三種展開的版面配置樣式,用於單一事件通知: 巨量文字–在合約模式中,會顯示訊息第一行的摘錄,後面接著兩個句點。

在展開模式中,會顯示整個訊息(,如上述範例所示)。

收件匣–在合約模式中,顯示新訊息的數目。

在展開模式中,顯示收件匣中的第一封電子郵件或郵寄清單。

影像–在合約模式中,只會顯示郵件內文。

在展開模式中,顯示文字和影像。

除了本文稍後的基本通知()說明如何建立巨量文字、收件匣和影像通知。

通知通道 從Android8.0(Oreo)開始,您可以使用通知通道功能,為您想要顯示的每種通知類型建立使用者可自訂的通道。

通知通道可讓您將通知分組,讓所有張貼至通道的通知都呈現相同的行為。

例如,您可能有一個通知通道,其適用于需要立即注意的通知,以及用於參考訊息的個別「無訊息」通道。

隨AndroidOreo一起安裝的YouTube應用程式會列出兩個通知類別:下載通知和一般通知: 每個類別都對應至通知通道。

YouTube應用程式會實作下載通知頻道和一般通知通道。

使用者可以點選[下載通知],以顯示應用程式下載通知通道的設定畫面: 在此畫面中,使用者可以執行下列動作來修改下載通知通道的行為: 將[重要性等級]設定為[緊急]、[高]、[中]或[低],以設定音效和視覺中斷層級。

開啟或關閉通知點。

開啟或關閉閃爍的光線。

在鎖定畫面上顯示或隱藏通知。

覆寫[不要打擾]設定。

一般通知通道具有類似的設定: 請注意,您對於通知通道與使用者互動的方式沒有絕對控制權–使用者可以修改裝置上任何通知通道的設定,如上述螢幕擷取畫面所示。

不過,您可以設定預設值(,如下所述)。

如這些範例所示,新的通知通道功能可讓您更精細地控制不同類型的通知。

通知建立 若要在Android中建立通知,請使用Xamarin.Android.Support.v4NuGet套件中的NotificationCompat.Builder類別。

這個類別可讓您在舊版Android上建立和發佈通知。

NotificationCompat.Builder也會討論。

NotificationCompat.Builder提供在通知中設定各種選項的方法,例如: 內容,包括標題、郵件內文和通知圖示。

通知的樣式,例如巨量文字、收件匣或影像樣式。

通知的優先順序:最小值、低、預設、高或最大值。

在Android8.0和更新版本上,優先順序是透過通知通道來設定。

鎖定畫面上通知的可見度:公用、私人或秘密。

可協助Android分類和篩選通知的類別中繼資料。

選擇性意圖,指出點選通知時要啟動的活動。

通知通道的識別碼,通知將在android8.0和更新版本(上發佈)。

在產生器中設定這些選項之後,您會產生包含設定的通知物件。

若要發佈通知,請將此通知物件傳遞至通知管理員。

Android提供NotificationManager類別,負責發佈通知並向使用者顯示通知。

您可以從任何內容取得此類別的參考,例如活動或服務。

建立通知通道 在Android8.0上執行的應用程式必須為其通知建立通知通道。

通知通道需要下列三項資訊: 識別通道之封裝唯一的識別碼字串。

將向使用者顯示的通道名稱。

名稱必須介於一到40個字元之間。

通道的重要性。

應用程式必須檢查其正在執行的Android版本。

執行Android8.0舊版的裝置不應建立通知通道。

下列方法是如何在活動中建立通知通道的其中一個範例: voidCreateNotificationChannel() { if(Build.VERSION.SdkInt=Android.OS.BuildVersionCodes.Lollipop){ builder.SetCategory(Notification.CategoryEmail); } 在此範例中,應用程式的目標Framework會設定為Android5.0,而最低Android版本會設定為Android4.1(API層級16)。

因為SetCategoryAPI層級21和更新版本中可用,所以此範例程式碼只會在可用時呼叫,而不會在API層級小於21時呼叫SetCategorySetCategory。

鎖定螢幕可見度 因為Android不支援在Android5.0(API層級21)之前鎖定螢幕通知,NotificationCompat.Builder所以不支援SetVisibility方法。

SetCategory如上所述,您的程式碼可以在執行時間檢查API層級,並只在可用時呼叫SetVisiblity: if(Android.OS.Build.VERSION.SdkInt>=Android.OS.BuildVersionCodes.Lollipop){ builder.SetVisibility(Notification.Public); } 總結 本文說明如何在Android中建立本機通知。

它描述通知的結構、說明如何使用NotificationCompat.Builder來建立通知、如何設定大型圖示、巨量文字、影像和收件匣格式的通知樣式、如何設定通知中繼資料設定,例如優先順序、可見度和類別,以及如何從通知啟動活動。

本文也說明這些通知設定如何與Android5.0中引進的新頭、鎖定畫面和不要打擾功能搭配運作。

最後,您已瞭解如何使用NotificationCompat.Builder來維護與舊版Android的通知相容性。

如需設計Android通知的指導方針,請參閱通知。

相關連結 NotificationsLab(範例) LocalNotifications(範例) Android中的本機通知逐步解說 通知使用者 通知 NotificationManager NotificationCompat.Builder PendingIntent 本文內容



請為這篇文章評分?