在IM越来越火热的今天,写这篇文章并不是要鼓吹IM有多好,大家快来用,而是作为一个移动开发者,分享一些App集成IM功能的经历,供大家参考与借鉴。
为一款App集成IM功能,主要有以下3种方式:
一、轮询+推送
13年的时候,做过一个移动医疗项目,在产品的场景设计里,专家并不会守着App并及时回复患者,而是抽空、批量的回复,鉴于当时的资源与环境,采用“轮询+推送”来实现聊天功能,即:若当前在聊天界面,就通过http接口每15秒查询一次新消息并显示;若不在聊天界面,有新消息时就通过推送发通知过来,点击推送通知,跳转到聊天界面并刷新。
效果:实现文字、图片、语音 3种类型消息的收发
资源:1 Android、1 iOS、1后台与接口
用时:1周
潜在问题:轮询并不能真正达到“即时”通讯,推送并非100%可靠
附上效果图:
二、自建长连接
14年的时候,做过一个夜店O2O项目,里面有社交模块,正好当时新来了一位架构师,于是由他起草并用C++实现了基于socket+自定义协议的即时通讯服务。
效果:实现文字、表情、图片、语音、位置 5种类型消息的收发
资源:1 Android、1 iOS、1后台与接口
用时:服务端架设1.5月,客户端单聊1.5月,群聊0.5月
潜在问题&#x