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

6 回复

【解决方案】

  • 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列表的匹配关系,撤回对应批次的通知。这种方式适用于批量管理相同业务逻辑的通知场景。

回到顶部