Android|Android 接入腾讯IM即时通信(详细图文)
原文地址: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.将压缩包的文件解压出来,放入的同级目录,如下图所示
【Android|Android 接入腾讯IM即时通信(详细图文)】
文章图片
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: ""
]
文章图片
注意:这里添加完上述代码,重新构造一下项目(sync project)compileSdkVersion
不要使用31版本的,要使用30版本的,31版本默认使用的jdk11,会导致编译错误
4.配置腾讯云IM的key
这里需要注意的是,腾讯云IM的登录需要
userId
和userSig
,而userSig
是通过SDKAPPID
和SECRETKEY
加密计算userId
得出的而这种,官方推荐是后台去计算,然后提供接口返回数据给到我们APP来使用,否则容易泄露密钥被他人盗刷
不过为了测试,我们可以先暂时放在本地来做加密计算流程
直接找到
GenerateTestUserSig.java
这个文件,修改里面的SDKAPPID
和SECRETKEY
即可文章图片
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中,有下面两种情况:
- 位于主Module中(即app里)
- 位于其他Module(包含第三方库那种)
文章图片
简单起见,MyApplication里面并没有编写如何代码
如果是第二种情况,又可以分为两种情况:
- 主模块app依赖了模块C,
AndroidManifest
中声明的ApplicationC
,此时,需要使用Tim模块里的DemoApplication
- 主模块app依赖了模块C,主模块同时继承
ApplicationC
写了个ApplicationB
,AndroidManifest
中声明的是ApplicationB
,此时,需要使用Tim模块里的DemoApplication
第1个情况解决方案:
Tim模块去依赖模块C,并且让我们的
DemoApplication
继承于ApplicationC
,AndroidManifest
中使用DemoApplication
第2个情况解决方案:
Tim模块去依赖模块C,并且让我们的
DemoApplication
继承于ApplicationC
之后,还要修改主模块里的
ApplicationB
,让其继承于DemoApplication
,AndroidManifest
中使用ApplicationB
推荐阅读
- Flutter接入字节跳动穿山甲小说、视频内容合作
- Flutter应用集成腾讯优量汇(广点通)广告
- 基于VSTS的Xamarin.Android持续集成步骤详解
- 医学图像分类_腾讯八篇论文入选顶级医学影像会议MICCAI ,涉及病理癌症图像分类等...
- 墨天轮访谈|墨天轮访谈 | 腾讯张铭(带你揭秘王者荣耀背后的游戏数据库 TcaplusDB)
- 极客日报|孟晚舟升任华为轮值董事长;腾讯云多媒体实验室复原张国荣《热·情》演唱会;世界首款Lightning接口安卓手机|极客头条
- 如何基于|如何基于 ZEGO SDK 实现 Android 一对一音视频聊天应用
- 如何成为一名合格的高级Android程序员?
- 美团Android|美团Android 岗3次挂了,这次终于成功拿下!
- 腾讯一面(CORS为什么能保障安全(为什么只对复杂请求做预检?))