利用小假期的时间学习了一下怎么使用腾讯云通信,过程中的坑还是比较多,写篇博客记录一下集成过程方便自己以后查看。
先看下效果图:
首先需要去腾讯云通信的官网去登录,并且创建一个云通信应用。
免费的就好,腾讯云通信相对于其他品牌免费版的来说,还是非常不错的。
这里会有一个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 {@Overridepublic void onCreate() {super.onCreate();//SDKAPPID 就是文章开头提到过的,在控制台上可以看TUIKit.init(getApplicationContext(),你的SDKAPPID,BaseUIKitConfigs.getDefaultConfigs());}
}
到这里并没有结束,简单写个登录界面,去实现一下最简单的登录操作。
xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:orientation="vertical"tools:context=".MainActivity"><EditTextandroid:id="@+id/et_username"android:layout_width="match_parent"android:layout_height="40dp"/><Buttonandroid:id="@+id/bn_login"android:layout_width="match_parent"android:layout_height="40dp"android:text="登录"/></LinearLayout>
对应的activity代码:
public class MainActivity extends BaseActivity {static String TAG = "MainActivity";String userSig = "登录的账号对应的userSig":Button bnLogin;EditText etUsername;@Overridepublic int initLayout() {return R.layout.activity_main;}@Overridepublic void initView() {etUsername = findViewById(R.id.et_username);bnLogin = findViewById(R.id.bn_login);bnLogin.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String username = etUsername.getText().toString();login(username,userSig);}});}@Overridepublic void initData() {}public void login(String identifier,String userSig){// identifier为用户名,userSig 为用户登录凭证TIMManager.getInstance().login(identifier, userSig, new TIMCallBack() {@Overridepublic void onError(int code, String desc) {//错误码 code 和错误描述 desc,可用于定位请求失败原因//错误码 code 列表请参见错误码表Log.e(TAG, "login failed. code: " + code + " errmsg: " + desc);}@Overridepublic void onSuccess() {Log.e(TAG, "login succ");}});}public void loginOut(){//登出TIMManager.getInstance().logout(new TIMCallBack() {@Overridepublic void onError(int code, String desc) {//错误码 code 和错误描述 desc,可用于定位请求失败原因//错误码 code 列表请参见错误码表Log.d(TAG, "logout failed. code: " + code + " errmsg: " + desc);}@Overridepublic void onSuccess() {//登出成功}});}/*** 在收到服务器颁发的 userSig 后,调用IMSDK的 login 接口* userId 用户账号* userSig 您服务器给这个用户账号颁发的 IMSDk 鉴权认证*/private void onRecvUserSig(String userId,String userSig) {TUIKit.login(userId, userSig, new IUIKitCallBack() {@Overridepublic void onSuccess(Object data) {/*** IM 登录成功后的回调操作,一般为跳转到应用的主页(这里的主页内容为下面章节的会话列表)*/Log.e("imlogin success","登录成功");Intent intent = new Intent(MainActivity.this, TalkActivity.class);startActivity(intent);}@Overridepublic void onError(String module, int errCode, String errMsg) {Log.e("imlogin fail", errMsg);}});}
}
此时,你的界面只有一个文本框和登录按钮,单击登录看下日志,会打印是否成功。如果显示登录成功,那离这个Demo结束不远了。
腾讯云通信给我们提供了相当傻瓜式的用法,具体也可以看文档中TUIKit集成部分
复制源码中的以下内容:
对应的导下包,修复一下基本错误,就可以运行使用,别忘了修改你之前登录界面 登录成功后的逻辑,登录成功后跳转到对应的界面。
登录的账号就是你的管理员账号,可以创建多个。
聊天对象, 也是通过搜索管理员账号去发消息,单击加号,发起对话,输入你另外的管理员账号即可。
快速实现聊天功能,到这里就结束了。