跳转到主要内容

为什么要使用推送权限提示?

要发送可以作为横幅显示、在锁屏上显示、播放声音等的推送通知,您的应用程序必须首先获得用户的许可。在 iOS、Android、华为、亚马逊和网页上,这涉及显示系统级权限提示。
iOS and Android system-level push permission prompts side by side
本指南适用于移动应用推送订阅者。对于网页推送,请参阅网页推送权限提示 前提条件: 一个 OneSignal 账户、一个已安装 OneSignal SDK 的移动应用,以及启用的应用内消息
iOS 只允许显示系统权限提示一次,Android 允许两次。如果用户拒绝,他们必须在系统设置中手动启用通知。一次时机不佳的提示可能会永久失去一个订阅者。
在 iOS 上,您也可以使用临时通知,它会悄悄地传送到通知中心而不提示用户——非常适合测试或低摩擦入门。
由于系统提示次数有限,AppleGoogle 都强烈建议在显示提示之前先说明通知的价值。您可以使用 requestPermission() SDK 方法随时触发提示,但如果没有适当的上下文,用户更可能拒绝——而在 iOS 上,被拒绝的提示将无法再次显示。 推荐的方法是”软提示”——一个引入请求的自定义应用内消息。如果用户接受,系统提示就会出现。如果他们拒绝,什么都不会发生——您可以稍后再次提问。
In-app message leading to system push permission prompt

设置应用内推送权限提示

1

移除任何自动权限提示

在开始之前,请确保您的应用没有自动触发原生推送提示:
  • 如果您在应用启动时调用 requestPermission()optIn() 方法,请将其移除。
  • 移除对 requestAuthorizationWithOptions 的原生 iOS 调用以及任何生成推送令牌的方法。
  • 移除对 requestPermissions 的 Android 调用以及任何生成推送令牌的方法。
另外,确保您在应用中使用了 OneSignal SDK 的最新版本
2

创建或编辑应用内消息

前往 消息 > 应用内,然后执行以下操作之一:
  • 编辑默认的推送权限提示模板,或
  • 点击新建消息来创建您自己的。
OneSignal in-app messages list showing the Push Permission Prompt template
将受众设置为显示给所有用户。OneSignal 会根据推送权限提示点击操作,自动过滤此消息,仅向未订阅推送的用户显示。
Audience setting configured to show to all users
3

自定义消息设计

个性化外观、感觉和措辞以适合您的应用。让用户知道他们会得到什么样的通知以及为什么它们有价值。有关详情,请参阅使用拖放设计应用内消息使用 HTML 设计应用内消息
In-app message block editor with a push opt-in prompt
4

添加推送权限提示点击操作

向消息中的任何按钮或图像添加 推送权限提示 点击操作。点击时,将显示系统提示。
Click action dropdown with Push Permission Prompt selected
iOS native push notification permission prompt
如果用户已经拒绝了权限,按钮将引导他们前往应用的通知设置。
具有”推送权限提示”操作的应用内消息不会向已经允许通知的用户显示。
5

选择触发器

受众控制谁有资格看到消息。触发器控制何时显示消息。
In-app message trigger configuration panel
您可以触发消息:
  • 应用打开时
  • 经过设定的会话时间后
  • 特定用户事件时
  • 以编程方式,使用应用内消息 SDK 方法完全控制时机和上下文
例如,等到用户在应用中至少停留 5 分钟:
Session duration trigger set to 5 minutes
6

计划和频率

控制消息出现的频率:
  • 仅一次 — 对于首次未准备好的用户,转化机会低。
  • 每次满足条件时 — 过于激进,可能会打扰用户。
  • 多次(推荐) — 设置较大的最大次数(例如 9999)以及查看间隔(例如 2 周)。这会定期重新提示未订阅的用户,而不会造成干扰。根据您的使用场景调整间隔。
Schedule configuration showing max displays and gap between views
更新您的消息并将其设为实时。监控您的统计数据并根据需要调整显示间隔。

以编程方式显示权限提示

您可以使用 requestPermission()optIn() SDK 方法手动触发推送权限提示。这对于自定义流程非常有用,例如:

跟踪推送权限和提示结果

使用应用内消息提示推送时,您可以使用应用内消息点击监听器跟踪点击操作。 如果应用内消息显示但用户未点击按钮,请使用应用内消息生命周期事件跟踪展示和关闭。 要跟踪系统级权限提示的结果,请使用推送权限监听器
您可以将这些 SDK 事件发送到您选择的后端或分析工具。

常见问题

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

在 iOS 上,拒绝系统提示会永久禁用您应用的推送通知——提示将无法再次显示。在 Android 上,用户还有一次机会(共两次)。用尽所有机会后,用户必须在设备的设置 > 通知中手动重新启用通知。OneSignal SDK 的 requestPermission(fallbackToSettings: true) 方法可以在之前拒绝权限的情况下将用户重定向到其通知设置。

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

不可以。原生 iOS 和 Android 权限对话框由操作系统控制,无法自定义。您只能控制软提示(系统提示之前显示的应用内消息)。使用软提示来说明通知的价值、设定期望,并提高系统提示上”允许”的可能性。

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

可以。如果您使用 iOS 临时推送通知,您仍然可以显示软提示将这些用户转化为完整推送订阅者。在用户从临时通知中看到价值之后,有策略地安排提示时机。

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

一旦用户在 iOS 上拒绝(或在 Android 上拒绝两次),您就无法再次显示系统权限提示。请改用 requestPermission(fallbackToSettings: true) SDK 方法,它会打开应用的通知设置页面,让用户可以手动启用通知。配合一条说明通知价值的应用内消息使用。

Android 何时开始需要权限提示?

Android 13(API 级别 33)引入了运行时通知权限,需要用户对推送通知的明确同意。
  • 发布时间: 2022 年 8 月(Pixel 设备)
  • 目标 SDK 要求: 截至 2023 年 8 月 31 日,Google Play 上的所有新应用和更新必须以 API 级别 33 或更高版本为目标。
  • 来源: Google 的通知权限开发者指南

iOS 临时推送通知

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