关于融云获取未读消息数的流程和操作

【关于融云获取未读消息数的流程和操作】按照融云官方中的操作来看,中需要进行融云SDK的初始化以及自定义消息的配置,同时在进入后台的时候以及收到通知的时候有对应的处理,如下图
但是这个通常来说不能解决两个问题,第一个是进入应用后,或者登录后立刻获取当前用户的未读消息数,另外就是不能实时的获取用户消息数,那么这个时候就要动一点歪脑筋了 。
上面是废话,下面是重点:

关于融云获取未读消息数的流程和操作

文章插图
首先解决第一个问题,成功进入登录进入应用的主体页面后,立刻获取未读消息数,我这边的做法是,在登录成功之后我这边在中有一个切换根视图的方法,所以我在切换根视图之后,就回去调用融云的方法以及系统消息未读数的接口,计算后放到上,如图
为什么要加延迟呢?由于融云的特殊机制,登录成功之后要在本地建立一个消息的数据库,包含的有用户的信息,而查找数据库需要消耗一定的时间,如果不延迟,有很高的概率无法正常获取的到未读消息数量,而且还要注意的是,相关操作建议刻意写在主线程里面,融云的所有操作,一定要放主线程,不然要么会页面卡住,要么就是会有断点报错,这是重点 。
第二个问题,实时未读消息的获取,经过对融云相关SDK的查找,该功能依赖于一个回调,因此我这边写了一个单例类,用来当做接收新消息的代理类,在其内部更改的未读消息数,所以步骤如下:
关于融云获取未读消息数的流程和操作

文章插图
第一步:
第二步:
再次要说明一下,那个通知也是十分有必要的,如果有人遇到需要根据融云的IM的OC版本demo进行导入操作的时候,一定要注意,它里面的任何通知操作都有其基本的意义,一定要注释或者在项目中配置好,不要删除不要删除不要删除,我此处用的通知是刷新作为子页面使用的融云聊天列表的通知,如果没有这个通知,如果你一直停留在聊天页面,有新消息进来也不会刷新页面,就是这么的恶心!而根据融云的设计,你每次切换到聊天页面的时候,他也会刷新聊天列表和未读数,这就是他最最恶心的地方,因此强烈建议,多看看他的源码,坑很深 。