Skip to main content
推送权限提示是操作系统弹出的对话框,用于询问用户是否允许您的应用发送推送通知。用户的回答决定了您能否向他们发送以横幅形式展示、显示在锁屏上并播放声音的通知。
并排显示的 iOS 与 Android 系统权限提示

显示系统权限提示的 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 上一种常见的高效组合是:开启临时通知以立即获得静默触达,在价值时刻展示软提示,同时在偏好中心暴露一个编程式提示供想要主动订阅的用户使用。
应用内消息引导用户看到系统推送权限提示

应用内软提示,随后是系统权限提示。


前提条件


设置应用内推送权限提示

1

移除任何自动权限提示

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

创建或编辑应用内消息

前往 Messages > In-App,然后执行以下任一操作:
  • 编辑默认的 Push Permission Prompt 模板,或
  • 点击 New Message 创建您自己的消息。
OneSignal 应用内消息列表,展示 Push Permission Prompt 模板

编辑默认的 Push Permission Prompt 模板或创建您自己的模板。

将受众设置为 Show to all users。OneSignal 会根据 Push Permission Prompt 点击操作自动过滤这条消息,仅向未订阅推送的用户显示。
受众设置配置为向所有用户显示

将受众设置为 Show to all users。Push Permission Prompt 点击操作会自动过滤为仅面向未订阅用户。

3

自定义消息设计

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

用于创建推送选择加入消息的应用内消息块编辑器。

4

添加 Push Permission Prompt 点击操作

向消息中的任意按钮或图像添加 Push Permission Prompt 点击操作。点击时会显示系统权限提示。
点击操作下拉菜单,已选中 Push Permission Prompt

向按钮添加 Push Permission Prompt 点击操作。

iOS 原生推送通知权限提示

由点击操作在 iOS 上触发的系统权限提示。

如果用户已经达到系统权限提示的最大拒绝次数(iOS 上一次,Android 上两次),点击操作会改为将他们引导到您应用的通知设置。这等同于在 SDK 中调用 requestPermission(fallbackToSettings: true)
带有 Push Permission Prompt 点击操作的应用内消息不会向已经允许通知的用户显示。
5

选择触发器

受众控制有资格看到消息,触发器控制它何时出现。目标是把提示触发在价值时刻:用户刚刚经历了值得收到通知的事情的那一刻。
应用内消息触发器配置面板

用于控制消息何时显示的触发器选项。

触发器选项,大致按转化率从低到高排列:
  • 应用打开时。 简单,但通常并非最佳。仅在应用价值可以在几秒内清晰展现时使用。
  • 在设定的会话时长之后。 一个不错的默认选项。等用户探索过应用之后再询问。
  • 在特定用户事件上。 转化率最佳。在高信号动作后触发,例如完成入门引导、收藏内容、关注话题或完成首次购买。
  • 以编程方式,使用应用内消息触发器 SDK 方法。可完全控制时机与上下文,包括在提示前综合多个信号。
例如,等到用户在应用中至少停留 5 分钟:
会话时长触发器设置为 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。

网页推送权限提示

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

应用内消息设置

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