推送 Plus
概述
推送 Plus 是为高频、并发推送需求提供的增值推送服务。支持推送文本、富媒体、自定义消息等,适用于社交互动、交易状态同步、系统升级、帐号唤醒拉活、活动通知等推送运营服务场景,并支持推送数据统计。
推送 Plus 独享推送通道,具备更高的并发处理能力,可毫秒级触达目标用户。推送 Plus 数据统计提供推送成功、失败、到达、点击数据统计能力。开发者可通过 API 或控制台获取相关数据。
推送 Plus 需要付费开通后才能使用。欢迎访问官网推送 Plus 产品介绍页,或直接前往控制台开通推送 Plus。
该功能开发环境下可免费使用 。生产环境下,需要在控制台开通推送 Plus 服务后才能使用。
注意事项
- 手机厂商推送通道是从系统层维护的长连接通道,比即时通讯服务自建推送通道 RongPush 更省电,到达率更高。希望使用推送 Plus 的客户,应尽量集成第三方厂商推送通道。
- 华为推送通道上报推送点击数据,要求客户端使用 5.1.4 或更高版本的 SDK。从 5.2.3 版本开始无需客户端手动上报。
- Google FCM 支持统计推送点击数据和 透传消息方式 的推送到达数据,5.3.0 版本前的客户端需手动上报推送到达数据。
- APNs 推送通道无法直接获取推送到达、点击数据。iOS 客户端需要主动上报推送到达数据与推送点击数据,且必须使用 5.1.4 或更高版本的 SDK。
- 如需按用户标签推送,请确保已通过设置用户标签、批量设置用户标签 接口给 App Key 下用户设置了标签。
基本流程
- 在控制台开通推送 Plus。
- 因第三方推送服务设计差异,客户端 SDK 无法直接获取全部推送平台的推送到达、点击通知数据。需要您前往厂商推送平台进行设置或通过客户端 SDK 主动上报:
- 使用推送 Plus 专用推送接口,发送全量用户不落地通知。
- 使用控制台与服务端 API 获取推送成功、到达、点击数据。
推送 Plus 专用推送接口
推送 Plus 服务支持高并发发送不落地通知。开通推送 Plus 后,请使用专用的服务端 API 接口发送全量用户不落地通知。
从即时通讯服务端发送不落地通知时,无论用户是否正在使用 App,都会向用户发送通知。通知仅展示在通知栏。区别于落地通知,不落地通知不携带聊天会话消息,即用户登录 App 后不会在聊天页面看到该内容,不会存储到本地数据库。
即时通讯服务将 30 天内连接过 IM 服务的设备作为推送的目标。30 天内未打开过应用的设备,被视为应用已被卸载。
请求方法
POST :https://数据中心域名/push/custom.json
频率限制: 每天(自然日)限发送 100 次,每小时最多发送 20 次。如需要调整发送频率,可联系销售咨询,电话 13161856839。
签名规则: 所有服务端 API 请求均需要进行规则校验,详见 API 请求签名。
正文参数
HTTP 请求正文数据格式为 application/json
,包含具有以下结构的 JSON 对象:
audience
字段使用须知:
- 如果
audience
中指定了is_to_all
为true
,则忽略其他推送条件(tag
、tag_or
、packageName
)。 audience
中tag
、tag_or
共存时, 两个数组之间为逻辑与(AND)关系。audience
中包含packageName
时,packageName
与tag
或tag_or
为逻辑与(AND)关系。例如三者共存时关系为tag
ANDtag_or
ANDpackageName
。audience
中包含tagItems
且tagItems
包含有效数据时, 服务端不会使用tag
、tag_or
字段传入的值。
参数 | 类型 | 必传 | 说明 |
---|---|---|---|
platform | String[] | 是 | 目标平台(操作系统),可以为 ios 、android 其中一个或全部。全部填写时给给 Android、iOS 两个平台推送消息。 |
audience | Object | 是 | 推送条件。支持按用户 ID 推送,按用户标签推送(tag 、tag_or 、tagItems )、按应用包名推送(packageName )和按指定平台全部推送(is_to_all )。注意:如果推送条件中 is_to_all 为 true ,则忽略其他推送条件。 |
audience.userid | String[] | 否 | 用户 ID 数组。如果 userid 有值,则 platform 、tag 、tagItems 均无效。如果 is_to_all 为 true ,则当前参数无效。每次发送时最多发送 1000 个用户。 |
audience.tag | String[] | 否 | 用户标签数组,标签之间为 AND 关系。数组中最多包含 20 个标签。 |
audience.tag_or | String[] | 否 | 用户标签数组,标签之间为 OR 关系。数组中最多包含 20 个标签。 |
audience.packageName | String | 否 | 应用包名。与 tag 或 tag_or 为逻辑与(AND)关系。 |
audience.is_to_all | Boolean | 是 | 是否按指定平台(操作系统)全部推送。true 表示全部推送,此时其他推送条件字段均无效。false 表示按其他推送条件进行推送。 |
audience.tagItems | Array of Objects | 是 | 在按用户标签推送场景下,可通过 tagItems 实现复杂与或非逻辑。在 tagItems 包含有效内容的情况下,tag 、tag_or 字段无效。详见下方 tagItems 结构说明。 |
notification | Object | 是 | 按平台(操作系统)指定推送内容。 |
notification.title | String | 否 | 通知栏显示标题,最长不超过 50 个字符。 |
notification.alert | String | 否 | 默认推送通知内容。 |
notification.ios | Object | 否 | 设置 iOS 平台下的推送及附加信息。详见下方 notification.ios 结构说明。 |
notification.android | Object | 否 | 设置 Android 平台下的推送及附加信息。详见下方 notification.android 结构说明。 |
notification.android | Object | 否 | 设置 Android 平台下的推送及附加信息。详见下方 notification.android 结构说明。 |
notification.harmonyOS | Object | 否 | 设置鸿蒙平台下的推送及附加信息。详见下方 notification.harmonyOS 结构说明。 |
-
audience.tagItems
结构说明参数 类型 必传 说明 tags Array of strings 是 用户标签数组。 isNot Boolean 是 是否对 tags 数组的运算结果进行非运算。默认为 false
。tagsOperator String 是 tags 数组内标签之间的运算符。 itemsOperator String 是 tagItems 数组内当前 Object 与上一个 Object 之间的运算符。注意:首个 Object 内的 itemsOperator
未被使用,为无效字段。tagItems 运算优先级
tagItems
节点之间由itemsOperator
控制关系。tagItems
各个节点之间存在计算优先级关系。例如,tagItems
内存在四个节点,节点的itemsOperator
分别为 and、or、and、or。第一个运算符 and 无效可忽略。那么这四个节点的计算逻辑为:(((1 or 2) and 3) or 4)。 -
notification.ios
结构说明参数 类型 必传 说明 title String 否 通知栏显示的推送标题,仅针对 iOS 平台,支持 iOS 8.2 及以上版本,参数在 ios
节点下设置,详细可参考“设置 iOS 推送标题请求示例”,此属性优先级高于 notification 下的 title。contentAvailable Int 否 针对 iOS 平台,静默推送是 iOS7 之后推出的一种推送方式。 允许应用在收到通知后在后台运行一段代码,且能够马上执行。详情请查看知识库文档。1 表示为开启,0 表示为关闭,默认为 0 badge int 否 应用角标,仅针对 iOS 平台;不填时,表示不改变角标数;为 0 或负数时,表示 App 角标上的数字清零;否则传相应数字表示把角标数改为指定的数字,最大不超过 9999,参数在 ios
节点下设置,详细可参考“设置 iOS 角标数 HTTP 请求示例”。thread-id String 否 iOS 平台通知栏分组 ID,相同的 thread-id 推送分一组,单组超过 5 条推送会折叠展示 apns-collapse-id String 否 iOS 平台,从 iOS10 开始支持,设置后设备收到有相同 ID 的消息,会合并成一条 category String 否 iOS 富文本推送的类型开发者自己定义,自己在 App 端进行解析判断,与 richMediaUri 一起使用,当设置 category 后,推送时默认携带 mutable-content 进行推送,属性值为 1。 richMediaUri String 否 iOS 富文本推送内容的 URL,与 category 一起使用。 interruption-level String 否 适用于 iOS 15 及之后的系统。取值为 passive
,active
(默认),time-sensitive
,或critical
,取值说明详见对应的 APNs 的 interruption-level 字段。在 iOS 15 及以上版本中,系统的 “定时推送摘要”、“专注模式” 都可能导致重要的推送通知(例如余额变化)无法及时被用户感知的情况,可考虑设置该字段。extras JSONObject 否 附加信息,如果开发者自己需要,可以自己在 App 端进行解析。 -
notification.android
结构说明参数 类型 必传 说明 honor.importance String 否 荣耀通知栏消息优先级,取值: - NORMAL(服务与通讯类消息)
- LOW(咨询营销类消息)。若资讯营销类消息发送时带图片,图片不会展示。
honor.image String 否 荣耀推送自定义通知栏消息右侧的大图标 URL,若不设置,则不展示通知栏右侧图标。 - URL 使用的协议必须是 HTTPS 协议,取值样例:
https://example.com/image.png
。 - 图标文件须小于 512KB,图标建议规格大小:40dp x 40dp,弧角大小为 8dp。
超出建议规格大小的图标会存在图片压缩或显示不全的情况。
hw.channelId String 否 华为推送通知渠道的 ID。详见自定义通知渠道。 hw.importance String 否 华为推送通知栏消息优先级,取值 NORMAL、LOW,默认为 NORMAL 重要消息。 hw.image String 否 华为推送自定义的通知栏消息右侧大图标 URL,如果不设置,则不展示通知栏右侧图标。URL 使用的协议必须是 HTTPS 协议,取值样例: https://example.com/image.png
。图标文件须小于 512KB,图标建议规格大小:40dp x 40dp,弧角大小为 8dp,超出建议规格大小的图标会存在图片压缩或显示不全的情况。hw.category String 否 华为推送通道的消息自分类标识,category 取值必须为大写字母,例如 IM
。App 根据华为要求完成