選擇加入通知的通知權限

Android 13 中的通知使用選擇加入模型,這與先前使用選擇退出模型的 Android 版本有所不同。在Android 13中,所有應用程式在發送通知提示之前都必須徵求用戶許可。此模型有助於減少通知中斷、最大程度地減少資訊過載,並幫助使用者根據對他們重要的內容控制顯示的通知。為了支援選擇加入模型,OEM 必須對通知和執行時間權限系統進行變更。

本頁介紹 OEM 必須實施哪些措施來支援此變更以及如何驗證實施。

實施選擇加入通知的更改

從 Android 13 開始,應用程式必須透過向系統請求android.permission.POST_NOTIFICATION執行時間權限來聲明發送通知的意圖,然後才能發送通知。

在 Android 13 及更高版本中,確定應用程式是否可以向使用者發送通知的設定儲存在權限系統中。在 Android 13 之前,此設定儲存在通知系統中。因此,OEM 必須將有關是否允許應用程式傳送通知的現有通知資料從通知系統遷移到執行時間權限系統。 OEM 還必須維護通知系統中的現有 API,以便向應用程式開發人員顯示這些資料。

通知和權限系統的變更基於使用者通知行為的選擇加入模型,並在實施指南部分中進行了描述。

選擇加入模型中使用者通知的行為

下表說明了運行 Android 13 的裝置上各種應用版本的通知行為:

Android 13 裝置面向 Android 13 或更高版本的應用定位低於 Android 13 的版本的應用
新安裝在應用程式提示之前,通知將被封鎖。

應用程式控制何時請求許可。

在作業系統提示之前,通知將被封鎖。

首次運行應用程式時會請求許可。

現有應用程式(升級)在應用程式提示之前,允許發送通知。

臨時許可將被授予,直到應用程式在第一次排位賽中提出要求為止。

在作業系統提示之前,允許發送通知。

在首次運行應用程式之前會授予臨時權限。

實施指南

參考實作請參考通知服務權限服務策略服務。若要實現預設權限處理程序的異常,請參閱執行時間權限

在實施過程中,針對針對 Android 13 或更低版本 SDK 的應用程序,請遵循以下有關使用者通知行為的準則:

  • Android 13 裝置上新安裝的應用程式不得在未經使用者批准權限提示的情況下發送通知。
    • 如果應用程式的目標版本為 Android 13 及更高版本,則必須封鎖通知,直到應用程式發出提示為止,因為應用程式控制何時以及是否請求用戶許可。
    • 如果應用程式的目標版本低於 Android 13,則必須封鎖通知,直到作業系統提示為止。作業系統必須在應用程式首次運行時顯示權限提示。
  • 升級到 Android 13 之前裝置上存在的任何應用程式或透過備份和復原復原的任何應用程式都必須允許發送通知,直到用戶第一次從該應用程式啟動活動。

    • 對於適用於 Android 13 及更高版本 SDK 的應用,如果使用者之前未在應用程式或NotificationChannel層級為此應用自訂通知設置,請撤銷臨時權限授予。然後,應用程式必須先徵求用戶的許可,然後才能繼續發送通知。

      如果針對 Android 13 的升級應用程式目前沒有透過臨時升級授權取得通知權限,且使用者至少啟動過一次該應用程式,則該應用程式必須先顯示通知權限提示,然後才能允許執行任何其他前台服務。

    • 對於目標 SDK 版本低於 Android 13 的應用,請在應用程式建立至少一個NotificationChannel攔截第一個 Activity 啟動,以顯示權限提示,詢問使用者是否希望從應用程式接收通知。

      如果使用者先前在升級裝置上或要恢復到裝置的備份中為應用程式或NotificationChannel層級自訂了通知設置,則必須使用FLAG_PERMISSION_USER_SET標誌將應用程式層級設定遷移到權限系統中。除非應用程式明確要求,否則不得向使用者顯示進一步的通知權限提示。

  • Android 13 裝置和早期作業系統版本的裝置之間的備份和復原必須向後和向前相容。從 Android 13 裝置產生的備份資料必須還原到早期作業系統版本,而早期作業系統版本的備份資料必須還原到 Android 13 裝置。

  • 與正在進行的媒體播放相關的媒體通知必須免除通知權限。

驗證通知和權限系統的更改

若要驗證實施,請執行以下測試: