环信是目前比较主流的一个通讯服务平台。他的底层是基于socket来实现的
1.首先我们需要下载环信的SDK包,然后在里面找见一个包含jar包的一个文件夹,
我们可以看到那个文件夹下含有三个子目录,里面放的都是so文件,然后我们将
jar包放在我们项目中的libs目录下(编译一下加入到项目中),然后在main目录下新建一盒jniLibs文件夹,
然后将三个字目录复制到这个目录下。
2.在环信上面创建一个新的应用程序,目的就是获取AppKey,它就是我们进行通信时的一个密钥。
就是说如果两个应用程序之间要进行通信的话,AppKey必须一致,而且我们需要注册一个IM用户,
这是我们在环信上面准备工作就注册完成了。
3.添加权限,它时环信要求我们必须加入的使用的权限,然后我们将之前的Appkey通过
application下面,它是按照键值对保存的,我们将value值写成我们自己的Appkey,接着注册一个环信必要的
服务,它是那个jar包中提供给我们的东西。然后接着创建一个环信必要的广播接收器,它也是jar包提供给我们
的。到此为止,我们就将SDK成功的导入完成了。
4.初始化SDK,先创建一个EMOptions对象,主要做一些配置信息,可不可以自动登陆,以及调试模式等等。
调用这个setAutoLogin()来判断是否可以自动登陆,false就代表不可以自动登陆
调用EMClient.getIntence().init()方法来进行初始化,然后将emOptions传入到这个方法里面,这时,我们的初始
化完成。
5.执行登陆功能,只需要调用EMClient.getIntence.login(user,pass,EMCallback);这个方法,EMCallback是一个
操作回调,这个操作回调会执行在子线程中。里面有三个回调方法。成功,失败,进度更新。
6.发送消息。首先创建一个消息对象EMMessage,通过调用createTexSendMessage(),里面放入消息内容和接收人
用户名,然后通过EMClient里面的sendMessage()发送消息。
7.接收消息。我们是通过添加监听器里面的onMessageReceived()回调方法中接收消息,它是执行在子线程中的,
添加监听器就是在EMClient中有一个addMessageListener()方法中添加的,当程序结束时我们要在onDestory()方法
中销毁它,EMClient中有一个removeMessageListener()中注销这个监听,否则的话会造成内存泄漏。
8.解析消息。我们在onMessageReceived()回调方法中进行解析,它里面是一个EMMessage泛型的list集合,因为
我们要判断是否是群聊还是单聊,他有可能会就收很多个消息来进行解析,然后通过for循环遍历消息,EMMessage
里面有一个getForm获取到用户名信息,接着通过getType()获取消息来得到一个type类型,然后我们通过switch()判断
这个消息类型是什么类型的,是什么类型我们就用什么控件,如果他是文本消息的话,我们就通过getBody()将他强转
成EMTextMessageBody类型的对象,最后通过getMessage()获取这个文本内容。因为这个回调方法是执行在子线
程中的,当我需要把这个消息设置给我的静态文本框时,我们就需要用到handler里面的post方法将他执行在主线程中
更新UI界面显示。到这里我们就完成即时通信了。