跳转到主要内容
推送权限提示是操作系统弹出的对话框,用于询问用户是否允许您的应用发送推送通知。用户的回答决定了您能否向他们发送以横幅形式展示、显示在锁屏上并播放声音的通知。
并排显示的 iOS 与 Android 系统权限提示
请把提示当作一项策略来对待。系统提示只能显示有限次数:iOS 上仅一次Android 上(Google 与华为)两次。如果用户拒绝了每一次请求,就必须在系统设置中手动重新启用通知。一次时机不佳的提示可能会永久让您失去一位订阅者,而可触达受众规模是决定每一次推送营销活动 ROI 的最大杠杆。 AppleGoogle 都建议在请求权限之前先向用户说明通知的价值。缺少上下文时,用户更容易拒绝;而在 iOS 上,被拒绝后的提示无法再次显示。 本指南针对移动应用推送。有关网页推送,请参阅网页推送权限提示

提高选择加入率的策略

推送选择加入率更多取决于何时以及如何询问,而不是系统提示本身说了什么。把提示作为策略来运营的应用,其表现始终优于在首次启动时就直接弹出提示的应用。下面的原则是各个构建单元,随后的示例策略展示了如何把它们组合成一份具体的方案。

核心原则

  • 在价值时刻之后再询问。 等到用户刚刚经历了一件值得收到通知的事情:完成入门引导、收藏内容、关注话题、下单,或结束首次会话。在用户还没弄清楚应用能做什么的首次启动时提示,是低选择加入率最主要的原因。
  • 在 iOS 上从临时通知开始。 临时通知会静默送达通知中心而无需任何提示,让用户基于真实的内容决定是否保留,而不是依据一个假设性的说明。这在 iOS 上通常是转化率最高的路径,应作为默认起点。
  • 用应用内软提示说明价值。 软提示是一条 OneSignal 应用内消息,告知用户您会发送什么类型的通知以及它们为何重要。关闭软提示不会消耗系统提示的次数,因此您可以稍后再向尚未准备好的用户重新询问。
  • 重新询问关闭了软提示的用户,而不是系统提示。 将软提示配置为按一定节奏(例如每 2 weeks)重新出现。尚未准备好的用户会获得再次决定的机会,同时不会耗尽系统提示的次数。
  • 持续迭代文案与时机。 上线软提示后,观察消息报表中的转化率,然后调整触发器、文案与频率。对时机与文案的小幅调整常常能把选择加入率提升几十个百分点。

示例:新用户引导选择加入策略

本示例把用于在 iOS 上快速获得触达的临时通知,与在价值时刻出现、用于完整选择加入的软提示结合起来。请将其作为起点,并根据自己的应用调整通知类型与价值时刻。对于 Android 与华为应用,请跳过阶段 1,直接从阶段 2 开始。 阶段 1:iOS 静默触达
  1. 在 OneSignal 仪表板中前往 Settings > Apple iOS > Advanced Configuration > Enable iOS 12 direct to history,开启临时授权。
  2. 在用户使用应用的第一周内发送 2 到 3 条高质量通知。请选择能够证明订阅价值的内容:个性化推荐、突发新闻提醒或每周摘要。用户会在通知中心静默收到它们,无需任何提示。
阶段 2:在价值时刻实现转化
  1. Messages > In-App 中创建一条软提示,引用用户已经体验到的价值。示例标题:“在锁屏上获取突发新闻提醒。”
  2. 将受众设置为 Show to all usersPush Permission Prompt 点击操作会自动过滤为仅面向未订阅用户。
  3. 在高信号事件上触发消息:打开或与一条临时通知交互、关注某个话题、将商品加入购物车,或 5 分钟的会话时长。
  4. 在 CTA 按钮上添加 Push Permission Prompt 点击操作。
  5. 将计划设置为 Multiple times,每用户最多 20 次,两次显示之间间隔 2 weeks(大约 10 个月的重复提示周期)。
阶段 3:衡量与迭代
  1. 在 1 到 2 周之后,查看消息报表中”提示到选择加入”的转化率。
  2. 使用 SDK 监听器对完整漏斗进行埋点:软提示点击、关闭以及系统提示的最终结果。将这些事件转发到您的分析工具。
  3. 依据数据每次只调整一个变量(触发事件、标题、CTA 文案,或两次展示之间的间隔)。
在用户刚刚打开或与一条临时通知交互后立即触发软提示。他们已经从您的通知中体验到了价值,这会显著提升系统提示上”Allow”的比率。

选择合适的方式

您有三种方式可以借助 OneSignal 增长推送订阅者规模。大多数 iOS 应用应把临时通知与应用内软提示结合使用;大多数 Android 应用应从软提示入手。
方式平台工作原理使用场景
应用内软提示(推荐)iOS、Android、华为配置一条带有 Push Permission Prompt 点击操作的 OneSignal 应用内消息。点击按钮会弹出系统提示,而关闭应用内消息不会消耗任何次数,因此稍后可以再次询问。默认选择。无需发布新版本即可设计、排期、定向以及重新展示提示。
编程式提示iOS、Android、华为在应用代码中调用 requestPermission()optIn(),系统提示会立即出现。由应用自身控制触发时机的自定义流程:偏好中心、个人资料页,或触发提示时机合适的应用内事件。
临时通知iOS在 OneSignal 仪表板中开启。用户会在通知中心静默收到通知,无需任何提示,并可通过点击 Keep 转化为完整订阅者。iOS 用户引导以及低摩擦触达。与软提示搭配可将静默订阅者转化为完整推送订阅者。
三种方式可以组合使用。iOS 上一种常见的高效组合是:开启临时通知以立即获得静默触达,在价值时刻展示软提示,同时在偏好中心暴露一个编程式提示供想要主动订阅的用户使用。
应用内消息引导用户看到系统推送权限提示

前提条件


设置应用内推送权限提示

1

移除任何自动权限提示

在开始之前,请确保您的应用没有在自动触发系统权限提示:
  • 移除应用启动时调用的 requestPermission()optIn()
  • 移除对 requestAuthorizationWithOptions 的原生 iOS 调用,以及任何直接生成推送令牌的代码。
  • 移除对 requestPermissions 的 Android 调用,以及任何直接生成推送令牌的代码。
2

创建或编辑应用内消息

前往 Messages > In-App,然后执行以下任一操作:
  • 编辑默认的 Push Permission Prompt 模板,或
  • 点击 New Message 创建您自己的消息。
OneSignal 应用内消息列表,展示 Push Permission Prompt 模板
将受众设置为 Show to all users。OneSignal 会根据 Push Permission Prompt 点击操作自动过滤这条消息,仅向未订阅推送的用户显示。
受众设置配置为向所有用户显示
3

自定义消息设计

个性化外观、感觉和文案,使其贴合您的应用。告诉用户他们会收到什么类型的通知,以及这些通知的价值。有关详情,请参阅使用拖放设计应用内消息使用 HTML 设计应用内消息
带有推送选择加入提示的应用内消息块编辑器
4

添加 Push Permission Prompt 点击操作

向消息中的任意按钮或图像添加 Push Permission Prompt 点击操作。点击时会显示系统权限提示。
点击操作下拉菜单,已选中 Push Permission Prompt
iOS 原生推送通知权限提示
如果用户已经达到系统权限提示的最大拒绝次数(iOS 上一次,Android 上两次),点击操作会改为将他们引导到您应用的通知设置。这等同于在 SDK 中调用 requestPermission(fallbackToSettings: true)
带有 Push Permission Prompt 点击操作的应用内消息不会向已经允许通知的用户显示。
5

选择触发器

受众控制有资格看到消息,触发器控制它何时出现。目标是把提示触发在价值时刻:用户刚刚经历了值得收到通知的事情的那一刻。
应用内消息触发器配置面板
触发器选项,大致按转化率从低到高排列:
  • 应用打开时。 简单,但通常并非最佳。仅在应用价值可以在几秒内清晰展现时使用。
  • 在设定的会话时长之后。 一个不错的默认选项。等用户探索过应用之后再询问。
  • 在特定用户事件上。 转化率最佳。在高信号动作后触发,例如完成入门引导、收藏内容、关注话题或完成首次购买。
  • 以编程方式,使用应用内消息触发器 SDK 方法。可完全控制时机与上下文,包括在提示前综合多个信号。
例如,等到用户在应用中至少停留 5 分钟:
会话时长触发器设置为 5 分钟
6

计划与频率

控制消息出现的频率:
  • Only once. 对当次未准备好的用户来说,转化机会较低。
  • Every time conditions are met. 过于激进,可能会打扰用户。
  • Multiple times(推荐)。 设置每用户最大次数以及两次显示之间的间隔。例如,20 次显示配合 2 weeks 的间隔,可以以较高的频率对未订阅用户重复提示约 10 个月。对于低粘性或工具类应用,如果两周的节奏显得过于紧迫,可以放宽间隔(例如 30 days60 days)。
计划配置,显示最大展示次数与展示间隔

以编程方式显示权限提示

您可以使用 requestPermission()optIn() SDK 方法手动触发系统权限提示。这在以下自定义流程中非常有用:
  • 偏好中心
  • 用户资料屏幕。
  • 特定的应用内事件。
requestPermission() 传入 fallbackToSettings: true,这样已经拒绝过的用户会被重定向到应用的通知设置,而不是静默地什么都不做。
如果一个订阅已经在 SDK 层面通过 optOut() 退订(在订阅记录中显示为 notification_types: -2),仅调用 requestPermission() 不会改变订阅状态。请改用 optIn(),它会请求权限清除退订状态。

使用 iOS 临时通知

临时推送通知在 iOS 12 中引入。它们允许您在不显示权限提示的情况下将通知送达通知中心。用户会看到您应用发出的真实内容,并基于这一体验决定是保留、静音,还是关闭通知。 为什么它作为策略有效:
  • 没有会失败的系统提示。您可以在用户的第一次会话就开始触达他们,无需任何前置的选择加入决定。
  • 用户基于真实价值而非假设性说明做决定。
  • 之后您仍可以展示软提示,把临时用户转化为拥有横幅、声音以及锁屏提醒的完整推送订阅者。
取舍。 临时通知的可见度较低。它们仅静默送达通知中心:没有横幅、没有声音、也没有锁屏提醒,直到用户升级为完整权限。
带有 Keep 与 Turn Off 选项的 iOS 临时推送通知
要开启临时授权,请在 OneSignal 仪表板中前往 Settings > Apple iOS > Advanced Configuration,勾选 Enable iOS 12 direct to history。有关完整流程,包括用户如何与临时通知交互,以及它们如何与标准提示组合使用,请参阅 iOS 临时推送通知
如需将临时通知与在价值时刻出现的软提示结合的具体方案,请参阅示例:新用户引导选择加入策略

跟踪推送权限和提示结果

您可以将这些 SDK 事件转发到您选择的后端或分析工具。

常见问题

如果用户拒绝系统权限提示会发生什么?

在 iOS 上,拒绝系统权限提示会永久禁用您应用的推送通知,且提示无法再次显示。在 Android 上,用户还有一次机会(合计两次)。所有机会用完之后,用户必须在其设备的设置 > 通知中手动重新启用通知。Push Permission Prompt 点击操作以及 requestPermission(fallbackToSettings: true) 都会通过将用户直接引导到通知设置来处理这种情况。

我可以自定义原生系统权限提示吗?

不可以。iOS 和 Android 上的系统权限提示由操作系统控制,无法自定义。您只能自定义软提示(在其之前显示的应用内消息)。使用软提示来说明通知的价值、设定预期,并提升在系统提示上获得”Allow”的可能性。

我还能向使用临时通知的用户显示提示吗?

可以,而且您应当这样做。临时通知用户是软提示的最佳候选对象,因为他们已经真实地看到过您应用的通知。推荐的模式请参阅使用 iOS 临时通知。将软提示的时机安排在用户刚打开或与临时通知交互之后。

如何重新提示之前拒绝了推送的用户?

一旦系统权限提示已用尽(iOS 上一次,Android 上两次),您就无法再次显示它。请改用 requestPermission(fallbackToSettings: true) SDK 方法,或在应用内消息上使用 Push Permission Prompt 点击操作。两者都会打开您应用的通知设置,让用户可以手动启用通知。请搭配一条说明通知价值的应用内消息一起使用。

所有 Android 版本都需要系统权限提示吗?

不需要。仅 Android 13(API 级别 33)及以上版本需要。Android 13 引入了运行时通知权限,要求用户对推送通知给出明确同意。
  • 发布时间: 2022 年 8 月(Pixel 设备)。
  • 目标 SDK 要求: 自 2023 年 8 月 31 日起,Google Play 上的所有新应用和更新必须以 API 级别 33 或更高版本为目标。
  • 来源: Google 的通知权限开发者指南
在 Android 12 及更低版本上,应用在安装时会自动被授予通知权限。

iOS 临时推送通知

在 iOS 12+ 上无需事先弹出权限提示即可将通知发送到通知中心。

移动 SDK 参考

requestPermissionoptIn、权限观察者以及应用内消息点击监听器 API。

网页推送权限提示

配置软提示、下拉式提示以及原生网页推送权限请求。

应用内消息设置

在应用中启用应用内消息,以便运行软提示。