老师,还有一种场景:在与测试号聊天页面收到测试号消息时,如果不回,那么收到的最新的消息就不会被置为已读状态,此时unreadCount一直等于1,按理说会执行else语句,但是因为是在聊天页面执行,不是在含有tabBar的消息页面,所以不会执行小程序提供的API,即不会执行else语句。随即就会抛出异常,去执行第33行的代码,若按视频中第33行代码,则unreadCount还是等于1,那么当返回含有tabBar的消息页面时,就会执行if语句了,就造成了tabBar有显示未读消息1,但是会话框没有未读消息标记。
然后我让抛出异常时将unreadCount设置为0,直接返回含有tabBar的消息页面时就会执行else语句,这样就解决了上述问题。
我查看了下,SDK的setMessageRead这个方法,它说只有在打开/切换会话时才会将未读消息设置为已读。然后在当前会话中收到消息,则不会将收到的最新消息设置为已读,不知道是不是bug还是我理解有问题…
(当然也可能是我之前代码有问题?但是,我试着打印调试了那些地方,也对照了一下源码,并没有发现什么问题。麻烦老师看看了)