跳转到主要内容
本指南帮助您解决与接收重复推送通知相关的问题。如果您看到重复的应用内消息,请参阅我们的重复应用内消息指南。
• Apple 确认了 iOS 17 中导致重复的错误。此问题已在 iOS 17.3 中修复。了解更多。 • 如果您使用的是 OneSignal Android SDK 版本 4.4.1 – 4.6.2,请更新到最新版本以避免已知问题。

多次发送相同消息

重复通知的最常见原因是通过 OneSignal API 多次发送相同的通知载荷

常见原因:

  • 您的服务器重试请求而不检查第一次是否成功。
  • 后端通知管道中意外的逻辑重复。
  • 您正在迁移到 OneSignal 但仍从之前的提供商发送通知。避免同时从两个系统发送。

多个推送通知 SDK

检查您的应用是否包含其他推送通知 SDK(例如 Firebase、Urban Airship)。这些可能也会处理和显示 OneSignal 通知。
  • OneSignal 包含逻辑以在它是唯一 SDK 时避免重复。
  • 其他 SDK 可能无法识别和过滤 OneSignal 的载荷,导致多次显示。
请参阅下面的常见问题了解更多 SDK 互操作性信息。

多个应用实例

  • Android
  • iOS
  • Web 推送

Android

重复通知可能发生在:
  • 您同时安装了应用的生产开发版本。
  • 每个应用都有唯一的包名并接收自己的推送令牌。
长按通知以确认它来自哪个应用实例。

诊断提示

为了帮助我们更快地调试重复问题,请收集并发送:
  • OneSignal SDK 版本
  • 设备操作系统版本
  • 构建环境(Mac/Windows)
  • Xcode 日志或 logcat 输出
  • 应用中其他库/插件的列表
  • 详细的复现步骤

常见问题

  • Android:OneSignal 只会处理包含带有 "i" 字段的 "custom" 键的通知。如果您之前的 SDK 不检查此键,它也可能处理并显示相同的通知。
  • iOS:所有通知都会出现在系统托盘中。如果两个 SDK 发送相同的消息,用户会看到两次。 建议:对于 iOS 点击处理,在处理前检查 "custom" 载荷或使用您自己的载荷键以避免重复处理。
  • Android:在集成 OneSignal 并发布应用时删除旧 SDK 通知处理代码。随着用户更新,他们将停止接收来自旧提供商的推送。
  • iOS:在用户更新期间,您可以暂时继续从旧提供商发送。完全过渡后,仅从 OneSignal 发送以避免重复。

I