在推送权限提示前显示应用内消息
预授权应用内消息是在系统推送权限提示出现之前显示给用户的消息。您可以用它来解释为什么推送通知很有用,然后在用户在您的应用内消息中表示同意后,再请求权限。
在 iOS 上,每次安装只会显示一次系统提示。如果用户点击 不允许,应用将无法再次显示该提示。推送功能将保持关闭,直到用户在“设置”中开启通知。先通过应用内消息询问,意味着您只将那唯一一次的请求机会用在已经对您表示同意的用户身上。
如果您想在控制面板中设计一个跨平台的 HTML 提示,并通过事件在 iOS 和 Android 上触发它,请使用本指南。
如果出现以下情况,请使用其他指南:
- 您的团队将在应用代码中发布一个仅限 iOS 的提示(无法在控制面板中编辑,也不是由 Journey 事件启动):iOS 推送入门。
- 您需要重新吸引已经禁用推送或从未授权的用户(仅用于恢复,而非首次请求):创建选择退出恢复弹窗。
开始之前
Anchor link toPushwoosh 本身从不显示系统权限对话框。在控制面板中无需进行任何配置来延迟它。只有当用户点击您应用内消息中的接受按钮时,该对话框才会出现。
请与您的开发团队合作完成以下先决条件:
- 确认应用没有提前请求推送权限(包括首次启动时)。
- 商定一个自定义事件名称及其触发时机,例如在用户引导完成后立即触发
onboarding_completed,或者当用户点击需要通知的功能时触发locked_feature_tapped。您的团队将使用该名称调用postEvent。了解更多关于事件的信息。
构建应用内消息
Anchor link to本指南中的按钮运行于自定义 JavaScript,这仅在基于 HTML 的应用内消息模板中有效。 原生应用内消息模板 无法运行此代码,因此请勿使用 Native in-app 来构建模板。
-
前往 内容 → 应用内消息,然后点击 创建应用内消息 以直接打开内置编辑器。
-
输入模板名称。
-
在右侧面板中打开 模块 选项卡,并添加一个文本或标题模块,用以说明开启推送的好处。

- 为接受操作添加一个按钮模块,为拒绝操作添加另一个。两个按钮都可以在应用内消息加载后立即运行其 JavaScript,无需等待其他任何内容。

- 选择接受按钮,并将 操作类型 设置为 自定义 Javascript。
- 仅将以下代码粘贴到 onClick 中。
pushwoosh.registerForPushNotifications();pushwoosh.closeInApp();- 选择拒绝按钮,并将 操作类型 设置为 自定义 Javascript。
- 仅将此代码粘贴到 onClick 中:
pushwoosh.closeInApp();保存模板后:
- 接受按钮: 系统权限对话框出现。
- 拒绝按钮: 应用内消息关闭,不出现系统对话框。

<button onclick="pushwoosh.registerForPushNotifications(); pushwoosh.closeInApp();">Enable notifications</button><button onclick="pushwoosh.closeInApp();">Not now</button>为已选择加入的用户跳过提示
Anchor link to添加一个显示条件,这样即使后续的触发器再次显示该模板,应用内消息也会对已经授权推送的用户隐藏。推送同意状态来自 Push Alerts Enabled,这是一个默认的布尔标签,SDK 会根据设备的系统通知权限进行设置。
- 在 图层 面板中,点击第一个模块,然后按住 Shift 键点击其他所有模块,以将整个模板一起选中。
- 打开 有条件地显示此模块。您在下面设置的规则将一次性应用于所有选中的模块。
- 将规则设置为 Push Alerts Enabled 为 false。
- 在 如果值未知 下,选择 显示模块。一个尚未有标签值的全新安装应该仍然能看到该提示。

在请求权限前触发应用内消息
Anchor link to一个尚未完成注册的设备没有推送令牌,因此您无法通过推送通知触达它。请通过您与开发团队商定的自定义事件来触发应用内消息。
- 请您的开发团队在您想要询问权限的时刻,使用商定的事件名称调用
postEvent。 - 前往 Customer Journey Builder → 创建营销活动,并以一个监听该事件的基于触发器的入口开始。
- 添加一个应用内消息元素,并选择您构建的模板。了解更多关于通过 Customer Journey 发送应用内消息的信息。
- 当您准备好显示提示时,启动 Journey。
示例场景:在用户引导后立即请求推送权限
Anchor link to假设您希望在用户完成用户引导的瞬间请求推送权限,而不是打断教程本身。
- 创建事件
onboarding_completed,并确认您的开发团队在用户完成用户引导流程时触发该事件。了解更多关于创建事件的信息 - 使用基于触发器的入口,将
onboarding_completed设置为您的 Journey 的触发器。 - 添加一个应用内消息元素,并选择您构建的预授权模板。
- 启动 Journey。
每个完成用户引导的用户都会看到一次该提示。来自为已选择加入的用户跳过提示的显示条件会阻止它对已经授权推送的用户再次触发。
检查是否有效
Anchor link to系统提示是一次性的,因此测试两个按钮需要两台尚未授权或拒绝推送的测试设备(或两次全新安装),每个按钮一台。在每台设备上:
- 从应用中触发商定的事件。
- 重新打开应用,并确认 Journey 投递了您的应用内消息。
然后:
- 在第一台设备上,点击接受按钮,并确认系统权限对话框出现。
- 在第二台设备上,点击拒绝按钮,并确认应用内消息关闭且没有系统对话框。
- 在下次打开应用后,确认 Push Alerts Enabled 与每台设备上的权限状态相匹配。
为仍禁用推送的用户构建分群
Anchor link to筛选 Push Alerts Enabled 来查找拒绝或从未授予权限的用户。当推送尚未被允许时(包括在用户看到系统对话框之前),该标签为 false,因此一个预授权设备已经属于这个分群。
- 在分群构建器中,按 Push Alerts Enabled 标签添加一个筛选器。
- 将操作符设置为 为 false。了解更多关于按标签构建分群的信息。
使用此分群来阻止向仍未启用推送的用户重复发送提示,或运行定期的赢回 Journey。请参阅选择退出恢复分群以获取使用相同标签的实际示例。
另请参阅
Anchor link to- iOS 推送入门:这种跨平台 HTML 方法的原生、仅限 iOS 的替代方案。
- 创建选择退出恢复弹窗:恢复已经禁用推送的用户(非首次请求),使用相同的 Push Alerts Enabled 标签。
- 使用 JavaScript 创建应用内消息:完整的 JavaScript 桥接参考。