跳转到主要内容

什么是静默通知?

静默通知可让您唤醒应用并执行后台任务(如同步或刷新数据),而无需显示可见消息或播放声音。 在 iOS 上,这些被称为后台通知,在 Android 上,它们被称为数据通知。它们统称为静默推送,行为与普通的可见通知不同。

限制

  • 应用无法接收静默推送,如果:
    • iOS:应用已被用户关闭,例如从应用切换器中滑动删除时。(参见 Apple 支持)。
    • Android:应用已通过设备设置强制退出,或被某些制造商在滑动删除时自动关闭。(更多详情)。
  • 无法保证送达
    • Apple 和 Google 都将静默通知视为尽力而为。iOS 可能在低电量模式下、关闭后台应用刷新或应用被用户关闭时延迟或丢弃送达。Android 可能在 Doze 或 OEM 省电规则下限制或批量送达。
    • 因此,静默通知绝不应用于关键更新
  • 仅限订阅用户:OneSignal SDK 仅向订阅的订阅发送数据通知。要触达未订阅用户,请遵循此解决方案
  • 对跨平台 SDK 的有限支持

从 OneSignal 发送静默通知

按照以下步骤从 OneSignal 发送静默通知:
1

省略可见内容

从消息中移除任何可见文本或标题。这包括:
  • API:您的 Create notification API 请求中的 contentsheadingssubtitle
  • 控制台:消息、标题、副标题
2

设置 content_available

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

向通知添加数据

  • API:使用 data 参数。
  • 控制台:使用 Additional Data 字段。

API 请求示例

curl -X POST https://api.onesignal.com/notifications \
  -H "Authorization: Key YOUR_APP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "app_id": "YOUR_APP_ID",
    "include_aliases": { "external_id": ["user-123"] },
    "target_channel": "push",
    "content_available": true,
    "data": {
      "action": "sync_data",
      "version": "2"
    }
  }'

平台特定设置

iOS 后台通知设置

要处理后台通知,您的 iOS 应用必须在 Xcode 中启用 Background Modes > Remote Notifications 功能。如果您按照我们的移动 SDK 设置操作,通常会包含此功能。 要处理通知,请实现 AppDelegate 方法 application(_:didReceiveRemoteNotification:fetchCompletionHandler:) Apple 文档:
如果用户关闭了应用(从应用切换器中滑动删除),iOS 将不会送达通知。在这种情况下,请包含可见的 contents 消息,并在 UNNotificationServiceExtension.didReceive 中处理数据。

Android 数据通知设置

使用通知服务扩展在 Android 上处理数据通知。 这可以实现:
  • 只要应用未被强制关闭,就可以处理通知
  • 自定义通知的显示或抑制方式
Android 文档:
如果应用已被强制停止(通过设备设置或部分 OEM 电池优化),Android 将不会送达通知。请参阅 Android 强制停止行为

发送 VoIP 通知

支持 VoIP 通知,但需要在标准 OneSignal SDK 之外进行额外配置。OneSignal 不会自动注册 VoIP 令牌。

VoIP 通知设置指南

在 iOS 上配置用于实时通话的 VoIP 推送通知。

常见问题

静默通知能否用于检测卸载或取消订阅?

从技术上讲可以,但不可靠。如上面限制部分所述,无法保证静默通知的送达。 相反:
  • 每月至少向所有用户发送一次可见通知(包含内容)。
  • 可选择发送静默通知作为补充检查。
有关处理订阅状态更改的更多详细信息,请参阅我们的订阅指南。

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

确认送达不适用于静默通知。

我可以使用静默通知来测量有多少用户可以到达吗?

不可以,不可靠。静默通知无法保证送达。
  1. 无法保证送达 — Apple 和 Google 都将静默通知视为尽力而为,可能会延迟或丢弃。例如,如果应用已关闭(强制退出),iOS 将丢弃通知;Android 和 iOS 在省电规则下会限制通知。
  2. 无法确认送达 — 确认送达不适用于静默通知,因此您无法知道哪些用户实际收到了推送。
要测量可到达的用户,请发送可见通知并在分析中跟踪送达指标。