推送 OfflinePushInfo 说明
OfflinePushInfo 是专用于通知栏推送配置的 JSON 对象,允许配置是否关闭推送、推送标题描述、推送文本描述、推送透传、推送厂商相关参数等。
普通 Notification 推送
营销资讯类推送。
{// 其他参数..."OfflinePushInfo": {"PushFlag": 0,"Title":"离线推送标题","Desc": "离线推送内容","Ext": "{\\"entity\\":{\\"key1\\":\\"value1\\",\\"key2\\":\\"value2\\"}}", // 透传字段,推送使用json格式字符串"AndroidInfo": {"Sound": "shake", // 铃声文件名,不带后缀"XiaoMiChannelID": "xiaomi_channel_id","OPPOChannelID": "oppo_channel_id","OPPOCategory": "MARKETING", // OPPO 消息分类:内容与营销"VIVOCategory": "MARKETING", // vivo 消息分类:运营消息"HuaWeiCategory": "MARKETING", // 华为消息分类:资讯营销"HonorImportance": "LOW", // 荣耀消息分类:资讯营销"MeiZuNoticeMsgType": 0 // 魅族消息分类:公信消息},"ApnsInfo": {"Sound": "apns.mp3", // 铃声文件名,带后缀"BadgeMode": 1,"Title":"apns title","SubTitle":"apns subtitle","Image":"www.image.com","MutableContent": 1}}}
即时通信类推送。
{// 其他参数..."OfflinePushInfo": {"PushFlag": 0,"Title":"离线推送标题","Desc": "离线推送内容","Ext": "{\\"entity\\":{\\"key1\\":\\"value1\\",\\"key2\\":\\"value2\\"}}", // 透传字段,推荐使用json格式字符串"AndroidInfo": {"Sound": "shake", // 铃声文件名,不带后缀"XiaoMiChannelID": "xiaomi_channel_id","OPPOChannelID": "oppo_channel_id","VIVOCategory": "IM", // vivo 消息分类:系统消息"HuaWeiCategory": "IM", // 华为消息分类:服务与通讯"HonorImportance": "LOW", // 荣耀消息分类:服务通讯"MeiZuNoticeMsgType": 0 // 魅族消息分类:私信消息"OPPOCategory": "IM", // OPPO 消息分类:通讯与服务"OPPOPrivateMsgTemplateId": "xxxx", // OPPO 私信消息模板id"OPPOPrivateTitleParameters": { // OPPO 私信消息标题模板填充参数,json格式"k1": "v1"...},"OPPOPrivateContentParameters": { // OPPO 私信消息内容模板填充参数,json格式"k1": "v1",...},},"ApnsInfo": {... // 详情参见 ApnsInfo 字段说明}}}
APNs 透传推送
{// 其他参数..."OfflinePushInfo": {"Ext": "{\\"entity\\":{\\"key1\\":\\"value1\\",\\"key2\\":\\"value2\\"}}" // 透传字段,推送使用json格式字符串"ApnsInfo": {"ContentAvailable": 1 // APNS 透传推送},"AndroidInfo": {... // 详情参见 AndroidInfo 字段说明}}}
APNs VoIP 推送
{// 其他参数..."OfflinePushInfo": {"Title":"离线推送标题", // 接收方未上报 VoIP token 时,兜底走普通 Notification 推送的 Title"Desc": "离线推送内容", // 接收方未上报 VoIP token 时,兜底走普通 Notification 推送的 Desc"Ext": "{\\"entity\\":{\\"key1\\":\\"value1\\",\\"key2\\":\\"value2\\"}}" // 透传字段,推送使用json格式字符串"ApnsInfo": {"IsVoipPush": 1 // APNS VoIP推送},"AndroidInfo": {... // 详情参见 AndroidInfo 字段说明}}}
APNs LiveActivity (灵动岛) 推送
更新 LiveActivity。
{// 其他参数..."OfflinePushInfo": {"Title": "离线推送标题","Desc": "离线推送内容","Ext": "{\\"entity\\":{\\"k1\\":\\"v1\\",\\"k2\\":\\"v2\\"}}", // 透传字段,推送使用json格式字符串"ApnsInfo": {"LiveActivity": {"LaId": "timpush","Event": "update", // 更新 LiveActivity 推送"ContentState": {"k1": v1,"k2": v2,...}}},"AndroidInfo": {... // 详情参见 AndroidInfo 字段说明}}}
结束 LiveActivity。
{// 其他参数..."OfflinePushInfo": {"Title": "离线推送标题","Desc": "离线推送内容","Ext": "{\\"entity\\":{\\"k1\\":\\"v1\\",\\"k2\\":\\"v2\\"}}", // 透传字段,推送使用json格式字符串"ApnsInfo": {"LiveActivity": {"LaId": "timpush","Event": "end", // 结束 LiveActivity 推送"ContentState": {"k1": v1,"k2": v2,...},"DismissalDate": 1739502750}},"AndroidInfo": {... // 详情参见 AndroidInfo 字段说明}}}
多语言推送
{// 其他参数..."OfflinePushInfo": {"PushFlag": 0,"Title":"离线推送标题","Desc": "离线推送内容","MultiLanguageContent":[{"Language":"zh-hant","Title":"離線推送標題","Desc":"離線推送內容"},{"Language":"en","Title":"Offline Push Notification Title","Desc":"Offline Push Notification Desc"}],"Ext": "{\\"entity\\":{\\"key1\\":\\"value1\\",\\"key2\\":\\"value2\\"}}", // 透传字段,推送使用json格式字符串"AndroidInfo": {... // 详情参见 AndroidInfo 字段说明},"ApnsInfo": {... // 详情参见 ApnsInfo 字段说明}}}
OfflinePushInfo 字段说明
字段 | 类型 | 属性 | 说明 |
PushFlag | Integer | 选填 | 0:表示推送。 1:表示不离线推送。 |
Title | String | 选填 | 通知栏推送标题。 |
Desc | String | 选填 | 通知栏推送内容。 |
MultiLanguageContent | Array | 选填 | |
Language | String | 选填 | |
Ext | String | 选填 | 离线推送透传内容。由于国内各 Android 手机厂商的推送平台要求各不一样,请保证此字段为 JSON 格式,否则可能会导致收不到某些厂商的离线推送。 |
AndroidInfo | Object | 选填 | |
ApnsInfo | Object | 选填 | |
HarmonyInfo | Object | 选填 | |
BadgeAddNum | Integer | 选填 | 设置角标数字累加值,在原角标的基础上进行累加。 APNs推送,取值范围 [1~99],BadgeAddNum 与 BadgeSetNum 同时存在时,以BadgeSetNum 为准。如果都没设置,具体可参见 ApnsInfo.BadgeMode。 华为/荣耀/鸿蒙推送,取值范围 [1~99],BadgeAddNum 与 BadgeSetNum 同时存在时,以BadgeSetNum 为准。如果都没设置,角标自增1。 对于其他推送厂商,该字段不生效。 |
BadgeSetNum | Integer | 选填 | 设置角标数字。 APNs 推送,取值范围 [0~999]。 华为/荣耀/鸿蒙推送,取值范围 [0~99]。 对于其他推送厂商,该字段不生效。 其他情况,参考BadgeAddNum。 |
AndroidInfo 字段说明
字段 | 类型 | 属性 | 说明 |
Sound | String | 选填 | Android 系统通知铃声文件名,不带后缀。例如设置为“shake”,对应应用本地的“/res/raw/shake.xxx”文件。 |
PushStyle | Integer | 选填 | Android通知栏样式,“0”代表默认样式,“1”代表大文本样式,不填默认为0。仅对 华为/荣耀/OPPO生效。 |
XiaoMiChannelID | String | 选填 | 该字段不为空时,会覆盖控制台推送证书配置的 ChannelID 值。 |
OPPOChannelID | String | 选填 | OPPO 推送 Android 8.0 及以上的 NotificationChannel 通知适配字段。 该字段不为空时,会覆盖控制台推送证书配置的 ChannelID 值。 |
OPPOCategory | String | 选填 | 该字段不为空时,会覆盖控制台推送证书配置的 category 值。 |
OPPOPrivateMsgTemplateId | String | 选填 | |
OPPOPrivateTitleParameters | JSON Object | 选填 | OPPO 推送标题模板填充参数。例:私信模板 ID 标题模板为:欢迎来到$ {city} $ ,$ {city} $ 欢迎您。此参数内容为:{“city”:“北京”} |
OPPOPrivateContentParameters | JSON Object | 选填 | OPPO 推送内容模板填充参数。例:私信模板 ID 对应的内容模板为:欢迎$ {userName} $ 来到$ {city} $ 。此参数内容为:{“userName”:“汤姆”,“city”:“深圳市”} |
OPPONotifyLevel | Integer | 选填 | 1:通知栏。 2:通知栏 + 锁屏。 16:通知栏 + 锁屏 + 横幅 + 震动 + 铃声。 使用 OPPONotifyLevel 时,OPPOCategory 必传。 |
VIVOClassification | Integer | 选填 | vivo 推送消息分类,“0”代表运营消息,“1”代表系统消息,不填默认为1。( vivo 推送服务于 2023 年 4 月 3 日优化消息分类规则,推荐使用 AndroidInfo.VIVOCategory 设置消息类别。) |
VIVOCategory | String | 选填 | 该字段不为空时,会覆盖控制台推送证书配置的 category 值。 |
VIVONotifyType | Integer | 选填 | |
HuaWeiImportance | String | 选填 | 华为推送消息提醒级别,取值为 LOW、NORMAL。 |
HuaWeiCategory | String | 选填 | 该字段不为空时,会覆盖控制台推送证书配置的 category 值。 |
HuaWeiImage | String | 选填 | 华为推送通知栏消息右侧小图标 URL,URL 必须使用 HTTPS 协议,取值样例: https://example.com/image.png。图片文件须小于512KB,规格建议为40dp x 40dp,弧角大小为8dp。超出建议规格的图片会存在压缩或显示不全的情况。图片格式建议使用JPG/JPEG/PNG。 |
HuaWeiChannelID | String | 选填 | 华为推送 EMUI 10.0 及以上的通知渠道字段。 该字段不为空时,会覆盖控制台推送证书配置的 ChannelID 值。 |
HonorImage | String | 选填 | 荣耀推送通知栏消息右侧小图标 URL,URL 必须使用 HTTPS 协议,取值样例: https://example.com/image.png。 图标文件须小于512KB,图标建议规格大小:40dp x 40dp,弧角大小为8dp,超出建议规格大小的图标会存在图片压缩或显示不全的情况。 |
HonorImportance | String | 选填 | |
GoogleImage | String | 选填 | Google 推送通知栏消息右侧图标 URL,图片资源不超过1M,支持 JPG/JPEG/PNG 格式,取值样例: https://example.com/image.png。 |
GooglePriority | String | 选填 | normal:设备处于前台运行,会立即投递;设备处于后台 / Doze 模式,会延迟批量投递。 high:设备处于任意状态,都会唤醒设备,强制投递。 |
GoogleChannelID | String | 选填 | Google 推送 Android 8.0 及以上的通知渠道字段。 |
MeiZuNoticeMsgType | Integer | 选填 | 该字段不为空时,会覆盖控制台魅族推送证书配置的消息分类。 |
ApnsInfo 字段说明
字段 | 类型 | 属性 | 说明 |
BadgeMode | Integer | 选填 | 为0表示需要计数,为1表示本条消息不需要计数,即右上角图标数字不增加。 注意: |
Title | String | 选填 | 该字段用于标识 APNs 推送的标题,若填写则会覆盖最上层 Title。 |
SubTitle | String | 选填 | 该字段用于标识 APNs 推送的子标题。 |
Image | String | 选填 | 该字段用于标识 APNs 携带的图片地址,当客户端拿到该字段时,可以通过下载图片资源的方式将图片展示在弹窗上。 |
MutableContent | Integer | 选填 | 为 1 表示开启 iOS 10+ 的推送扩展,默认为0。 |
Sound | String | 选填 | iOS 系统通知铃声文件名,带后缀。自定义铃声长度不能超过30s,需要先把语音文件链接进 Xcode工程。取值样例: shake.mp3。 |
InterruptionLevel | String | 选填 | |
ContentAvailable | Integer | 选填 | |
IsVoipPush | Integer | 选填 | |
LiveActivity | Object | 选填 |
HarmonyInfo 字段说明
类型 | 类型 | 属性 | 说明 |
Title | String | 选填 | 该字段用于标识 Harmony 推送的标题,若填写则会覆盖最上层 Title。 |
Category | String | 选填 | 该字段不为空时,会覆盖控制台推送证书配置的 category 值。 |
Image | String | 选填 | 通知右侧大图标 URL,URL 使用的协议必须是 HTTPS 协议。 注意: 支持图片格式为 png、jpg、jpeg、heif、gif、bmp,图片长*宽<25000 像素。 |
Sound | String | 选填 | 自定义消息通知铃声。此处设置的铃声文件必须放在应用的 /resources/rawfile 路径下。例如设置为 alert.mp3,对应应用本地的 /resources/rawfile/alert.mp3 文件。支持的文件格式包括 MP3、WAV、MPEG 等,如果不设置,则用默认系统铃声。 当请求不携带 SoundDuration 字段时,建议铃声时长不超过30秒,若超过30秒则截断处理;当请求携带 SoundDuration 字段时,详情请参见 SoundDuration 字段说明。 注意: Wearable、TV、PC/2in1不支持自定义铃声。 |
SoundDuration | Integer | 选填 | 自定义消息通知铃声时长。需要配合 Sound 字段使用,只有当请求同时携带 Sound 字段,SoundDuration 字段才会生效。仅支持数字,单位为秒,取值范围 [1, 60]。 Sound 字段传入的自定义消息通知铃声会播放至 SoundDuration 字段值后停止,若自定义消息通知铃声对应的时长不足 SoundDuration 字段值则会循环播放,在达到 SoundDuration 字段值后停止。 |
LiveActivity 字段说明
字段 | 类型 | 属性 | 说明 |
LaId | String | 必填 | |
Event | String | 必填 | 更新填:“update”。 结束填:“end”。 |
ContentState | JSON Object | 必填 | 自定义的 key:value 的 object。需与客户端 SDK 值匹配。 |
DismissalDate | Integer | 选填 | Event 为 “end” 时,锁屏实时活动结束展示的 Unix 时间。不填默认为当前时间,锁屏会马上结束。 |
注意:
由于 APNs 推送限制数据包大小不能超过4K,因此除去其他控制字段,建议 Desc 和 Ext 字段之和不要超过3K。
如果需要离线推送,强烈建议发送端指定 OfflinePushInfo.Title 和 OfflinePushInfo.Desc。对于单聊/群聊消息,如果没有填写 OfflinePushInfo.Title 和 OfflinePushInfo.Desc,兜底逻辑会尝试从 MsgBody 中进行转换获取 Title 和 Desc 进行离线推送。