首先 去环信官网注册账号,并且根据文档进行app关联操作
安装sdk
//环信客服SDK
implementation 'com.hyphenate:kefu-easeui-android:latest.release'
//或者 compile 'com.hyphenate:kefu-easeui-android:1.1.9r2'
//EaseUI中 头像获取用到了glide,请添加glide库
implementation 'com.github.bumptech.glide:glide:4.7.1' //其他版本也可以
implementation 'com.easemob:kefu-sdk:1.1.9r2'
初始化环信
在MyApplication 的onCreate()中
ChatClient.Options options = new ChatClient.Options();
options.setAppkey("***#***");//必填项,appkey获取地址:kefu.easemob.com,“管理员模式 > 渠道管理 > 手机APP”页面的关联的“AppKey”
options.setTenantId("******");//必填项,tenantId获取地址:kefu.easemob.com,“管理员模式 > 设置 > 企业信息”页面的“租户ID”
ChatClient.getInstance().init(this, new ChatClient.Options().setConsoleLog(true));
// Kefu SDK 初始化
if (!ChatClient.getInstance().init(this, options)){
return;
}
// Kefu EaseUI的初始化
UIProvider.getInstance().init(this);
//后面可以设置其他属性
最好将用户注册放在服务器端进行
ChatClient.getInstance().register(“账号”, “密码”), new Callback(){
@Override
public void onSuccess() {
}
@Override
public void onError(int code, String error) {
}
@Override
public void onProgress(int progress, String status) {
}
});
创建ChatAcActivity.class
import android.graphics.Color;
import android.os.Build;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import com.hyphenate.helpdesk.easeui.ui.ChatFragment;
import R;
public class ChatAcActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat_ac);
ChatFragment chatFragment = new ChatFragment();
chatFragment.setArguments(getIntent().getExtras());
getSupportFragmentManager().beginTransaction().add(R.id.container, chatFragment).commit();
View view = getWindow().getDecorView();
view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
//得到当前界面的装饰视图
if(Build.VERSION.SDK_INT >= 21) {
View decorView = getWindow().getDecorView();
//设置让应用主题内容占据状态栏和导航栏
int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
decorView.setSystemUiVisibility(option);
//设置状态栏和导航栏颜色为透明
getWindow().setStatusBarColor(Color.TRANSPARENT);
getWindow().setNavigationBarColor(Color.TRANSPARENT);
}
//隐藏标题栏
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
}
}
资源文件
activity_chat_ac.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
拉起客服聊天时调用
这是测试时候图省事这么写的 不建议学我
if (ChatClient.getInstance().isLoggedInBefore()) {
Intent intent2 = new IntentBuilder(getContext())
.setTargetClass(ChatAcActivity.class)
.setTitleName("客服")//这是传到聊天界面的客服昵称,
.setServiceIMNumber("*****") //获取地址:“管理员模式 > 渠道管理 > 手机APP”页面的关联的“IM服务号”
.build();
startActivity(intent2);
} else {
ChatClient.getInstance().login(sp.getString("userName",null),sp.getString("password",null), new Callback(){
@Override
public void onSuccess() {
if (ChatClient.getInstance().isLoggedInBefore()) {
Intent intent2 = new IntentBuilder(getContext())
.setTargetClass(ChatAcActivity.class)
.setTitleName("客服")//这是传到聊天界面的客服昵称,
.setServiceIMNumber("*****") //获取地址:“管理员模式 > 渠道管理 > 手机APP”页面的关联的“IM服务号”
.build();
startActivity(intent2);}
else
{
}
}
@Override
public void onError(int code, String error) {
if (ChatClient.getInstance().isLoggedInBefore()) {
Intent intent2 = new IntentBuilder(getContext())
.setTargetClass(ChatAcActivity.class)
.setTitleName("客服")//这是传到聊天界面的客服昵称,
.setServiceIMNumber("*****") //获取地址:“管理员模式 > 渠道管理 > 手机APP”页面的关联的“IM服务号”
.build();
startActivity(intent2);}
else
{
}
}
@Override
public void onProgress(int progress, String status) {
if (ChatClient.getInstance().isLoggedInBefore()) {
Intent intent2 = new IntentBuilder(getContext())
.setTargetClass(ChatAcActivity.class)
.setTitleName("客服")//这是传到聊天界面的客服昵称,
.setServiceIMNumber("*****") //获取地址:“管理员模式 > 渠道管理 > 手机APP”页面的关联的“IM服务号”
.build();
startActivity(intent2);}
else
{
}
}
});
}