利用小假期的时间学习了一下怎么使用腾讯云通信,过程中的坑还是比较多,写篇博客记录一下集成过程方便自己以后查看。
先看下效果图:
首先需要去腾讯云通信的官网去登录,并且创建一个云通信应用。
免费的就好,腾讯云通信相对于其他品牌免费版的来说,还是非常不错的。
这里会有一个SDKAPPID这个相当于你的标识,后面需要使用。
接着注册几个管理员账号,并且生成账号对应的userSig(登录的时候不需要密码,而是需要去验证userSig),注册流程:
创建好后需要下载公私钥,第一个坑来了…
你下载好的公私钥应该是这样的:
用记事本打开:
坑就在于,第一行和最后一行也是秘钥的一部分!!!!我生成userSig的时候多次是失败 就是只复制中间内容了!
然后全部复制:
接着去Github上下载腾讯云通信的Demo(因为TUIKit4.x之后不支持直接在gradle中导入了,必须去下载源码通过Module或者arr包的方式去引入,这点也是我绕坑时间比较长的)
Github地址:TIMSDK
下载下来可以根据文档先跑通去看一下他的源码,采用的mvp模式,所以看其中的逻辑还是比较容易的。跑通这个Demo比较简单,就不记录了,根据文档很简单。
文档地址:一分钟跑通Demo
下载好源码后接着创建一个空项目
引入imsdk,在app.gradle中加入如下配置:
api 'com.tencent.imsdk:imsdk:4.2.10'
并且在defaultConfig中添加以下配置:
ndk {
abiFilters "armeabi-v7a"
}
到这里,imsdk就导入成功,这里坑还是比较少,主要是下面的TUIKit集成。
打开刚刚下载的源码,编译没问题后,在你的项目中引入tuikit(import module):
导入成功后,你的项目中会出现tuikit,打开它目录下的gradle,修改里面的sdk版本等,修改为和自己项目一样的版本号:
在app.gradle中添加以下代码:
implementation project(path: ':tuikit')
编译一下,没有问题的话直接新建个类,继承Application,重写onCreate方法,在onCreate中初始化TUIKit:
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
//SDKAPPID 就是文章开头提到过的,在控制台上可以看
TUIKit.init(getApplicationContext(),你的SDKAPPID,BaseUIKitConfigs.getDefaultConfigs());
}
}
到这里并没有结束,简单写个登录界面,去实现一下最简单的登录操作。
xml:
对应的activity代码:
public class MainActivity extends BaseActivity {
static String TAG = "MainActivity";
String userSig = "登录的账号对应的userSig":
Button bnLogin;
EditText etUsername;
@Override
public int initLayout() {
return R.layout.activity_main;
}
@Override
public void initView() {
etUsername = findViewById(R.id.et_username);
bnLogin = findViewById(R.id.bn_login);
bnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String username = etUsername.getText().toString();
login(username,userSig);
}
});
}
@Override
public void initData() {
}
public void login(String identifier,String userSig){
// identifier为用户名,userSig 为用户登录凭证
TIMManager.getInstance().login(identifier, userSig, new TIMCallBack() {
@Override
public void onError(int code, String desc) {
//错误码 code 和错误描述 desc,可用于定位请求失败原因
//错误码 code 列表请参见错误码表
Log.e(TAG, "login failed. code: " + code + " errmsg: " + desc);
}
@Override
public void onSuccess() {
Log.e(TAG, "login succ");
}
});
}
public void loginOut(){
//登出
TIMManager.getInstance().logout(new TIMCallBack() {
@Override
public void onError(int code, String desc) {
//错误码 code 和错误描述 desc,可用于定位请求失败原因
//错误码 code 列表请参见错误码表
Log.d(TAG, "logout failed. code: " + code + " errmsg: " + desc);
}
@Override
public void onSuccess() {
//登出成功
}
});
}
/**
* 在收到服务器颁发的 userSig 后,调用IMSDK的 login 接口
* userId 用户账号
* userSig 您服务器给这个用户账号颁发的 IMSDk 鉴权认证
*/
private void onRecvUserSig(String userId,String userSig) {
TUIKit.login(userId, userSig, new IUIKitCallBack() {
@Override
public void onSuccess(Object data) {
/**
* IM 登录成功后的回调操作,一般为跳转到应用的主页(这里的主页内容为下面章节的会话列表)
*/
Log.e("imlogin success","登录成功");
Intent intent = new Intent(MainActivity.this, TalkActivity.class);
startActivity(intent);
}
@Override
public void onError(String module, int errCode, String errMsg) {
Log.e("imlogin fail", errMsg);
}
});
}
}
此时,你的界面只有一个文本框和登录按钮,单击登录看下日志,会打印是否成功。如果显示登录成功,那离这个Demo结束不远了。
腾讯云通信给我们提供了相当傻瓜式的用法,具体也可以看文档中TUIKit集成部分
复制源码中的以下内容:
对应的导下包,修复一下基本错误,就可以运行使用,别忘了修改你之前登录界面 登录成功后的逻辑,登录成功后跳转到对应的界面。
登录的账号就是你的管理员账号,可以创建多个。
聊天对象, 也是通过搜索管理员账号去发消息,单击加号,发起对话,输入你另外的管理员账号即可。
快速实现聊天功能,到这里就结束了。