原文地址:Android 接入腾讯IM即时通信(详细图文) | Stars-One的杂货小窝

腾讯云IM官网文档上提供了带UI模块和不带UI模块的,本文是基于带UI模块进行了Module封装,可以方便各位快速接入,至于后面的页面改造,相信对于各位也是轻车熟路了,这里就不再赘述

接入步骤

1.申请账号

第一步,是申请账号,好像有个体验版可以使用,不过只能创建100个账户,可以用这个先来对接

2.下载module文件

这里的module文件,是我个人基于官方文档上稍微改动些东西,没有做功能的删改,可以快速接入到现有的项目中

module注意点:

  • androidx版本
  • 内置使用Glide4.x
  • 使用的SDK为imsdk-plus,版本号为6.0.1975

旧项目如果使用了support版本和Glide3.x版本,记得做兼容处理:将旧项目的迁移到androidx版本和升级GLide版本并作代码调整处理

module下载地址:>>>点击打赏获取

3.配置Gradle,引入依赖

我以一个常规的Android项目来说明

1.将压缩包的文件解压出来,放入的同级目录,如下图所示

2.在根目录的settings.gradle文件中添加下面代码

//以下是腾讯云IM的Module接入
include ':tim' // 引入内部组件通信模块 (必要模块)
include ':tuicore'
project(':tuicore').projectDir = new File(settingsDir, '/TUIKit/TUICore/tuicore') // 引入聊天功能模块 (基础功能模块)
include ':tuichat'
project(':tuichat').projectDir = new File(settingsDir, '/TUIKit/TUIChat/tuichat') // 引入关系链功能模块 (基础功能模块)
include ':tuicontact'
project(':tuicontact').projectDir = new File(settingsDir, '/TUIKit/TUIContact/tuicontact') // 引入会话功能模块 (基础功能模块)
include ':tuiconversation'
project(':tuiconversation').projectDir = new File(settingsDir, '/TUIKit/TUIConversation/tuiconversation') // 引入群组功能模块
include ':tuigroup'
project(':tuigroup').projectDir = new File(settingsDir, '/TUIKit/TUIGroup/tuigroup')

3.在根目录的build.gradle文件中添加下面的代码

ext {
compileSdkVersion = 28
minSdkVersion = 19
targetSdkVersion = 28
versionCode = 1
versionName = "6.0.1992"
abiFilters = ['armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'] //['armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64']
arguments = "-DANDROID_STL=c++_static"
cppFlags = "-std=c++11"
}

同时,在加上腾讯云的仓库源

 maven { url "https://mirrors.tencent.com/nexus/repository/maven-public/" }

5.app的module中添加依赖

implementation project(path: ':tim')

同时,还需要加上下面的代码(否则编译会出错)

manifestPlaceholders = [
// TPNS 推送服务 accessId、accessKey
XG_ACCESS_ID : "",
XG_ACCESS_KEY: ""
]

注意:这里compileSdkVersion不要使用31版本的,要使用30版本的,31版本默认使用的jdk11,会导致编译错误

添加完上述代码,重新构造一下项目(sync project)

4.配置腾讯云IM的key

这里需要注意的是,腾讯云IM的登录需要userIduserSig,而userSig是通过SDKAPPIDSECRETKEY加密计算userId得出的

而这种,官方推荐是后台去计算,然后提供接口返回数据给到我们APP来使用,否则容易泄露密钥被他人盗刷

不过为了测试,我们可以先暂时放在本地来做加密计算流程

直接找到GenerateTestUserSig.java这个文件,修改里面的SDKAPPIDSECRETKEY即可

5.测试使用

使用的话,需要在AndroidManifest配置application

可能这里有同学疑问了,那之前旧项目有个application了,应该怎么解决呢?这里作扩展,就单独放在下面再讲了

android:name="com.tencent.qcloud.tim.demo.DemoApplication"

tools:replace="allowBackup"
xmlns:tools="http://schemas.android.com/tools"

之后,在你想要的点击事件地方加上页面跳转即可(如下代码)

Intent intent = new Intent(this, SplashActivity.class);
startActivity(intent);

效果就出来(样式似乎有所冲突,不过项目都接入进来了,后面都好调整)

补充:多个application解决方案

多个application的情况,需要判断application类位于哪个module中,有下面两种情况:

  1. 位于主Module中(即app里)
  2. 位于其他Module(包含第三方库那种)

如果是第一种情况,比较好解决,因为app中的application代码我们可修改,所以,让其继承于DemoApplication即可,然后AndroidManifest文件中使用DemoApplication

简单起见,MyApplication里面并没有编写如何代码

如果是第二种情况,又可以分为两种情况:

  1. 主模块app依赖了模块C,AndroidManifest中声明的ApplicationC,此时,需要使用Tim模块里的DemoApplication
  2. 主模块app依赖了模块C,主模块同时继承ApplicationC写了个ApplicationBAndroidManifest中声明的是ApplicationB,此时,需要使用Tim模块里的DemoApplication

上面的两种情况,

第1个情况解决方案:

Tim模块去依赖模块C,并且让我们的DemoApplication继承于ApplicationCAndroidManifest中使用DemoApplication

第2个情况解决方案:

Tim模块去依赖模块C,并且让我们的DemoApplication继承于ApplicationC

之后,还要修改主模块里的ApplicationB,让其继承于DemoApplicationAndroidManifest中使用ApplicationB

Android 接入腾讯IM即时通信(详细图文)的更多相关文章

  1. 腾讯云即时通信 IM 服务 实例项目

    腾讯云即时通信 IM 服务  https://github.com/tencentyun/TIMSDK

  2. QQ 腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件

    QQ 编辑 腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件.腾讯QQ支持在线聊天.视频通话.点对点断点续传文件.共享文件.网络硬盘.自定义面板.QQ邮箱等多种功 ...

  3. 基于XMPP协议的Android即时通信系

    以前做过一个基于XMPP协议的聊天社交软件,总结了一下.发出来. 设计基于开源的XMPP即时通信协议,采用C/S体系结构,通过GPRS无线网络用TCP协议连接到服务器,以架设开源的Openfn'e服务 ...

  4. .NET 即时通信,WebSocket服务端实例

    即时通信常用手段 1.第三方平台 谷歌.腾讯 环信等多如牛毛,其中谷歌即时通信是免费的,但免费就是免费的并不好用.其他的一些第三方一般收费的,使用要则限流(1s/限制x条消息)要么则限制用户数. 但稳 ...

  5. .NET实现WebSocket服务端即时通信实例

    即时通信常用手段 1.第三方平台 谷歌.腾讯 环信等多如牛毛,其中谷歌即时通信是免费的,但免费就是免费的并不好用.其他的一些第三方一般收费的,使用要则限流(1s/限制x条消息)要么则限制用户数. 但稳 ...

  6. .NET 即时通信,WebSocket

    .NET 即时通信,WebSocket 即时通信常用手段 1.第三方平台 谷歌.腾讯 环信等多如牛毛,其中谷歌即时通信是免费的,但免费就是免费的并不好用.其他的一些第三方一般收费的,使用要则限流(1s ...

  7. (转)基于即时通信和LBS技术的位置感知服务(一):提出问题及解决方案

    一.前言.提出问题 公司最近举行2011年度创新设计大赛,快年底了正打算写写2010年以来Android开发的心得与经验,正好同事出了个点子:假如A和B两个人分别在不同的地点,能不能实现这样的功能,让 ...

  8. 结束QQ即时通信垄断,开辟即时通信互联互通instantnet时代

    结束QQ即时通信垄断,开辟即时通信互联互通instantnet时代 蓬勃发展的即时通信产业 即时通信(IM)是指可以即时发送和接收互联网消息等的业务. 即时通信.就是瞬间把信息发送给对方,假设不是即时 ...

  9. iOS开发之使用XMPPFramework实现即时通信(三)

    你看今天是(三)对吧,前面肯定有(一)和(二),在发表完iOS开发之使用XMPPFramework实现即时通信(一)和iOS开发之使用XMPPFramework实现即时通信(二)后有好多的小伙伴加我Q ...

随机推荐

  1. gitee中项目到运行操作,包括:打包、热部署、数据库操作

    使用的工具:window10.IDEA 2018.2.3 .navicat110_premium.Git-2.23 1.idea导入gitee代码 复制项目地址 选择git工具 粘贴地址,点击clon ...

  2. 【故障公告】没有龙卷风,k8s集群翻船3次,投用双集群恢复

    今天没有龙卷风(异常的高并发请求),故障却依然出现,问题非常奇怪. 某种异常情况会造成短时间内, k8s 集群中大量 pod (超过60%)因健康检查失败而处于 CrashLoopBackOff 状态 ...

  3. LGP5204题解

    @CF1327F 最小值看着有点怪,先转化成最大值吧...反正没啥区别... 考虑把最大值相同的区间和限制为这个最大值的区间都拿出来.然后离散化.问题变为让所有区间都满足最值为 \(c\). 考虑 D ...

  4. 安全学习笔记-web安全之XSS攻击

    web安全之XSS攻击 XSS 即跨站脚本攻击,是 OWASP TOP10 之一.它的全称为 Cross-site scripting,因为 CSS 这个简称已经被占用表示为前端三剑客之一的CSS,所 ...

  5. ubuntu20 源码安装nginx以及常用命令

    镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 ubuntu下安装nginx 个人建议还是不要自己apt-get安装,反正最后加模块还是得用源码编译安装那一套流程 下的慢的该换源换源,该换网换网 ...

  6. 4月27日 python学习总结 GIL、进程池、线程池、同步、异步、阻塞、非阻塞

    一.GIL:全局解释器锁 1 .GIL:全局解释器锁 GIL本质就是一把互斥锁,是夹在解释器身上的, 同一个进程内的所有线程都需要先抢到GIL锁,才能执行解释器代码 2.GIL的优缺点: 优点:  保 ...

  7. C++ cout 数字之间进制的转换

    转换一个数变成8进制,则为 cout << oct << x << endl; 转换一个数变为16进制,为 cout << hex << x ...

  8. [源码解析] TensorFlow 分布式环境(6) --- Master 动态逻辑

    [源码解析] TensorFlow 分布式环境(6) --- Master 动态逻辑 目录 [源码解析] TensorFlow 分布式环境(6) --- Master 动态逻辑 1. GrpcSess ...

  9. 如何集成 Spring Boot 和 ActiveMQ?

    对于集成 Spring Boot 和 ActiveMQ,我们使用依赖关系. 它只需要很少的配置,并且不需要样板代码.

  10. 描述一下 JVM 加载 class 文件的原理机制?

    JVM 中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java 中的 类加载器是一个重要的 Java 运行时系统组件,它负责在运行时查找和装入类文件 中的类. 由于 Java 的 ...