Android腾讯云通信集成记录(快速实现聊天功能)

利用小假期的时间学习了一下怎么使用腾讯云通信,过程中的坑还是比较多,写篇博客记录一下集成过程方便自己以后查看。

先看下效果图:

在这里插入图片描述
首先需要去腾讯云通信的官网去登录,并且创建一个云通信应用。
在这里插入图片描述
免费的就好,腾讯云通信相对于其他品牌免费版的来说,还是非常不错的。
这里会有一个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:

<?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">

    <EditText
        android:id="@+id/et_username"
        android:layout_width="match_parent"
        android:layout_height="40dp"/>

    <Button
        android: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;

    @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集成部分
复制源码中的以下内容:
在这里插入图片描述 在这里插入图片描述
对应的导下包,修复一下基本错误,就可以运行使用,别忘了修改你之前登录界面 登录成功后的逻辑,登录成功后跳转到对应的界面。

登录的账号就是你的管理员账号,可以创建多个。
聊天对象, 也是通过搜索管理员账号去发消息,单击加号,发起对话,输入你另外的管理员账号即可。
在这里插入图片描述
在这里插入图片描述

快速实现聊天功能,到这里就结束了。

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值