【GT-Android应用开发之消息处理】

    前段时间由于公司业务需要,开发了一个聊天应用。由于本应用后期会迁移到其他一些项目中,当做一个功能模块存在,因此并不需要实现一些复杂的功能、消息类型等。通过几次小型的会议,与其他几个项目组的人员及领导沟通最终确定了该应用的基本功能,主要如下:

    1、消息类型包括简单的文字消息、表情消息、系统消息以及图片消息(拍照上传与图库选择)

    2、后台基于开源项目GoIM进行二次开发

    3、消息通过推送的方式,即用户A调用接口通知服务器要给B发消息,服务器将消息推送给用户B

    4、群聊,类似于群推送,以列表的形式保存群用户并依次推送消息

    5、好友列表,与后台服务器交互获取好友即群列表组成新的列表并渲染

    6、会话列表

    7、对话界面,主要实现消息的发送、展现以及删除

    虽然该项目看似功能不多,但是其逻辑是比较复杂的,今天在这里对于消息的处理进行分享:

    知识点一:推送方式

    客户端与服务端采用Socket实现长连接,并利用心跳接口避免长时间不交互而导致Socket关闭,建立连接后服务器通过Socket向客户端推送消息,用户发送消息则是通过Http请求通知服务器要给其他用户发送消息,请求数据包括接收方的id、时间以及消息等内容,服务器解析后进行消息的推送

    知识点二:消息类型

    前面已经提到过,本应用支持的消息类型有简单的文字消息、表情消息、系统消息以及图片消息,接下来将对这四种类型的消息处理进行一个粗略的介绍。

    1、文字消息,该消息类型是最基本的消息,不需要对格式进行特殊的处理

    2、表情消息,其实与很多IM应用一样,本应用的表情其实也是一串特殊格式的文字消息,只不过在界面上展示的时候,会进行解析,获取相应的图片进行展示

    3、系统消息,参照QQ它的系统消息其实就可以当做一个特殊的用户发送的消息

    4、图片消息,与表情消息类似,它也是按照一定的格式拼接而成的字符串,只不过最终解析出来的会是一个url

    知识点三:消息分发

    本次应用开发采用Activity+Service+Breacast的方式实现消息分发机制,在主Activity启动的时候启动一个Service并开启子线程接收后台消息,接收消息后通过广播进行发送,注册广播监听的Activity便可接到广播并进行相应的操作

    最后,由于项目是公司在用的,就不附带源码了。。。

猜你喜欢

转载自blog.csdn.net/qq_17433217/article/details/80801376