Android 13 (API 級別 33) 以上版本支援
執行階段權限,用於傳送
非豁免 (包括前景服務 (FGS)) 通知
從應用程式:
POST_NOTIFICATIONS
。
這項變更有助使用者專注處理最重要的通知
具體做法是指示 Kubernetes 建立並維護
一或多個代表這些 Pod 的物件
我們強烈建議您盡快指定 Android 13 以上版本,才能享有這項功能的額外控管功能和彈性。如果繼續指定 12L (API 級別 32) 以下版本, 因為在應用程式的執行情境中要求權限,就能更有彈性 功能
宣告權限
如要透過應用程式要求新的通知權限,請更新應用程式: 並指定 Android 13 並完成類似的程序 要求其他執行階段權限。 。
您需要的權限 在應用程式的資訊清單檔案中進行宣告 出現在以下程式碼片段中:
<manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest>
使用者在權限對話方塊中的選擇會決定應用程式功能
在這個對話方塊中,使用者可進行下列操作:
以下各節說明應用程式的行為 (根據 所需費用
使用者選取「允許」
如果使用者選取「允許」選項,應用程式就能執行以下操作:
- 傳送通知。所有語言 通知管道 。
- 發布與前景相關的通知 服務。這些 通知會顯示在 通知導覽匣。
使用者選取「不允許」
如果使用者選取「不允許」選項,應用程式就無法傳送 通知,除非符合豁免條件。所有語言 通知管道會遭到封鎖, 角色。這種情況類似於使用者在系統設定中手動關閉應用程式的所有通知。
注意:如果應用程式指定 12L 以下版本 然後使用者輕觸「不允許」,即使系統只傳回一次,系統也不會提示使用者 ,直到發生以下任一情況為止:
- 使用者解除安裝應用程式,然後再重新安裝。
- 您將應用程式更新為指定 Android 13 以上版本。
使用者未從對話方塊選取任何選項
如果使用者滑開對話方塊,也就是沒有選取「允許」或「不允許」,則通知權限狀態維持不變。
對新安裝應用程式的影響
如果使用者在搭載 Android 13 的裝置上安裝應用程式 以上版本,應用程式的通知功能預設為關閉。應用程式必須等待 到 傳送通知,直到您要求新權限和使用者 授予應用程式該權限。
顯示權限對話方塊的時機,視應用程式的目標 SDK 版本而定:
- 如果應用程式指定 Android 13 以上版本,則應用程式已完成 控制權限對話方塊的顯示時機 請利用這個機會,向使用者說明應用程式需要這項權限的原因,並鼓勵他們授予權限。
- 如果應用程式指定 12L (API 級別 32) 以下版本,系統會顯示 應用程式首次啟動活動的權限對話方塊 建立通知管道,或 應用程式會啟動一項活動,並建立其第一個通知管道。這個 通常是應用程式啟動時。
對現有應用程式更新版本的影響
為了盡量減少與通知權限相關的干擾情形,當使用者將裝置升級至 Android 13 以上版本時,系統會自動針對所有符合資格的應用程式預先授予這項權限。也就是說,這類應用程式可以繼續傳送通知給使用者,而使用者也不會看到執行階段權限提示。
預先授予權限的資格規定
為了讓您的應用程式符合自動預先授予權限的資格,應用程式必須具有現行的通知管道,且未在搭載 12L 以下版本的裝置上遭到使用者明確停用通知功能。
如果使用者在搭載 12L 以下版本的裝置上停用應用程式的通知功能,當裝置升級至 Android 13 以上版本時,通知功能將持續維持停用狀態。
豁免資格
這個部分包含不受 通知權限行為變更。在 Android 13 (API 級別 33) 以上版本中, 如果使用者拒絕授予通知權限,仍會看到相關通知 前景服務 工作管理員 但不會出現在 通知導覽匣。
媒體工作階段
與以下項目相關的通知: 媒體工作階段為 不受這項行為變更的影響。
設定為自行管理通話的應用程式
如果您的應用程式設定為自行管理通話,
不需要 POST_NOTIFICATIONS
權限。
使用
Notification.CallStyle
通知樣式。
系統會判定您的應用程式已設為自行管理手機 就會呼叫函式,如下所示:
- 宣告
MANAGE_OWN_CALLS
權限。 - 實作
ConnectionService
敬上 存取 API - 透過呼叫,向裝置的電信供應商註冊
registerPhoneAccount()
。
測試應用程式
您可以評估通知權限在適用情況下對應用程式的影響 首次在搭載 Android 13 以上版本的裝置上使用。 追蹤 可以使用這組 Android Debug Bridge (ADB) 指令 以便模擬最常見的使用者選項和裝置升級程序 不必重設測試裝置:
應用程式是新安裝在搭載 Android 13 以上版本的裝置上:
adb shell pm revoke PACKAGE_NAME android.permission.POST_NOTIFICATIONS
adb shell pm clear-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-set
adb shell pm clear-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-fixed
如果在以下裝置上安裝應用程式,使用者將保持啟用通知: 搭載 12L 以下版本的裝置,然後 升級至 Android 13 以上版本:
adb shell pm grant PACKAGE_NAME android.permission.POST_NOTIFICATIONS
adb shell pm set-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-set
adb shell pm clear-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-fixed
當使用者手動停用裝置的通知功能, 搭載 12L 以下版本的裝置,然後 升級至 Android 13 以上版本:
adb shell pm revoke PACKAGE_NAME android.permission.POST_NOTIFICATIONS
adb shell pm set-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-set
adb shell pm clear-permission-flags PACKAGE_NAME \ android.permission.POST_NOTIFICATIONS user-fixed
最佳做法
本節說明幾種在應用程式中使用新通知權限最有效的方式。
更新應用程式的目標 SDK 版本
為了讓應用程式有更多彈性,更靈活地調整權限對話方塊的顯示時機: 請更新您的應用程式,指定 Android 13 以上版本。
等候顯示通知權限提示
要求使用者授予任何權限前,請先讓他們熟悉 互動情形
新使用者可能會想探索應用程式,並且親自體驗 優點你可以 觸發權限提示 吸引使用者動作以下列舉幾個範例 顯示通知權限提示的好時機:
- 使用者輕觸「快訊鈴鐺」按鈕。
- 使用者選擇追蹤他人的社群媒體帳戶。
- 使用者提交餐點外送訂單。
圖 1 顯示要求通知的建議工作流程
權限。除非
shouldShowRequestPermissionRationale()
敬上
會傳回 true
,則應用程式不需要顯示中間螢幕,也就是
標題文字為「接收通知!」。
或者,您也可以設定在使用者有機會 熟悉您的應用程式舉例來說,您可能等到 第三次或第四次啟動應用程式
在相關情境中要求權限
在應用程式中要求通知權限時,請在正確的層級中 以便明確瞭解通知的用途,以及 以及使用者選擇啟用的理由舉例來說,電子郵件應用程式可能提供以下選項: 在每次有新電子郵件時傳送通知,或只傳送通知給使用者 僅限收件者。
請善用這個機會公開說明您的意圖,這樣使用者將通知權限授予應用程式的可能性也會提高。
檢查應用程式是否能傳送通知
在應用程式傳送通知前,請先確認使用者是否已啟用
通知應用程式方法是呼叫
areNotificationsEnabled()
。
以負責任的態度使用權限
獲準傳送通知後,請記得使用這項權限 過度執著於語意可能會讓我們 忘記核心目標,也就是負責任地開發技術使用者可以查看應用程式的每日通知數量 傳送和 他們可以撤銷 。