离线消息, 即未读消息
离线消息是指未在客户端已读的消息, 即时通信 IM 支持离线消息缓存,即当用户不在线时,下次登录仍会拉取到离线消息, 通过 OnNewMessage 抛出. 默认情况下,一个终端通过 SDK 把离线消息拉取到本地后,即时通信 IM 服务器便会删除这些离线消息.
从业务功能看未读消息的同步.
假设终端A的用户1, 有几条用户2发的未读消息, 用户1想在终端B也有这几条未读消息的提醒
那么设置 disableAutoReport = YES, 关闭自动上报, 每次 Service 会通过 onNewMessages 下发消息提醒, 直到显式调用 setReadMessage 将消息进行已读上报才会停止下发
未读数的逻辑
无论 disableAutoReport 为 YES 还是 NO, 获取当前未读消息数量 getUnReadMessageNum, 都不会影响, 只要调用了已读上报 setReadMessage 未读数才会变化, 例如在会话进入/退出的时候设置 conversation setReadMessage:nil succ:nil fail:nil;
nil 表示上报最新消息, 也就是清零未读数数量.
漫游消息
用户更换终端的情况下,也可以获取到跟其他用户或者某个群的聊天记录. 相当于终端A有的消息和记录漫游到终端B. 可以解释为从云端拉取历史消息, 接口为 getMessage
最近联系人消息
最近联系人消息类似 QQ 的最近联系人列表中,可展示最近跟用户联系过的用户以及最后一条消息。SDK 接口为 getConversationList
历史消息
历史消息主要指本地的历史消息, 可以解释为从本地数据库中获取历史消息.接口为 getLocalMessage 如果不希望某消息能够从历史中拉到, 可以发在线消息(即用户在线时收到消息,如果用户不在线,下次登录也不会看到消息,可用于通知类消息,这种消息不会进行存储,也不会计入未读计数), 在线 sendOnlineMessage