選擇加入通知的通知權限

Android 13 中的通知使用選擇加入模型,這與以前使用選擇退出模型的 Android 版本不同。在 Android 13 中,所有應用在發送通知提示之前都必須徵求用戶的許可。此模型有助於減少通知中斷,最大限度地減少信息過載,並幫助用戶根據對他們來說重要的內容來控制顯示哪些通知。為了支持選擇加入模型,OEM 必須對通知和運行時權限系統進行更改。

本頁介紹了 OEM 必須實施哪些內容才能支持此更改以及如何驗證實施。

實施選擇加入通知的更改

從 Android 13 開始,應用必須在發送通知之前通過向系統請求android.permission.POST_NOTIFICATION運行時權限來聲明發送通知的意圖。

在 Android 13 及更高版本中,確定應用是否可以向用戶發送通知的設置存儲在權限系統中。在 Android 13 之前,此設置存儲在通知系統中。因此,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 設備。

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

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

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