概述
静默通知可让您唤醒应用并执行后台任务(如同步或刷新数据),而无需显示可见消息或播放声音。 在 iOS 上,这些被称为后台通知,在 Android 上,它们被称为数据通知。它们统称为静默推送,行为与普通的可见通知不同。 本指南说明如何在支持的平台上使用 OneSignal 配置和发送静默通知。限制
静默通知的行为与普通推送消息不同,并且具有多个平台特定的限制。- 应用无法接收静默推送,如果:
- 无法保证送达:
- Apple 和 Google 都将静默通知视为尽力而为。iOS 可能在低电量模式下、关闭后台应用刷新或应用被用户关闭时延迟或丢弃送达。Android 可能在 Doze 或 OEM 省电规则下限制或批量送达。
- 因此,静默通知绝不应用于关键更新。
- 仅限订阅用户:OneSignal SDK 仅向订阅的订阅发送数据通知。要触达未订阅用户,请遵循此解决方案。
- 对跨平台 SDK 的有限支持:
- 静默通知必须在原生代码中处理(Android 使用 Java/Kotlin,iOS 使用 Swift/Obj-C)。
- iOS 需要实现
application:didReceiveRemoteNotification:fetchCompletionHandler:。 - Android 需要实现通知服务扩展。
从 OneSignal 发送静默通知
按照以下步骤从 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 文档:- Pushing Background Updates to Your App
- Generating a Remote Notification
- 要处理通知,请使用
AppDelegate方法application(_:didReceiveRemoteNotification:fetchCompletionHandler:)。
Android 数据通知设置
使用通知服务扩展在 Android 上处理数据通知。 这可以实现:- 只要应用未被强制关闭,就可以处理通知
- 自定义通知的显示或抑制方式
发送 VoIP 通知
支持 VoIP 通知,但需要在标准 OneSignal SDK 之外进行额外配置。OneSignal 不会自动注册 VoIP 令牌。 有关设置说明,请参阅 VoIP 通知设置指南。常见问题
静默通知能否用于检测卸载或取消订阅?
从技术上讲可以,但不可靠。如上面限制部分所述,无法保证静默通知的送达。 相反:- 每月至少向所有用户发送一次可见通知(包含内容)。
- 可选择发送静默通知作为补充检查。