环信IM集成到android项目

大致步骤为:1.输入用户名密码;2.appServer获取信息进行注册;3,注册成功后将该信息注册到环信服务器;4,该用户登录appServer;5,登录成功再登陆环信服务器;6,登录成功方可进行聊天
注册方法在客户端服务器端都可以, 注册模式分两种,开放注册和授权注册。只有开放注册时,才可以客户端注册。开放注册是为了测试使用,正式环境中不推荐使用该方式注册环信账号;授权注册的流程应该是您服务器通过环信提供的 REST API 注册,之后保存到您的服务器或返回给客户端。
强烈建议开发者通过后台调用 REST 接口去注册环信 ID,客户端注册方法不提倡使用。
服务端代码可参考官网提供的,本人从事java开发,官网代码量大无从下手,所以我自己整理了一份,包括了登录注册单聊群聊等等功能,只需要改几个参数就可以使用,代码会在以后贴出,按照以上面六步进行一一讲解。
一。用户注册appServer我就不赘言了,当用户已经注册成功后还要注册到IM中,代码如下:
public TalkNode userSave ( String username , String password ) throws Exception {
Map < String , Object > param = new HashMap < String , Object >();
param . put ( "username" , username );
param . put ( "password" , password );
//param.put("nickname",nickname);
return service . request ( _Global . URL_USER , _Global . HTTP_METHOD_POST , param , auth ,null);
}
public TalkNode userSave ( String [] username , String [] password ) throws Exception {
if ( username ==null|| password ==null|| username . length != password . length ){
return null;
}
List < Map < String , Object >> param = new ArrayList < Map < String , Object >>();
for ( int i = 0 ; i < username . length ; i ++){
Map < String , Object > map = new HashMap < String , Object >();
map . put ( "username" , username [ i ]);
map . put ( "password" , password [ i ]);
param . add ( map );
}
return service . request ( _Global . URL_USER , _Global . HTTP_METHOD_POST , param , auth ,null);
}
可以进行单人注册和多人注册。
授权注册
接口限流说明:同一个 APP 每秒最多可调用30次,超过的部分会返回429或503错误。所以在调用程序中,如果碰到了这样的错误,需要稍微暂停一下并且重试。如果该限流控制不满足需求,请联系商务经理开放更高的权限。
在android端注册即开放注册代码如下:
//注册失败会抛出HyphenateException(不提倡)
EMClient.getInstance().createAccount(username, pwd); //同步方法
注册成功后,便会在你环信管理后台IM用户中多出一条数据,说明该用户已经存在IM的数据库中,是IM的一员了

二。用户登录
先去自己服务器验证是否登录成功,登录成功后再去IM验证是否登录成功。登录代码在android端
/**
* 环信IM登录方法
* 从app服务器端获取已经在环信注册的用户名密码来登陆
*/
private void loginIM(String username,String password) {
if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password)) {
ToastUtils.ShortToast(LoginActivity.this,"用户名或密码不能为空");
return;
}
EMClient.getInstance().login(username, password, new EMCallBack() {
/**
* 登陆成功的回调
*/
@Override
public void onSuccess() {
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.w("User测试,LoginAc","成功登陆IM!");
// 加载所有会话到内存
EMClient.getInstance().chatManager().loadAllConversations();
// 加载所有群组到内存,如果使用了群组的话
// EMClient.getInstance().groupManager().loadAllGroups();
LoginActivity.this.finish();
}
});
}
/**
* 登陆错误的回调
*/
@Override
public void onError(final int i, final String s) {
runOnUiThread(new Runnable() {
@Override
public void run() {
LogUtils.d("环信", "IM登录失败 Error code:" + i + ", message:" + s);
/**
* 关于错误码可以参考官方api详细说明
* http://www.easemob.com/apidoc/android/chat3.0/classcom_1_1hyphenate_1_1_e_m_error.html
*/
switch (i) {
// 网络异常 2
case EMError.NETWORK_ERROR:
Toast.makeText(LoginActivity.this, "IM网络错误 code: " + i + ", message:" + s, Toast.LENGTH_LONG).show();
break;
// 无效的用户名 101
case EMError.INVALID_USER_NAME:
Toast.makeText(LoginActivity.this, "IM无效的用户名 code: " + i + ", message:" + s, Toast.LENGTH_LONG).show();
break;
// 无效的密码 102
case EMError.INVALID_PASSWORD:
Toast.makeText(LoginActivity.this, "IM无效的密码 code: " + i + ", message:" + s, Toast.LENGTH_LONG).show();
break;
// 用户认证失败,用户名或密码错误 202
case EMError.USER_AUTHENTICATION_FAILED:
Toast.makeText(LoginActivity.this, "IM用户认证失败,用户名或密码错误 code: " + i + ", message:" + s, Toast.LENGTH_LONG).show();
break;
// 用户不存在 204
case EMError.USER_NOT_FOUND:
Toast.makeText(LoginActivity.this, "IM用户不存在 code: " + i + ", message:" + s, Toast.LENGTH_LONG).show();
break;
// 无法访问到服务器 300
case EMError.SERVER_NOT_REACHABLE:
Toast.makeText(LoginActivity.this, "IM无法访问到服务器 code: " + i + ", message:" + s, Toast.LENGTH_LONG).show();
break;
// 等待服务器响应超时 301
case EMError.SERVER_TIMEOUT:
Toast.makeText(LoginActivity.this, "IM等待服务器响应超时 code: " + i + ", message:" + s, Toast.LENGTH_LONG).show();
break;
// 服务器繁忙 302
case EMError.SERVER_BUSY:
Toast.makeText(LoginActivity.this, "IM服务器繁忙 code: " + i + ", message:" + s, Toast.LENGTH_LONG).show();
break;
// 未知 Server 异常 303 一般断网会出现这个错误
case EMError.SERVER_UNKNOWN_ERROR:
Toast.makeText(LoginActivity.this, "IM未知的服务器异常 code: " + i + ", message:" + s, Toast.LENGTH_LONG).show();
break;
default:
Toast.makeText(LoginActivity.this, "IM ml_sign_in_failed code: " + i + ", message:" + s, Toast.LENGTH_LONG).show();
break;
}
}
});
}
@Override
public void onProgress(int i, String s) {
}
});
}
登录注册步骤如上,还会推出单聊群里和聊天室的内容

代码不懂的请留言。。。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

四角天空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值