要求
- 您的应用必须使用最新版本的 OneSignal SDK。
- Android 用户必须启用推送通知权限。
实时通知 vs. 标准推送
与每次发送新通知的常规推送通知不同,实时通知使用单个随时间更新的通知。更新通过使用相同collapse_id
的 创建消息 API 发送。
配置
1. 实现通知服务扩展
创建一个实现INotificationServiceExtension
的 NotificationServiceExtension
类。此类拦截传入的通知并可以修改或覆盖它们。
有关更多详细信息,请参阅 Android 通知服务扩展。
NotificationServiceExtention.kt
2. 将扩展添加到 Android 清单
3. 创建实时通知类型
实时通知类型指示要启动哪个实时通知。定义键
实时通知通过key
引用,它决定如何路由更新。
NotificationServiceExtention.kt
创建通知渠道
渠道定义通知的行为方式(声音、振动、外观)。您必须为实时通知类型创建渠道。我们建议:- 进度通知使用低重要性
- 禁用徽章
- 将声音和振动保持在最低限度
设计实时通知
设计实时通知时,您可以灵活地为每种更新类型创建通知设计。您创建的每个设计都必须分配特定类型,允许实时通知的不同呈现。NotificationServiceExtention.kt
- 小图标和主题色
- 大图标
- 大图片
- 操作按钮
有关高级设计选项,请参阅 Android 自定义通知布局。
4. 提取实时通知载荷
实时通知使用additional_data
字段传递结构化内容。
NotificationServiceExtention.kt
实时通知架构
属性 | 必需 | 描述 |
---|---|---|
key | 是 | 用于加载正确的通知 UI。 |
event | 是 | 在实时通知上执行的操作。 |
event_attributes | 否 | 静态数据用于初始化实时通知;定义通知所需数据的自定义架构。 |
event_updates | 否 | 实时通知的动态内容。必须符合应用实时通知中定义的 ContentState 接口。 |
Example Live Notification Payload
5. 处理实时通知事件
每个实时通知都必须响应以下事件:事件 | 描述 | 必需字段 |
---|---|---|
start | 使用静态和动态数据开始实时通知。 | event_attributes , event_updates |
update | 使用新动态数据更新实时通知。 | event_updates |
end | 结束并移除实时通知。 | 无 |
NotificationServiceExtention.kt
启动实时通知
当您准备启动实时通知时:- 设置
event_attributes
来初始化实时通知的静态数据。此数据在实时通知的生命周期内不会更改。 - 设置
event_updates
数据来初始化实时通知的动态数据。这是在实时通知生命周期内可以且将会更改的数据。 - 使用
collapse_id
确保每次更新都覆盖前一次。此 ID 应该对实时通知唯一,以确保后续更新反映在同一个通知中。
curl
更新实时通知
您可以随意多次更新实时通知,只要首先启动它。- 设置
event_updates
数据来初始化实时通知的动态数据。这是在实时通知生命周期内可以且将会更改的数据,并告知要用什么更新实时通知的内容。
curl
结束实时通知
示例 cURL 请求curl