跳转到主要内容

概述

后台或数据通知——通常被称为”静默”通知——不显示消息或播放声音。相反,它们被设计为静默唤醒您的应用程序以执行后台任务,如同步或刷新数据。

限制

  • 仅限订阅用户:OneSignal SDK 默认仅向订阅用户发送数据通知。要触达未订阅用户,请遵循此解决方案
  • 强制关闭的应用无法接收后台推送
    • iOS:当从应用切换器中滑动删除时,应用被强制关闭。Apple 支持
    • Android:应用可能通过设备设置强制关闭,或被某些制造商在滑动删除时自动关闭。更多信息
  • 对非原生 SDK 的有限支持

设置后台数据通知

要从 OneSignal 发送静默后台数据通知,请按照以下步骤操作:
1

省略内容

从消息中移除可见内容。这包括:
  • API:在您的 Create notification API 请求中的 contentsheadingssubtitle
  • 控制台:消息、标题、副标题
2

设置 content_available

  • API:将 content_available 设置为 true
  • 控制台:在”发送到 Apple iOS”下勾选 Content available。这适用于所有平台,只是告诉我们的系统没有发送消息。
3

添加自定义负载

  • API:使用 data 字段添加自定义负载。
  • 控制台:使用 Additional Data 字段添加自定义负载。

iOS 后台通知设置

您的 iOS 应用必须在 Xcode 中启用 Background Modes > Remote Notifications 功能。如果您按照我们的移动 SDK 设置操作,通常会包含此功能。 我们还建议查看以下 Apple 文档:

处理数据

使用 AppDelegate 方法 application(_:didReceiveRemoteNotification:fetchCompletionHandler:) 来处理通知。
如果应用被滑动删除,则无法处理后台通知。在这种情况下,包含可见的 contents 消息,并在 UNNotificationServiceExtension.didReceive 中处理数据。如果应用被强制关闭,则无法处理后台通知。

Android 数据通知设置

使用 NotificationExtenderService 来处理 Android 上的数据通知。 这可以实现:
  • 在应用未运行时处理后台通知。
  • 自定义通知的显示方式或抑制通知。

发送 VoIP 通知

支持 VoIP 通知,但需要在 OneSignal SDK 之外进行额外设置,OneSignal SDK 在 iOS 上注册 VoIP 令牌。 请参阅 VoIP 通知设置指南 获取完整说明。

常见问题

静默后台数据通知能否检测卸载或取消订阅?

不能。Apple 和 Google 故意阻止使用静默通知作为检测卸载的方式,通过不一致地响应设备已从推送中注销等技术手段来实现。 应用不能在强制关闭状态下接收后台数据通知(请参阅限制)。

确认送达是否适用于静默通知?

iOS:不适用。确认送达依赖于 NotificationServiceExtension (NSE),只有在包含可见消息 (contents) 时才会激活。即使您尝试在 NSE 中清空消息正文,iOS 也会恢复原始正文内容——使通知变得可见。因此,确认送达不适用于静默通知。 Android:适用。
I