Android基于环信SDK开发IM即时聊天
原文地址:http://blog.csdn.net/diyangxia/article/details/45393599
目前市面上我了解的做第三方即时聊天SDK的有两家:[环信](http://www.easemob.com)、[融云](http://www.rongcloud.cn),这里我使用环信SDK来完成即时聊天的初步开发工作。
下面先奉上1张效果图: 
1、开发准备 ======
首先要到环信官网注册开发者账号,目前只有企业账号注册,不过反正也不会去审核企业信息的正确与否,所以随便填写个自己喜欢的ID就好了。注册成功后,登陆到环信管理后台,新建一个应用,环信的appkey就是根据你的应用名和企业ID来确定的,比如我的企业ID叫SIP,应用名叫Luffy,那么我的appkey就是SIP#Luffy,简单好记。 然后需要在IDE(这里我还是使用的Eclipse)中新建一个Android Project,取名叫IMSample,该项目我托管在Coding平台下,目前是private的。 最后在环信SDK官网下载最新的SDK,这样准备工作就完成了。
2、登陆注册 ====== 1、初始化SDK -------- 把下载的SDK中的jar包和so文件放在对应目录下,在AndroidManifest.xml中添加appkey声明,
然后是在代码中初始化SDK,建议继承Application类,在自己的application中初始化SDK ``` int pid = android.os.Process.myPid(); String processAppName = getAppName(pid); if (processAppName == null || !processAppName.equalsIgnoreCase("com.example.imsample")) { Log.e(TAG, "enter the service process!"); return; } EMChat.getInstance().init(getApplicationContext()); ```2、注册 ---- 注册模式,我选择开放注册,然后在注册界面添加图片验证码功能,降低恶意注册垃圾用户的可能性。 ``` EMChatManager.getInstance().createAccountOnServer(userName, password); ```  注册成功后,我们可以在环信管理后台中看到刚刚注册的用户,当然我们也可以在后台手动界面化添加注册用户  3、登陆 ----  然后回到登陆界面,使用刚刚注册的账号登陆 ``` EMChatManager.getInstance().login(userName, password, new EMCallBack() {// 回调 @Override public void onSuccess() { runOnUiThread(new Runnable() { public void run() { EMGroupManager.getInstance().loadAllGroups(); EMChatManager.getInstance() .loadAllConversations(); Toast.makeText(getApplicationContext(), "登陆成功", Toast.LENGTH_SHORT).show(); startActivity(new Intent( ChatLoginActivity.this, ManiActivity.class)); } }); } @Override public void onProgress(int progress, String status) { } @Override public void onError(int code, String message) { if (code == -1005) { message = "用户名或密码错误"; } final String msg = message; runOnUiThread(new Runnable() { public void run() { Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show(); } }); } }); ``` 如果下次再进入应用,默认是自动登陆的,当然也可以在application中设置不自动登陆 ``` EMChat.getInstance().setAutoLogin(false) ``` 不过我们需要在自动登录的地方加入以下代码,不然会获取不到好友列表和会话信息等 ``` if (EMChat.getInstance().isLoggedIn()) { Log.d("TAG", "已经登陆过"); EMGroupManager.getInstance().loadAllGroups(); EMChatManager.getInstance().loadAllConversations(); startActivity(new Intent(ChatLoginActivity.this, ManiActivity.class)); } ``` 4、注销 ------- 注销当前登陆用户前,记得清空保存的用户数据 ``` EMChatManager.getInstance().logout(new EMCallBack() { @Override public void onSuccess() { // 跳转到登陆页面 } @Override public void onError(int code, String message) { // 登出失败 } @Override public void onProgress(int progress, String status) { // 正在退出 } }); ```
3、好友管理 ====== 1、好友的添加 ----- 添加好友只需要一行代码,不过为了功能的完整,需要对添加好友作异步处理  ```