最近研究了一下腾讯云通信IM的相关内容,腾讯云通信提供了聊天需要的功能,包括C2C聊天,群组聊天,可以提供类似于QQ级别通信服务。同时对于没有后台的开发者,腾讯云通信提供了账号托管服务。最后说最重要的,腾讯云通信有专门的开发者技术交流群,有任何问题都可以在里面@技术开发人员,里面的开发者态度很好,比网易云什么的强多了,而且腾讯云通信IM的开发文档和demo也比较全面,可以学到不少开发知识和开发技巧。

云通信首页:https://cloud.tencent.com/product/im
云通信开发指南:https://cloud.tencent.com/document/product/269/9227

第一点:账号集成
腾讯云云通信其实包含了两个部分,一个部分是账号集成模式(TLS),一个是正式的云通信服务。
账号集成模式包含两种模式,分别针对不同的开发者:
(1)独立模式
(2)托管模式
简单来说,独立模式是指开发者拥有自己的后台服务,用户的登录和注册都在自己的服务器上完成;托管模式是指开发者没有自己的后台服务器,那么就可以使用托管模式,将自己的用户信息托管到腾讯云服务器上,开发文档指出,托管模式可以提供等同于QQ账号的安全等级。
下面主要说托管模式,独立模式在APP端不需要集成TLS,后台集成TLS之后会将和TLS服务器通讯,并将sign返回给APP端。

第二点:TLS详解
在使用云通信IM的时候,用户在登录的时候只需要两个参数:identifier和sign,identifier是用户的账号,那sign是怎么来呢?就是通过TLS返回的密钥。
简单来说:就是用户在登录的时候,其实是经历了两个过程:首先使用用户名和密码登录到TLS后台,TLS后台进行验证之后会返回当前用户的sign,之后在使用用户账号和sign登录到IM的后台,之后就可以进行聊天等操作。
这样做有什么好处呢?
(1)快速登录,用户登录一次之后,可以将用户的identifier和sign保存下来,之后不需要登录TLS后台就可以直接登录云通信IM的服务器
(2)安全:如果想要实现用户的快速登录,之前是将用户的用户名和密码保存下来,这样的话用户的用户民和密码很不安全,使用identifier配合sign登录,不用保存用户的用户名和密码,只需要保存用户的用户名和sign,但是sign是有一个失效时间的,过了这个时间就需要重新刷新sign,同时每次获取的sign都是不同的,这样对用户的账号也是一种保护。

第三点:TLS使用
之前说过,用户在登录和注册都需要现经过TLS服务器,那主要说一下手机账号注册和登录TLS的流程:
(1) 在进行注册和登录之前,首先要初始化TLS:

 private void initTls() {QALSDKManager.getInstance().setEnv(0);QALSDKManager.getInstance().init(BaseApplication.getInstance(), BaseApplication.SDK_APP_ID);//初始化TLSHelpertlsHelper = TLSHelper.getInstance().init(BaseApplication.getInstance(), BaseApplication.SDK_APP_ID);}

(2)手机账号注册:用户输入手机号,获取验证码,检查验证码,注册成功:所有的注册流程都是通TLSSmsRegListener这个接口进行回调,这个接口提供以下方法:

  private TLSSmsRegListener smsRegListener = new TLSSmsRegListener() {@Overridepublic void OnSmsRegAskCodeSuccess(int i, int i1) {ToastUtils.toastMessage("腾讯云注册短信验证码下发成功,请注意查收");}@Overridepublic void OnSmsRegReaskCodeSuccess(int i, int i1) {ToastUtils.toastMessage("腾讯云注册短信验证码下发成功,请注意查收");}@Overridepublic void OnSmsRegVerifyCodeSuccess() {LogUtils.LogI("注册短信验证码对比成功");doRegister();}@Overridepublic void OnSmsRegCommitSuccess(TLSUserInfo tlsUserInfo) {ToastUtils.toastMessage("注册成功,请登录");LogUtils.LogI("注册成功:" + tlsUserInfo.identifier + "," + TLSHelper.getInstance().getUserSig(tlsUserInfo.identifier));//注册成功之后并不会直接返回sig,需要返回上个界面执行登录操作if (doRegisterSuccessListener != null) {doRegisterSuccessListener.registerSuccess();}}@Overridepublic void OnSmsRegFail(TLSErrInfo tlsErrInfo) {ToastUtils.toastMessage("注册出错:" + tlsErrInfo.Msg);LogUtils.LogI("注册出错" + tlsErrInfo.ErrCode + "," + tlsErrInfo.Title + "," + tlsErrInfo.Msg);}@Overridepublic void OnSmsRegTimeout(TLSErrInfo tlsErrInfo) {ToastUtils.toastMessage("注册超时,请稍候重试");}};

可以看到,每一步都有不同的回调:
用户输入手机号并验证成功之后需要引导用户获取验证码,获取验证码使用以下方法:

 tlsHelper.TLSSmsRegAskCode(ProgressUtils.PHONE_BEFORE + inputPhone.getText().toString(),smsRegListener);

验证码有时候可能等待时间较长或者没有发送,用户可以重新获取验证码,重新获取验证码使用以下方法:

tlsHelper.TLSSmsRegReaskCode(smsRegListener);

用户获取到验证码并且输入之后,需要对比验证码是否输入正确,此时需要使用以下方法:

tlsHelper.TLSSmsRegVerifyCode(inputCode.getText().toString(), smsRegListener);

当用户输入的验证码没问题之后,就可以执行真正的注册,注册使用以下方法:

tlsHelper.TLSSmsRegCommit(smsRegListener);

直行到这里,用户已经成功注册了,此时就可以让用户执行登录操作了,登录操作的流程和回调和注册是一样的,只是有些方法参数列表不一样,这里就不说了。

第四点:云通信IM正式使用

经过了第三步的操作,我们已经可以登陆到TLS后台了,此时在登录成功之后会将用户的sign返回,其实TLS已经对用户的sign进行了保存,不过我们也可以自己对用户的identifier保存,之后使用会比较方便。到这里就可以进行腾讯云通信IM的使用了。

首先将云通信IM的SDK下载下来,之后将相关的jar包倒入到项目中即可,这一块在文档的概述中有详细介绍:
https://cloud.tencent.com/document/product/269/9227

在使用云通信的相关服务之前,需要先对云通信服务进行配置,这里的配置建议在Application中进行:

 //app_idpublic static final int SDK_APP_ID = 你自己的appid;//account_typepublic static final int ACCOUNT_TYPE = ;//TIMManager实例private TIMManager timManager;

初始化TIMManager:

 //初始化IMSDKTIMSdkConfig config = new TIMSdkConfig(SDK_APP_ID).enableCrashReport(false).enableLogPrint(true).setLogLevel(TIMLogLevel.DEBUG).setLogPath(Environment.getExternalStorageDirectory().getPath() + "/justfortest/");TIMManager.getInstance().init(this,config);if (MsfSdkUtils.isMainProcess(this)) {TIMManager.getInstance().setOfflinePushListener(new TIMOfflinePushListener() {@Overridepublic void handleNotification(TIMOfflinePushNotification timOfflinePushNotification) {timOfflinePushNotification.doNotify(getInstance(), R.mipmap.ic_launcher);}});}

这里仍然是根据文档给出的配置就可以了。

云通信的相关服务配置好之后就可以使用了,但是在用户登录之前还要载入用户自定义的配置:用户的配置就是对消息的配置,好友的配置,关系链的配置,群组的配置等,我这里做了一个activity的基类,对于一些比较重要的回调(例如有新消息的回调)在activity的基类中做了监听。

public void setLoginBeforeConfig(){TIMUserConfig userConfig = new TIMUserConfig();userConfig.setFriendshipSettings(new TIMFriendshipSettings());//资料关系链拉取字段userConfig.setUserStatusListener(baseActivity);//用户状态变更需要实时监听//设置连接状态userConfig.setConnectionListener(new TIMConnListener() {@Overridepublic void onConnected() {LogUtils.LogI("已经连接");baseActivity.showToast("连接成功");}@Overridepublic void onDisconnected(int i, String s) {LogUtils.LogI("连接失败:"+i+","+s);baseActivity.showToast("连接失败:"+i+","+s);}@Overridepublic void onWifiNeedAuth(String s) {LogUtils.LogI("当前wifi需要验证:"+s);}});//群组事件监听暂时不需要//设置会话刷新userConfig.setRefreshListener(new TIMRefreshListener() {@Overridepublic void onRefresh() {LogUtils.LogI("正在刷新");}@Overridepublic void onRefreshConversation(List<TIMConversation> list) {LogUtils.LogI("刷新完成:"+list.size());}});TIMUserConfigMsgExt userMsgConfig = new TIMUserConfigMsgExt(userConfig);userMsgConfig.setMessageReceiptListener(new TIMMessageReceiptListener() {@Overridepublic void onRecvReceipt(List<TIMMessageReceipt> list) {}});userMsgConfig.setMessageRevokedListener(new TIMMessageRevokedListener() {@Overridepublic void onMessageRevoked(TIMMessageLocator timMessageLocator) {}});//启用消息存储userMsgConfig.enableStorage(true);//启用消息已读回执userMsgConfig.enableReadReceipt(true);//资料关系链扩展用户配置TIMUserConfigSnsExt userSnsConfig = new TIMUserConfigSnsExt(userMsgConfig);userSnsConfig.enableFriendshipStorage(true);userSnsConfig.setFriendshipProxyListener(baseActivity);//群组管理扩展用户配置不做监听//将用户配置与通讯管理器绑定//新消息监听TIMManager.getInstance().addMessageListener(new EventMessage());TIMManager.getInstance().setUserConfig(userSnsConfig);}

到这里相关配置就完了,用户就可以通过在TLS中获取的sign登录到云通信服务器了,之后的操作都在官方文档里面做了很详细的说明,可以直接查看文档。

Android集成腾讯云通信IM相关推荐

  1. android 集成腾讯定位,Android集成腾讯云通信IM

    本篇文章结构 一.集成流程. 二.集成中遇到的问题 集成过程 TIM图片20180425151417.png 很清楚,前几部没什么说的,去官网注册账号就好了,我们接下来看账号集成. 首先第一步是集成模 ...

  2. 安卓集成腾讯即时通信IM完成聊天室功能

    安卓集成腾讯即时通信IM完成聊天室功能 没有效果图的文章都是扯淡 **请将下面的MainActivity的代码复制到源码里面,替换掉源码的MainActivity.class** 话不多说,下来上代码 ...

  3. 使用springboot集成腾讯云短信服务,解决配置文件读取乱码问题

    使用springboot集成腾讯云短信服务,解决配置文件读取乱码问题 参考文章: (1)使用springboot集成腾讯云短信服务,解决配置文件读取乱码问题 (2)https://www.cnblog ...

  4. Android集成腾讯X5浏览器内核库

    Android集成腾讯X5浏览器内核库 一.相关配置 1. 相关地址 2.引入SDK 3. AndroidManifest配置 二.Application中初始化内核 三.代码实现 1. 自定义带Pr ...

  5. uniapp集成腾讯即时通信IM,实现一对一聊天,支持文字、表情、语音、图片、视频

    uniapp集成腾讯即时通信IM,实现一对一聊天,支持文字.表情.语音.图片.视频 原则 拿来即用,节省开发时间 介绍 腾讯的给的例子内容比较乱,我花了好长时间才集成出来,然后对聊天页面做了UI美化. ...

  6. springboot+sms 集成腾讯云短信平台

    springboot+sms 集成腾讯云短信平台实现发送短信功能 一.申请短信功能 到腾讯云管理平台申请短信功能(https://console.cloud.tencent.com/) 1.1 创建短 ...

  7. SpringBoot集成腾讯云存储COS服务

    前言 该文章会先简单的介绍一下腾讯云的COS存储,然后演示如何在SpringBoot项目中集成COS,每一步都有记录,保证初学者也能看懂. 文章目录 前言 1.腾讯云对象存储介绍 1.1.开通&quo ...

  8. SpringBoot集成腾讯云COS存储

    河南循中网络科技有限公司 - 精心创作,详细分解,按照步骤,均可成功! 文章目录 学习资料 集成腾讯云COS存储 添加pom依赖 common的pom文件 yaml配置 创建TencentCosUti ...

  9. Java集成腾讯云音视频录制功能

    Java集成腾讯云音视频录制功能 为什么要实现音视频录制功能 因为我们做的是一个医院的项目,医生和患者可能进行视频通话和语音通话,为了保证通话的质量以及后续的问题, 我们就需要进行音视频录制,以便后续 ...

  10. android 集成腾讯IMSDK4.2.9 TUIKIT即时通信之更改头像

    使用环境: 2018年集成的腾讯IM云通信,使用的是随心聊类似的集成方式. 2019年集成的时候,官方推荐TUIKIT依赖module github官方demo : https://github.co ...

最新文章

  1. 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质示例 | 证明 共轭对称序列 x_e(n) 的 傅里叶变换 是 原序列傅里叶变换 的实部 )
  2. 电动汽车告急?特斯拉、蔚来之后 一辆比亚迪新能源车突然自燃...
  3. 将COleDateTime类型数据转换成char *数据
  4. 深度学习笔记(一):logistic分类
  5. Trapcode Particular 4 for Mac(AE三维粒子插件)附序列号破解版
  6. 网络安全等级保护三级产品清单整理
  7. QT界面美化与添加多个界面
  8. qpython3安装kivy_kivy学习之路:kivy开发环境架设--- windows篇
  9. 加贺电子发表手掌大小的小型轻量DLP放映机
  10. 12星座之追女必杀技~
  11. [渝粤教育] 西南科技大学 现代数字系统设计 在线考试复习资料2021版
  12. 滴滴云服务器搭建网站的一键脚本,一键搭建流控脚本 一键搭建云免流服务器...
  13. 牛投客- 最新热门炒股讲解分享
  14. 【Chrome】Chrome主页被毒霸篡改,重新设置主页也没作用解决办法
  15. C整数除法(不使用乘、除、取余)
  16. 基于Qt、FFMpeg的音视频播放器设计一
  17. Fedora32 防火墙设置常用命令
  18. 【复杂句的逻辑练习题】定语从句的省略
  19. mysql 服务被杀毒软甲删掉之后,恢复方法
  20. [英语阅读]德国:经济危机下恢复圣诞真谛

热门文章

  1. 两个微信号绑定一个服务器ip,一个手机号能绑定几个微信账号(一个手机号注册多个微信号的方法)...
  2. 知识推理——正向链接推理
  3. word删除括号里内容
  4. Squid代理服务器基础_wuli大世界_新浪博客
  5. 2019年的第一篇随笔
  6. 经济学人精读笔记10:员工休假居然对企业有好处?
  7. 浅谈月薪3万 iOS程序员 的职业规划与成长!(进阶篇)
  8. [OGeek2019 Final]OVM
  9. Google快讯使用小记
  10. 【研一周小结】第三周个人学习总结