概览
确认送达跟踪设备是否真正接收到通过OneSignal发送的推送通知。此信息在通知的消息报告中显示为”已确认”或”已接收”状态。
确认送达流程
- 苹果推送通知服务(APNs)适用于iOS和Safari
- Google Firebase云消息传递(FCM)适用于Android和Chrome
- 华为消息服务(HMS)适用于华为设备
- 亚马逊设备消息传递(ADM)适用于亚马逊设备
- 微软推送通知服务(MPNS)适用于Windows设备
要求
特定平台限制
iOS
- 需要通知服务扩展(NSE)和正确的应用组配置来确认回执。确保遵循我们的移动SDK设置指南获取设置和测试说明。
- 如果设备离线,APNs每个应用仅保留1条消息。如果iOS设备离线且向其发送2条或更多推送,只会收到最后一条推送。
华为
- 仅适用于
data
华为消息类型。但是,华为会直接在其仪表板中为message
类型提供确认送达数据。
Web
- 不支持Safari。
处理非活跃设备
离线设备不会收到推送通知。当用户更换或放弃设备时,这种情况很常见。 重新参与提示:- 使用受众活动尝试重新向”未确认送达”的用户发送消息。
- 基于上次会话创建细分来识别6个月、1年或更长时间不活跃的用户。
- 定期向不活跃用户发送推送通知,以识别已取消订阅或无法访问的设备。
常见问题
为什么我的确认送达数量很低或没有显示?
您的确认送达数量可能很低或没有显示的原因有几个:- 您可能有很多不活跃/较旧的订阅。有关更多详细信息,请参阅上面的处理非活跃设备。
- 如果使用华为或Safari,您可能遇到特定平台限制。
- 可能存在设置问题。这在iOS中最常见,但也可能发生在其他平台上。有关更多详细信息,请参阅确认送达故障排除。
为什么显示已确认但在我的设备上没有显示?
确认送达事件意味着设备收到了推送通知。此事件由应用中的OneSignal SDK为该特定用户的订阅ID和推送通知ID生成。设备不显示推送通知的情况很少见。 需要检查的项目:-
推送被错误忽略。
- 在启用了焦点模式如”勿扰”、“睡眠”或自定义设置的iPhone上特别常见。在此状态之外接收的推送通知与在此状态期间接收的通知分组方式不同。在焦点模式期间接收的所有推送通知会分组在一起,直到焦点模式结束。此时,推送通知将与应用的其他通知重新分组。如果您在焦点模式期间滑动删除了所有分组通知,您可能会错过它们。
-
您的应用中可能有自定义代码阻止通知显示。检查应用中的以下代码:
event.preventDefault();
- 如果您使用其他推送服务或可以删除推送的原生API,如:
-
检查您随推送通知发送的推送负载或数据。
- 确保以高优先级发送
- 如果使用collapse_id参数,这将用使用相同
collapse_id
的较新推送替换较旧的推送。
-
您是否发送到了正确的设备?
- 您可能错误地发送到了错误的设备。请参阅查找和设置测试订阅来找到您的订阅。
确认送达故障排除
一般场景
- 设备离线: 如果设备离线,推送默认可以在3天后送达。使用生存时间参数调整此设置。
- 网络不稳定: 通知可能被接收和/或点击,但由于网络问题或应用崩溃,确认可能发送失败。这应该很少见。
iOS故障排除
常见原因: 通知服务扩展(NSE)和应用组的配置错误。 必需项:- 按照我们的移动SDK设置指南正确配置NSE。
- 主应用和NSE使用相同的应用组名称。
- ✅
group.your-main-app-target-bundle-id.onesignal
- ❌
group.your-bundle-id.OneSignalNotificationServiceExtension.onesignal
- ✅
- 消息发送时将
mutable-content
设置为1
。这会自动发生,但您可能在代码中将其设置为0
。
Android故障排除
- 如果通知在Android上不显示,请参阅我们的通知未显示指南。
- 如果通知显示,但没有报告确认送达,您可能有自定义的Android通知服务扩展阻止了请求。请参阅我们的Android服务扩展设置指南确保您正确实施以与OneSignal通知配合使用。
Web故障排除
- 由于Safari浏览器的限制,它无法支持确认送达。
- 确保您正确迁移到v16 SDK。有关更多详细信息,请参阅我们的用户模型Web迁移指南。
- 您的初始化代码加载正确的v16 SDK:
- 您的
OneSignalSDKWorker.js
服务工作器脚本引用正确的v16脚本:
- 您的初始化代码加载正确的v16 SDK:
需要帮助?与我们的支持团队聊天或发送邮件至
support@onesignal.com
请包含以下信息:- 您遇到的问题详情以及复现步骤(如有)
- 您的 OneSignal 应用 ID
- 外部 ID 或订阅 ID(如适用)
- 您在 OneSignal 控制台中测试的消息 URL(如适用)
- 任何相关的日志或错误信息