跳转到主要内容

概览

确认送达跟踪设备是否真正接收到通过OneSignal发送的推送通知。此信息在通知的消息报告中显示为”已确认”或”已接收”状态。
确认送达流程

确认送达流程

推送通知从OneSignal发送到特定平台的服务:
  • 苹果推送通知服务(APNs)适用于iOS和Safari
  • Google Firebase云消息传递(FCM)适用于Android和Chrome
  • 华为消息服务(HMS)适用于华为设备
  • 亚马逊设备消息传递(ADM)适用于亚马逊设备
  • 微软推送通知服务(MPNS)适用于Windows设备
当这些推送服务从OneSignal接收到通知时,它们会向我们返回成功、取消订阅或失败响应。 成功的推送通知由这些推送服务发送给您的最终用户。 一旦用户设备接收到推送通知,OneSignal SDK会发送”确认送达”事件,这是通知ID和推送订阅ID的接收回执。

要求

  • 确认送达功能仅在付费计划中提供。比较计划和定价
  • 完成我们移动SDK设置中的所有步骤,特别是iOS通知服务扩展和应用组设置。
  • 推送订阅必须安装我们的设备端SDK(不能是API创建的订阅)。

特定平台限制

iOS

  • 需要通知服务扩展(NSE)和正确的应用组配置来确认回执。确保遵循我们的移动SDK设置指南获取设置和测试说明。
  • 如果设备离线,APNs每个应用仅保留1条消息。如果iOS设备离线且向其发送2条或更多推送,只会收到最后一条推送。

华为

  • 仅适用于data华为消息类型。但是,华为会直接在其仪表板中为message类型提供确认送达数据。

Web

  • 不支持Safari。

处理非活跃设备

离线设备不会收到推送通知。当用户更换或放弃设备时,这种情况很常见。 重新参与提示:
  • 使用受众活动尝试重新向”未确认送达”的用户发送消息。
  • 基于上次会话创建细分来识别6个月、1年或更长时间不活跃的用户。
  • 定期向不活跃用户发送推送通知,以识别已取消订阅或无法访问的设备。
有关更多详细信息,请参阅订阅推送订阅状态何时更新?

常见问题

为什么我的确认送达数量很低或没有显示?

您的确认送达数量可能很低或没有显示的原因有几个:
  1. 您可能有很多不活跃/较旧的订阅。有关更多详细信息,请参阅上面的处理非活跃设备
  2. 如果使用华为或Safari,您可能遇到特定平台限制
  3. 可能存在设置问题。这在iOS中最常见,但也可能发生在其他平台上。有关更多详细信息,请参阅确认送达故障排除

为什么显示已确认但在我的设备上没有显示?

确认送达事件意味着设备收到了推送通知。此事件由应用中的OneSignal SDK为该特定用户的订阅ID和推送通知ID生成。设备不显示推送通知的情况很少见。 需要检查的项目:
  • 推送被错误忽略。
    • 在启用了焦点模式如”勿扰”、“睡眠”或自定义设置的iPhone上特别常见。在此状态之外接收的推送通知与在此状态期间接收的通知分组方式不同。在焦点模式期间接收的所有推送通知会分组在一起,直到焦点模式结束。此时,推送通知将与应用的其他通知重新分组。如果您在焦点模式期间滑动删除了所有分组通知,您可能会错过它们。
  • 您的应用中可能有自定义代码阻止通知显示。检查应用中的以下代码:
  • 检查您随推送通知发送的推送负载或数据。
    • 确保以高优先级发送
    • 如果使用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
如果问题持续存在,请参阅iOS通知服务扩展故障排除指南获取更多调试步骤。

Android故障排除

  • 如果通知在Android上不显示,请参阅我们的通知未显示指南
  • 如果通知显示,但没有报告确认送达,您可能有自定义的Android通知服务扩展阻止了请求。请参阅我们的Android服务扩展设置指南确保您正确实施以与OneSignal通知配合使用。

Web故障排除

  • 由于Safari浏览器的限制,它无法支持确认送达。
  • 确保您正确迁移到v16 SDK。有关更多详细信息,请参阅我们的用户模型Web迁移指南
    • 您的初始化代码加载正确的v16 SDK:
      <script src="https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js" defer></script>
      
    • 您的OneSignalSDKWorker.js服务工作器脚本引用正确的v16脚本:
      importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js");
      

需要帮助?与我们的支持团队聊天或发送邮件至 support@onesignal.com请包含以下信息:
  • 您遇到的问题详情以及复现步骤(如有)
  • 您的 OneSignal 应用 ID
  • 外部 ID 或订阅 ID(如适用)
  • 您在 OneSignal 控制台中测试的消息 URL(如适用)
  • 任何相关的日志或错误信息
我们很乐意为您提供帮助!

I