查看: 1713|回复: 0

SAMIM专业版iOS优化之离线消息

[复制链接]

3

主题

3

帖子

21

积分

积分
21
发表于 2018-11-2 19:07:02 | 显示全部楼层 |阅读模式
SAMIM专业版iOS优化之离线消息
      用户登录账号并连接socket成功后,会收到好友对其发送的离线消息。每条消息独立,当离线消息数量非常庞大时,数据库的插入、界面刷新操作频繁,APP就会卡顿。对此我们分为两步进行了优化。
一、处理消息类型为1000的离线消息计数器。用户登录成功后,会接收到一条消息类型为1000的计数消息,而不是之前多个独立的消息。服务器经过合并统计之后,将所有的离线消息,按照FromId(消息发送者ID)、FromType(会话类型)统计出数量,并且分别将其最后一条消息的内容、时间赋值到计数消息中。手机端同时修改了消息处理逻辑,增加是否为离线消息计数器的判断。SessionModel也同时新增了两个unReadOfflineMessageNumunRead和OnlineMessageNum两个参数,分别记录离线消息和在线消息的未读数量,原本的unReadMessageNum改为adOfflineMessageNumunRead与OnlineMessageNum的总和。解析计数消息获取到来自不同好友的具体内容,显示在首页的session列表中。对用户来说,可以看到好友发来的消息数量以及最后一条消息的时间和内容。但此时,这些离线消息并没有真正的保存到手机上。化繁为简,这样极大减少了数据库的查询及界面的刷新操作,提高了页面的流畅度。
二、发送消息类型为1001的离线消息的请求。用户进入到某个好友的聊天界面时,手机端给服务器发送一条获取该好友所有离线消息的请求。手机端获取到离线消息后,按照在线消息的处理方式,存储并显示所有消息。这时该好友的全部离线消息已从服务器发送至手机端。

回复

使用道具 举报

友情链接

热点

返回列表 发新帖
您需要登录后才可以回帖 登录

本版积分规则

Copyright © 2018 SAMIM.All Rights Reserved

快速回复 返回顶部 返回列表