Push Permission Status 标签
Push Permission Status 是一个默认标签,用于存储设备上推送通知权限的状态。您可以用它构建可触达性细分,区分简单的开/关标志无法区分的用户,例如仍可请求权限的用户和已经拒绝的用户。
Push Permission Status 的值
Anchor link to该标签是 String 类型的标签,为每个应用中的每台设备存储以下值之一。每个平台只上报其中的一部分。请参阅各平台上报的值。
| 值 | 含义 |
|---|---|
not_determined | 用户尚未回应权限提示,因此应用仍可请求权限 |
granted_explicit | 用户在权限提示中允许了通知 |
granted_default | 通知已被允许,但不是通过回应 Pushwoosh SDK 的权限提示。仅限 Android |
provisional | 通知被临时授权(provisional)。通知会静默进入通知中心,没有提醒、声音或横幅。仅限 iOS |
ephemeral | 通知在有限时间内被允许,例如用于 App Clip。仅限 iOS |
denied | 用户关闭了通知,无论是在提示中还是之后在设备或浏览器设置中 |
unsupported | 浏览器无法接收 Web 推送通知。仅限 Web |
在 tvOS 和 macOS 上,以及 SDK 版本低于以下版本的设备上,该标签没有值:
| 平台 | 最低 SDK 版本 |
|---|---|
| iOS | 7.2.10 |
| Android | 6.17.0 |
| Web | 3.95.0 |
标签何时更新
Anchor link toSDK 会在以下时刻上报当前状态:
- 每次打开应用时。
- 设备注册推送通知时。
- 用户回应权限提示之后立即上报。
如果用户在设备或浏览器设置中更改权限,标签会稍后更新,具体取决于平台:
| 平台 | 标签何时更新 |
|---|---|
| iOS | 下次打开应用时 |
| Android | 下次打开应用或应用回到前台时 |
| Web:基于 Chromium 的浏览器和 Firefox | 浏览器报告更改后立即更新 |
| Web:Safari | 下次加载页面时 |
当请求不包含状态时(例如来自较旧的 SDK 版本),标签会保留其最后一个值。
各平台上报的值
Anchor link to每个平台都通过自己的系统 API 读取权限,因此不同平台的值集合有所不同。
iOS SDK 将应用的系统授权状态直接映射到该标签。
| iOS 授权状态 | Push Permission Status |
|---|---|
| Not determined | not_determined |
| Authorized | granted_explicit |
| Provisional | provisional |
| Ephemeral | ephemeral |
| Denied | denied |
Android
Anchor link toAndroid 13 及更高版本要求用户在权限提示中允许通知。更早的版本在安装后默认允许通知,因此 Android SDK 会区分明确的回应和默认授权:
granted_explicit:在 Android 13 或更高版本上,且应用的目标版本为 Android 13(API 级别 33)或更高时,用户在 Pushwoosh SDK 显示的权限提示中允许了通知。granted_default:通过其他任何方式允许了通知。包括 Android 12 及更早版本、目标 API 级别低于 33 的应用、SDK 首次检查时权限已被允许的情况,以及通过您自己的提示或系统设置允许的权限。not_determined:在 Android 13 及更高版本上,通知处于关闭状态,且用户尚未回应提示,包括用户未做选择就关闭了提示的情况。denied:用户拒绝了提示,或通知之前被允许后又被关闭。在 Android 12 及更早版本上,任何关闭了通知的设备都会上报denied。
浏览器只有在用户点击允许后才会允许通知,因此 Web 设备永远不会上报 granted_default。
| 浏览器权限 | Push Permission Status |
|---|---|
尚未询问(default) | not_determined |
已允许(granted) | granted_explicit |
已阻止(denied) | denied |
| 浏览器不支持 Web 推送 | unsupported |
构建可触达性细分
Anchor link to在一个 Push Permission Status 筛选条件中,使用 为以下之一 运算符组合多个值,即可按触达方式定位用户。详细了解如何按标签构建细分。
| 细分 | 筛选条件 | 使用方式 |
|---|---|---|
| 能看到推送提醒的用户 | 为以下之一 granted_explicit、granted_default | 发送时效性强的推送通知 |
| 仅静默送达 | 为以下之一 provisional、ephemeral | 预期可见度较低,并邀请这些用户允许完整通知 |
| 仍可请求权限的用户 | 为以下之一 not_determined | 在推送权限提示前显示应用内消息 |
| 已拒绝的用户 | 为以下之一 denied | 通过电子邮件、短信或应用内消息触达他们,或运行选择退出恢复弹窗 |
| 不支持 Web 推送的浏览器 | 为以下之一 unsupported | 为这些 Web 用户使用其他渠道 |
要查找尚未上报该标签的设备,请使用 未设置 运算符。这些设备运行的是较旧的 SDK 版本,因此请改用 Push Alerts Enabled 来定位它们。关于两个标签的区别,请参阅 Push Permission Status 与 Push Alerts Enabled。
Push Permission Status 与 Push Alerts Enabled
Anchor link to这两个标签回答的是不同的问题:
- Push Alerts Enabled(Boolean):此设备现在能否显示推送提醒?
- Push Permission Status(String):权限处于什么状态?它能区分 Push Alerts Enabled 都上报为
false的状态,例如从未询问和已拒绝。
下表比较了两个标签如何上报常见状态。
| Push Alerts Enabled | Push Permission Status | |
|---|---|---|
| 类型 | Boolean | String |
| 从未请求过权限 | false | not_determined |
| 拒绝了权限 | false | denied |
| iOS 上的临时授权或限时权限 | 取决于提醒、声音和角标设置 | provisional 或 ephemeral |
| 明确授权或默认授权 | 设备显示提醒时为 true | granted_explicit 或 granted_default |
| 使用较旧 SDK 版本的设备 | 所有 SDK 版本都会上报 | 未设置 |
根据您需要回答的问题选择标签:
- 如需快速统计所有 SDK 版本中已选择接收通知的用户数,请使用 Push Alerts Enabled。
- 当下一步取决于用户无法触达的原因时,请使用 Push Permission Status。例如,向从未被询问过的用户请求权限,不打扰已拒绝的用户。