HarmonyOS鸿蒙Next中多次通知使用同一个notifyId可以统一撤回吗
HarmonyOS鸿蒙Next中多次通知使用同一个notifyId可以统一撤回吗 push 通知的时候如果请求体中的“notifyId”在多次推送给不同 token 消息时使用,即多次通知使用同一个notifyId,后续在撤回通知时可以使用这个notifyId撤回一些不同批次的通知吗?
// 发送Request Body
{
"payload": {
"notification": {
"category": "xxxxxx",// 替换为实际消息类型
"title": "普通通知标题",
"body": "普通通知内容",
"clickAction": {
"actionType": 0
},
// 通知是否在应用在前台情况下展示,仅对push-type为0的通知消息生效
"foregroundShow": true,
"notifyId": 12345
}
},
"target": {
"token": ["MAMzLg**********lPW"]
},
"pushOptions": {
"testMessage": true,
"ttl": 86400
}
}
// 撤回Request Body
{
"notifyId": 1234567,
"token": [
"pushToken1",
"pushToken2",
"pushToken3"
]
}
我的意思是,如果用同一个 id,分批次 push 给不同的人,比如用 id:1 发给一个人,假如过一段时间再用 id:1 发给另一个人,后续打算撤回这两个人的通知,使用同一个 id,token 数组放两个,是否可行?
更多关于HarmonyOS鸿蒙Next中多次通知使用同一个notifyId可以统一撤回吗的实战教程也可以访问 https://www.itying.com/category-93-b0.html
【解决方案】
- notifyId表示每条消息在通知显示时的唯一标识。不携带或者设置-1时,推送服务自动为每条消息生成一个唯一标识;不同的通知消息可以拥有相同的notifyId,实现新消息覆盖旧消息功能。
- HarmonyOS 5中此字段范围为
[0,2147483647]
,即int32非负值;
更多关于HarmonyOS鸿蒙Next中多次通知使用同一个notifyId可以统一撤回吗的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
可以的。
准确来说:多次通知使用同一个notifyId,系统会自动实现新消息覆盖旧消息功能。所以,使用这个notifyId撤回的话,会把最新一次发的消息给撤回,同时,由于之前发的消息已经被最新一次发的消息给覆盖了。所以,结果上,是实现了使用了同一个notifyId的消息都不见了,也算是都撤回了。
参考:
1、notifyId的官方介绍,https://developer.huawei.com/consumer/cn/doc/harmonyos-references/push-scenariozed-api-request-param#section17371529101117
“每条消息在通知显示时的唯一标识。不携带或者设置-1时,推送服务自动为每条消息生成一个唯一标识;不同的通知消息可以拥有相同的notifyId,实现新消息覆盖旧消息功能。若要用于消息撤回则必填,且范围为[0, 2147483647],即非负值。详情请参见消息撤回。”
2、官网的消息撤回文档,https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-revoke-alert
但只有发给同一个设备的通知才能称得上“覆盖”吧,如果两个设备分不同批次,但不同批次使用同一个 Id,
可行
在HarmonyOS Next中,使用同一个notifyId多次发布通知后,调用cancel方法可以撤回该notifyId对应的所有通知。系统会清除通知栏中具有相同notifyId的全部通知条目。此机制适用于批量管理相同来源的通知场景。
在HarmonyOS Next中,使用同一个notifyId
多次推送通知给不同token时,可以通过该notifyId
统一撤回这些通知。撤回请求中,notifyId
字段填写该共用ID,token
数组包含所有需要撤回通知的token即可。系统会基于notifyId
和token列表的匹配关系,撤回对应批次的通知。这种方式适用于批量管理相同业务逻辑的通知场景。