机器人的服务消息,前端如何把某条消息已读标记为未读

周大侠 21天前 321

https://bbs.wildfirechat.cn/thread-2924.htm 继续这个话题: 我们想了一个办法供参考,需要2步来完成这个工作: 1,当有新内容时,调用更新消息接口来更新消息。这一步完成之后,如果消息已经读过了,消息不会变成未读的。 2,针对还是已读的情况,需要自定义一个不存储的消息,里面包含这条消息的UID,当客户端收到这条消息后把这条消息改成未读,或者把会话标记为未读

总结一下,服务调用机器人接口先更改一下提醒消息内容,再发一个命令(自定义不存储消息)让客户端把这条消息标记为未读

提问: 请问下前端SDK有没有能实现这个的方法?

最新回复 (27)
  • HeavyRain 20天前
    引用 2
    可以让服务器端直接发WFCCMarkUnreadMessageContent 这个消息,或者你们自己定义消息,收到后,先通过UID找到消息,再调用updateMessage:status:这个方法把消息改成未读
  • HeavyRain 20天前
    引用 3
    或者更简单的办法是让服务器端先调用删除,再重新发个新消息
  • 周大侠 20天前
    引用 4

    参考了markAsUnread的方法 参考了markAsUnread的方法

    把某条消息改成未读 某条消息改成未读

    在消息收到的回调里做处理,IM的api调用成功了,但会话的未读数也没有+1

    有2个问题请教下: 1.上面代码有什么问题吗? 2.假设某个会话机器人发出的A、B、C三条消息(A的消息类型是1003,B、C的消息类型是1004),都已读了,客户端怎么把A这条消息改成未读?

  • 周大侠 20天前
    引用 5

    更新消息内容

    updateMessage:status: 更新消息内容。只更新本地消息内容,无法更新服务器和远端。 把消息改成未读,需求是要更新到远端的,这个方式可能不满足需求。

  • 周大侠 20天前
    引用 6
    HeavyRain 或者更简单的办法是让服务器端先调用删除,再重新发个新消息
    机器人消息现在有提供删除消息接口吗,是否支持实现删除重发?
  • HeavyRain 20天前
    引用 7
    周大侠 机器人消息现在有提供删除消息接口吗,是否支持实现删除重发?
    机器人没有,server api有
  • HeavyRain 20天前
    引用 8
    周大侠 机器人消息现在有提供删除消息接口吗,是否支持实现删除重发?
    不要参考markAsUnread的方法,看我1楼的回复:

    或者你们自己定义消息,收到后,先通过UID找到消息,再调用updateMessage:status:这个方法把消息改成未读
  • 周大侠 20天前
    引用 9
    HeavyRain 不要参考markAsUnread的方法,看我1楼的回复: 或者你们自己定义消息,收到后,先通过UID找到消息,再调用updateMessage:status:这个方法把消息改成未读
    updateMessage:status:的方式,消息更新能同步到远端吗,需求是要更新同步到远端的
  • HeavyRain 20天前
    引用 10
    不需要,因为服务器发送消息,远端也能收到
  • 周大侠 20天前
    引用 11
    自定义一个不存储的消息,切换设备后,登录账号还能再次收到不存储的消息吗
  • 周大侠 20天前
    引用 12
    HeavyRain 机器人没有,server api有
    机器人可以新增 删除消息 api吗,能否支持一下这个功能
  • HeavyRain 20天前
    引用 13
    周大侠 自定义一个不存储的消息,切换设备后,登录账号还能再次收到不存储的消息吗
  • HeavyRain 20天前
    引用 14
    周大侠 机器人可以新增 删除消息 api吗,能否支持一下这个功能
    server api可以,但机器人api不能,因为机器人的权限是接近于普通用户,不能支持管理员权限。
  • 周大侠 20天前
    引用 15
    HeavyRain
    推送不存储的消息,客户端接收有时效性吗,IM发送给客户端,具体有什么规则,麻烦讲解下,谢谢。我们测了下,IM服务端发送就能收到,过了一会杀掉app后,再次打开就收不到了
  • 周大侠 20天前
    引用 16
    HeavyRain server api可以,但机器人api不能,因为机器人的权限是接近于普通用户,不能支持管理员权限。
    a、b、c、d四条消息,a、b、c已读,a消息改成未读后,涉及到消息未读数+1的处理,感觉也一些问题。还有在a改成未读后,会话列表能否显示a的这条消息,把a当做最新消息显示出来
  • HeavyRain 20天前
    引用 17
    周大侠 推送不存储的消息,客户端接收有时效性吗,IM发送给客户端,具体有什么规则,麻烦讲解下,谢谢。我们测了下,IM服务端发送就能收到,过了一会杀掉app后,再次打开就收不到了
    消息有存储计数、存储不计数、不存储和透传这4种类型。不存储和透传都是收到后不保存。区别就是不存储可以是离线收的,透传消息只能在线收。当发一条不存储消息时,如果接受者不在线,等上线时就会收到。当发一条透传消息时,如果接受者不在线,消息会抛弃。请确认你们发的是不存储消息。

    不存储消息只会接收一次,你在回复中说杀掉APP再打开收不到,请确认在杀掉之后打开之前有发送过不存储的消息
  • HeavyRain 20天前
    引用 18
    周大侠 a、b、c、d四条消息,a、b、c已读,a消息改成未读后,涉及到消息未读数+1的处理,感觉也一些问题。还有在a改成未读后,会话列表能否显示a的这条消息,把a当做最新消息显示出来
    排序问题是UI层做的,你们可以自己调整一下
  • 周大侠 19天前
    引用 19
    测试的前提是:第一台设备账号的消息(1003)已读
    现象:切换设备前,先收到不存储的消息,1003改成未读,又点成已读。切换设备后,还能再次收到不存储的消息,再次把1003改成未读,消息未读数也会+1。
    问题:1.为什么再次点已读后,切换设备还能再次收到不存储的消息?  2.请问这种情况怎么处理?
  • HeavyRain 19天前
    引用 20
    1.为什么再次点已读后,切换设备还能再次收到不存储的消息?  
    当切换设备时,会把最近指定的所有消息都收下来,包括不存储的消息。

    2.请问这种情况怎么处理?
    有个用户设置是控制会话未读的,scope是7,key是 “会话类型-会话线路-目标",比如群组的是 1-0-groupId,value是会话的最后阅读时间,可以检查,如果这个时间大于这个消息的时间就忽略掉
  • 周大侠 19天前
    引用 21
    可以给出示例代码吗,没有用过这个api
  • HeavyRain 19天前
    引用 22
    你找一下sdk里获取用户设置的接口,然后再搜索一下怎么用这个接口
  • 周大侠 19天前
    引用 23
    这个判断有问题,
  • 周大侠 19天前
    引用 24

    获取此会话的最后阅读时间 获取此会话的最后阅读时间

    测试结果:切换设备登录收到不存储消息后,获取此会话的最后阅读时间,并没有>不存储消息的发送时间,还是把1003改成未读

    问题:切换设备后,还能再次收到不存储的消息,请问怎么处理?

    其他疑问:1.切换设备前,再次点已读这个操作有没有同步到远端? 2.切换设备后获取会话的最后阅读时间是用客户端缓存的时间还是服务端的时间?

  • 周大侠 19天前
    引用 25
    3.再次点已读这个操作有没有更新会话的最后阅读时间?
  • HeavyRain 19天前
    引用 26
    这个我也没有更好的办法了,这种方法就是会有这个问题,你们看看产品能不能接受这个缺陷。如果接受不了,只能用admin权限了,先删除再重新发送
  • 周大侠 18天前
    引用 27
    周大侠 自定义一个不存储的消息,切换设备后,登录账号还能再次收到不存储的消息吗
    pc端切换设备之后新登录的设备,又没有收到不存储的消息。请问怎么解决
  • HeavyRain 18天前
    引用 28
    切换设备重新登录,会收取一定量的消息,这些消息是按照时间排序的,不会区分消息的存储类型(透传消息除外)
返回