环信sdk android 聊天,Android基于环信SDK开发IM即时聊天

根据用户移动地图的位置,显示在视野范围内的建筑物,简单的思路是,添加地图监听,当地图移动结束之后,计算出当前屏幕四个角的GeoPoint,根据这4个点,通过mys

目前市面上我了解的做第三方即时聊天SDK的有两家:环信、融云,这里我使用环信SDK来完成即时聊天的初步开发工作。

下面先奉上1张效果图:

fbcae653ffb4b1a071be75dad9d13fc4.png

1、开发准备

首先要到环信官网注册开发者账号,目前只有企业账号注册,不过反正也不会去审核企业信息的正确与否,所以随便填写个自己喜欢的ID就好了。注册成功后,登陆到环信管理后台,新建一个应用,环信的appkey就是根据你的应用名和企业ID来确定的,比如我的企业ID叫SIP,应用名叫Luffy,那么我的appkey就是SIP#Luffy,简单好记。

然后需要在IDE(这里我还是使用的Eclipse)中新建一个Android Project,取名叫IMSample,该项目工程代码目前托管在CSDN平台下,传送门。

最后在环信SDK官网下载最新的SDK,这样准备工作就完成了。

2、登陆注册

1、初始化SDK

把下载的SDK中的jar包和so文件放在对应目录下,在AndroidManifest.xml中添加appkey声明,然后是在代码中初始化SDK,建议继承Application类,在自己的application中初始化SDK

int pid = android();

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);

872aa97e4502ae8a0ea7f61df747285a.gif

注册成功后,我们可以在环信管理后台中看到刚刚注册的用户,当然我们也可以在后台手动界面化添加注册用户

eb3c78fc629c7c709e7e717890fefe0b.png

3、登陆

9cd8fc519f0805c1afde73ed2d3a78e2.gif

然后回到登陆界面,使用刚刚注册的账号登陆

EMChatManager.getInstance().login(userName, password, () {

runOnUiThread(new Runnable() {

() {

EMGroupManager.getInstance().loadAllGroups();

EMChatManager.getInstance()

.loadAllConversations();

Toast.makeText(getApplicationContext(), "登陆成功",

Toast.LENGTH_SHORT).show();

startActivity(new Intent(

ChatLoginActivity.this,

ManiActivity.class));

}

});

}

(int progress, String status) {

}

(int code, String message) {

if (code == -1005) {

message = "用户名或密码错误";

}

final String msg = message;

runOnUiThread(new Runnable() {

() {

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() {

() {

// 跳转到登陆页面

}

(int code, String message) {

// 登出失败

}

(int progress, String status) {

// 正在退出

}

});

3、好友管理

1、好友的添加

根据环信SDK官方开发文档介绍,需要对添加好友作异步处理

99a4bc0db7917400575bd0697f500e2b.png

try {

EMContactManager.getInstance().addContact(idStr, reasonStr);

Log.i("TAG", "请求发送成功,等待对方验证");

} catch (EaseMobException e) {

// TODO Auto-generated catch block

e.printStackTrace();

Log.i("TAG", "addContact-Errcode==>" + e.getErrorCode());

}

2、好友申请的同意与拒绝

设置一个好友监听器来监听应用程序中好友的状态,同时告诉EMChat已经初始化完毕,可以开始监听了

99d1f1a540d7f71b937b918d80ff9f26.png

EMContactManager.getInstance().setContactListener(

new MyContactListener());

EMChat.getInstance().setAppInited();

继承EMContactListener实现的自定义好友监听器监听了五种不同的好友状态变化

{

(String username) {

// 好友请求被同意

Log.i("TAG", "onContactAgreed==>" + username);

// 提示有新消息

EMNotifier.getInstance(getApplicationContext()).notifyOnNewMsg();

Toast.makeText(getApplicationContext(), username + "同意了你的好友请求",

Toast.LENGTH_SHORT).show();

}

(String username) {

// 好友请求被拒绝

Log.i("TAG", "onContactRefused==>" + username);

}

(String username, String reason) {

// 收到好友添加请求

Log.i("TAG", username + "onContactInvited==>" + reason);

showAgreedDialog(username, reason);

EMNotifier.getInstance(getApplicationContext()).notifyOnNewMsg();

}

(List usernameList) {

// 好友被删除时回调此方法

Log.i("TAG", "usernameListDeleted==>" + usernameList.size());

}

(List usernameList) {

// 添加了新的好友时回调此方法

for (String str : usernameList) {

Log.i("TAG", "usernameListAdded==>" + str);

}

}

}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值