快速接入
# 快速接入
## 初始化SDK
自定义Application,在项目的自定义Application中调用 initHtImSdk 初始化方法,初始化SDK。应在隐私协议通过后调用初始化方法。
```
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
HtImClientManager.getInstance().initHtImSdk(this,"dc44e4cb","76ec10d1dba73485fc655570e0d51e5f");
KLog.init(true);
}
@Override
public void onTerminate() {
super.onTerminate();
HtImClientManager.getInstance().cleanHtImSdk();
}
static {
ClassicsFooter.REFRESH_FOOTER_LOADING = "加载中...";
//设置全局的Header构建器
SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() {
@Override
public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) {
return new ClassicsHeader(context);//.setTimeFormat(new DynamicTimeFormat("更新于 %s"));//指定为经典Header,默认是 贝塞尔雷达Header
}
});
//设置全局的Footer构建器
SmartRefreshLayout.setDefaultRefreshFooterCreator(new DefaultRefreshFooterCreator() {
@Override
public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) {
//指定为经典Footer,默认是 BallPulseFooter
return new ClassicsFooter(context).setDrawableSize(20);
}
});
}
}
```
## 登录
调用 doHtImLogin 方法登录,登录成功失败结果通过回调接口 ServerInitCallbackListener 回调结果,成功后跳转页面初始化OA及IM相关业务。
若使用推送服务,需要配置vendorDeviceToken字段,将推送token传入。
```
HtImLoginConfig config = new HtImLoginConfig();
config.setServerUrl(url);//服务器地址
config.setLoginId(loginId);//登录账号Id
config.setPassword(password);//登录密码
config.setLanguageType("CN");//登录语言 "CN"-中文 "EN"-英文
config.setVendorDeviceToken("OPPO_CN_81d9c923b0f606774be3eb07c8a30aec");//厂商推送token
config.setCidDeviceToken("e7cee28a8ffb5272259bf04400ce05c8");//个推推送token 非必填
HtImClientManager.getInstance().doHtImLogin(config, new ServerInitCallbackListener() {
@Override
public void onError(int i, String s) {
ToastUtils.showShort(s);
}
@Override
public void onSuccess() {
ToastUtils.showShort("初始化成功");
startActivity(new Intent(LoginActivity.this, MainActivity.class));
}
});
```
## 初始化数据
登录成功后在MainActivity的onCreate中调用 initHtImData 初始化方法,并调用 setHtImRouteListener 注册全局路由监听。
```
HtImClientManager.getInstance().initHtImData(this);
HtImClientManager.getInstance().setHtImRouteListener(this);
```
在页面onCreate中或需要的位置添加聊天相关的监听。
```
//添加聊天相关监听
HtImClientManager.getInstance().addHtImChatListener(new HtImChatListener() {
@Override
public void onRecentMsgUnreadNum(int unreadNum) {
TextView textView = findViewById(R.id.chatMsgUnreadNum);
if (textView != null) {
if (unreadNum > 0) {
textView.setVisibility(View.VISIBLE);
textView.setText("" + unreadNum);
} else {
textView.setVisibility(View.GONE);
textView.setText("0");
}
}
}
@Override
public void onRecentToDoNum(int num) {
TextView textView = findViewById(R.id.chatMsgToDoNum);
if (textView != null) {
if (num > 0) {
textView.setVisibility(View.VISIBLE);
textView.setText("" + num);
} else {
textView.setVisibility(View.GONE);
textView.setText("0");
}
}
}
});
```
在页面退出时或在不需要监听时,移除注册的监听。
```
//移除单个聊天监听
HtImClientManager.getInstance().removeHtImChatListener(htImChatListener);
//移除所有聊天监听
HtImClientManager.getInstance().removeAllHtImChatListener();
```
## 退出登录
登录状态下,调用 doHtImLogout 方法退出登录。
```
HtImClientManager.getInstance().doHtImLogout(MainActivity.this);
```