环信即时通讯

环信是目前比较主流的一个通讯服务平台。他的底层是基于socket来实现的

  • Socket 又称为"套接字",,它与网络相关,学网络必学的一个知识
  • 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的每一端都称为一个socket
  • (1)TCP (传输控制协议)
    1.建立连接,形成传输数据的通道
    2.在连接中进行大数据传输(数据不受限制)
    3.通过3次握手完成连接:目的是可靠协议,安全送达
    4.必须建立连接效率会稍低

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界面显示。到这里我们就完成即时通信了。


你可能感兴趣的:(环信即时通讯)