为什么使用回退方法?
推送通知很强大,但不能保证触及每个用户。推送投递失败的常见原因包括:- 用户退出或禁用通知权限
- 设备离线或处于限制状态(例如 iOS 专注模式)
- 应用已卸载或推送令牌已过期
- 应用内消息
- 邮件
- 短信
回退策略概述
1
发送主要推送通知
这是您通过标准推送消息通知用户的初始尝试。
2
检查投递或打开状态
监控投递和用户交互以确定是否需要回退。
3
通过其他渠道触发回退
如果没有参与或投递,请通过邮件或短信发送相同的消息。
要求
- 为每个用户设置唯一的 External ID
- 用户使用 OneSignal SDK 或 REST API 在其个人资料中关联了邮件或短信数据
推荐的实现选项
选项 1:OneSignal Journeys(无代码)
使用 OneSignal Journeys 以可视化方式自动化回退逻辑:- 拖放界面
- 支持按打开/点击/投递进行分支
- 结合推送、应用内、邮件和短信

Journeys 构建器中的回退逻辑
选项 2:使用 API 的自定义回退工作流
1
发送推送通知
使用 Create Notification API 向您的用户发送推送消息。您可以根据其 External ID 或自定义别名定位特定用户。
2
检查状态并触发回退
发送后,使用 View Message API 检查通知是否已投递。如果:
"received" = 0
,或状态为 "failed"
或 "errored"
,则表示推送通知没有送达。此时,您可以使用自己的提供商(例如 Twilio 或 SendGrid),通过映射的电话号码发送 SMS 回退。选项 3:检测并细分用户以进行回退
1
检测推送订阅状态
使用 SDK 方法:
addPermissionObserver()
。
它允许您的应用在运行时跟踪并响应设备通知权限状态的变化。如果在应用未运行时权限状态发生变化,观察者将在下次打开应用时触发。2
标记取消订阅推送的设备
您可以为用户添加标签。您应用的标签(例如,
unsubscribed_from_push: true
)在该用户的所有渠道中共享——推送、邮件和短信。这使得以后轻松定位已退出推送通知的用户变得容易。3
为回退用户创建细分群体
在 OneSignal 仪表板中:
- 创建一个
unsubscribed_from_push = true
的细分群体 - 使用回退邮件或短信活动定位该细分群体
- 在 Journeys 或活动中使用此细分群体通过邮件或短信发送回退消息
最佳实践
- 使用应用内消息或邮件作为您的首选回退选项——它们比短信干扰性更小。
- 在发送回退消息之前添加短暂的宽限期(如 2-5 分钟),给用户时间参与。
- **不要让用户感到困扰。**限制跨渠道发送回退消息的频率。
- 始终尊重用户偏好——只向已选择加入该渠道的用户发送消息。
- **测量有效性。**使用标签、事件或分析来跟踪回退消息的有效性。
示例用例
安全警报
您正在发送安全警报。如果用户在 5 分钟内没有收到推送,他们将通过短信收到相同的消息。订单配送更新
包裹正在配送中。您发送包含跟踪信息的推送。如果用户没有收到或打开它,他们会收到包含相同更新和直接链接的短信。支付失败通知
结账时支付失败。发送推送通知用户。如果没有送达,可通过短信进行后续联系,敦促他们重试支付。事件提醒
您提醒用户即将到来的事件(例如网络研讨会、预约)。如果没有收到推送,您可以发送包含日期、时间和加入链接或位置的短信。系统停机警报
您正在通知用户意外停机。如果推送失败,回退到短信可确保用户实时得到通知。账单通知
账单即将到期。您发送推送提醒。如果在 24 小时内没有收到,发送短信作为二次通知。限时促销通知
限时促销开始。推送立即警告用户。如果推送未送达,您可以发送包含促销详情和购物链接的短信。 根据消息的紧急性调整回退逻辑。并非所有通知都需要短信,但关键通知受益于多渠道投递。需要帮助?与我们的支持团队聊天或发送邮件至
support@onesignal.com
请包含以下信息:- 您遇到的问题详情以及复现步骤(如有)
- 您的 OneSignal 应用 ID
- 外部 ID 或订阅 ID(如适用)
- 您在 OneSignal 控制台中测试的消息 URL(如适用)
- 任何相关的日志或错误信息