xiaonao00 2020-03-03
1、需求:
仿制微信启动页后的四个页面
聊天页面可打开,可以自由模拟聊天
联系人界面可自由添加联系人,联系人信息可点开
二维码可更换,头像可更换,id可更换,昵称可更换
需要有群发功能,群发消息支持图片和问题,界面要高仿,支持消息删除
2、实现:
不能重复造轮子,感谢前辈的无私奉献,基本实现了需求点1.
已有项目的实现方案是底层腾讯im ,上层flutter制作,通过插件调用。需求点2和3要求高度自由定制,im不能实现虚拟聊天和虚拟好友,因此考虑
方案1:用flutter实现im会话管理,联系人管理功能,实现自由定制
方案2:替换掉im、逻辑层代码直接实现数据组织,架空im;
方案3:部分替换im功能,如联系人,屏蔽im接口,通过缓存和消息机制实现自由添加好友和动态展示,会话功能仍然使用im原有功能。
最后选择了方案3实现。原因是改动量小,整体实现im会话管理改动和测试量太大。替换掉im工作量更是不能接受。方案3较为灵活,且避免了会话管理等细节的重复实现。较为经济
整体方案:联系人屏蔽im接口。由缓存和逻辑层配合实现。
聊天功能 由im接口实现,互发消息通过@字符前缀实现。、模拟对方发消息的时候,前缀@,实际存储仍然是当前用户发送消息。view层解析时候,解析为对方消息
群发功能:界面修改。将发送人信息封装到消息中。view层解析接收人并展示。图片消息复用path字段,view层需要解析正式地址,展示到页面上
二维码等更换功能,由相应逻辑部分实现,增加全局存储参数功能。
效果图
微信开发中遇到返回上一页面,android是刷新的但ios不会刷新页面 方法如下:$(function () {. var isPageHide = false; isPageHide = true;