个推消息推送消息终止、覆盖和撤回
一、需求背景
1.1 背景描述
APP 在进行日常消息推送的过程中,因为种种原因,有时会出现推送“失误”,比如不小心推送内容输入错误,或是测试生产环境切换错误,给线上用户推送了测试消息等等。个推消息推送的消息终止、消息覆盖和消息撤回三大功能可以有效帮助 APP 避免推送“失误”。
1.2 名称解释
名词 | 解释 |
---|---|
消息终止 | 对正处于推送状态,或者未接收的消息停止下发(只支持批量推和群推任务)。 |
消息覆盖 | 实现消息覆盖,可以通过相应接口重新发一条具有相同id的消息实现,如果推送的消息未设置此id,则无法实现消息覆盖功能。 |
消息撤回 | 消息撤回是指对已经发送的个推通道消息进行撤回。客户端接收到消息撤回的指令,会将通知栏中展示的消息进行删除,不再展示。 |
1.3 功能支持情况
功能 | 支持情况 |
---|---|
消息终止 | 支持个推通道存入离线库状态的批量推/群推任务, 不支持安卓厂商/iOS离线 |
消息覆盖 | 支持个推通道/安卓厂商(华为、小米、OPPO、魅族)/iOS |
消息撤回 | 支持个推通道的通知消息/安卓厂商(小米、vivo) |
二、功能实现
- 终止、撤回、覆盖功能实现,客户端不用操作,服务端调用相应的api接口即可
- 终止、撤回、覆盖功能适用于通知消息
- 开发者可通过调用 服务端 RestAPI V2 实现对应的功能。
2.1 消息终止代码示例
curl --location --request DELETE
'https://restapi.getui.com/v2/appid/task/$taskid' \
--header 'content-type: application/json' \
--header 'token: $taskid' \
--data-raw ''
注意事项
- 只支持批量推和群推任务,单推任务不支持
2.2 消息覆盖代码示例
对于个推通道消息,可设置相同的notify_id,示例:
{
"push_message":{
"notification":{
"notify_id":1111
}
}
}
对于IOS通道消息,可设置相同的apns-collapse-id,示例:
{
"ios":{
"apns-collapse-id":"2222"
}
}
对于安卓厂商通道消息,可设置相同的notify_id,示例:
{
"android":{
"ups":{
"notification":{
"notify_id":3333
}
}
}
}
2.3 消息撤回代码示例
{
"push_message":{
//在线通知消息
"revoke": {
//需要撤回的taskId
"old_task_id": "xxx",
//在没有找到对应的taskId,是否把对应appId下所有的通知都撤回
"force": false
}
},
"push_channel": {
"android": {
"ups": {
//离线通知消息
"revoke": {
//需要撤回的taskId
"old_task_id": "xxx"
}
}
}
}
}
注意事项
- SDK要求客户端版本:2.12.5.0以上