概述
后台或数据通知——通常被称为”静默”通知——不显示消息或播放声音。相反,它们被设计为静默唤醒您的应用程序以执行后台任务,如同步或刷新数据。限制
- 仅限订阅用户:OneSignal SDK 默认仅向订阅用户发送数据通知。要触达未订阅用户,请遵循此解决方案。
- 强制关闭的应用无法接收后台推送:
- 对非原生 SDK 的有限支持:
- 静默通知必须在原生代码中处理(Android 使用 Java/Kotlin,iOS 使用 Swift/Obj-C)。
- iOS 需要实现
application:didReceiveRemoteNotification:fetchCompletionHandler:
。 - Android 需要实现通知服务扩展。
设置后台数据通知
要从 OneSignal 发送静默后台数据通知,请按照以下步骤操作:1
省略内容
从消息中移除可见内容。这包括:
- API:在您的 Create notification API 请求中的
contents
、headings
、subtitle
。 - 控制台:消息、标题、副标题
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:适用。