騰訊雲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的登入需要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(包含第三方庫那種)
如果是第一種情況,比較好解決,因為app中的application程式碼我們可修改,所以,讓其繼承於DemoApplication即可,然後AndroidManifest檔案中使用DemoApplication
簡單起見,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