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.將壓縮包的文件解壓出來,放入的同級目錄,如下圖所示

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章