整合環信IM SDK及使用注意事項

黑金白土發表於2020-09-29

環信IM SDK可以幫助使用者快速開發IM相關的應用。如何快速整合環信IM SDK呢?
首先附上環信官網的整合SDK的文件:Android SDK 介紹及匯入

一、整合環信IM SDK

1、申請環信Appkey

要使用環信IM SDK第一步就是要去環信官網申請環信的Appkey。
具體的申請過程,參考環信官方:快速體驗環信
環信管理後臺註冊頁面
註冊應用

2、新增SDK依賴

(1)新增遠端依賴
a、專案根目錄下build.gradle配置:

repositories {
    google()
    jcenter()
}

b、module目錄下的build.gradle中加入SDK依賴:

dependencies {
    api 'com.hyphenate:hyphenate-sdk:3.7.1'
}

注:如果不需要實時語音及實時視訊功能,使用api 'com.hyphenate:hyphenate-sdk-lite:3.7.1’即可。
(2)手動配置
a、先到環信官網下載環信IM SDK:場景DEMO及原始碼下載
下載的壓縮包中,有libs.av和libs.lite兩個資料夾,如果不需要實時語音、實時視訊功能,就直接用libs.lite資料夾下的 jar 包及 so 檔案,否則就用libs.av資料夾下的相關jar包及so檔案。
b、將jar包放到libs資料夾下,so檔案放到jniLibs資料夾下:
在這裡插入圖片描述

3、配置AndroidManifest.xml

(1)配置許可權

	<!-- IM SDK required start -->
    <!-- 允許程式振動 -->
    <uses-permission android:name="android.permission.VIBRATE" />
    <!-- 訪問網路許可權 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- 麥克風許可權 -->
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <!-- 相機許可權 -->
    <uses-permission android:name="android.permission.CAMERA" />
    <!-- 獲取運營商資訊,用於支援提供運營商資訊相關的介面-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <!-- 寫入擴充套件儲存許可權-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <!-- 這個許可權用於訪問GPS定位(用於定位訊息,如果不用定位相關可以移除) -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <!-- api 21後被標記為deprecated -->
    <uses-permission android:name="android.permission.GET_TASKS" />
    <!-- 用於訪問wifi網路資訊-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <!-- 用於獲取wifi的獲取許可權 -->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <!-- 允許程式在手機螢幕關閉後後臺程式仍然執行 -->
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <!-- 允許程式修改聲音設定資訊 -->
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <!-- 允許程式訪問電話狀態 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <!-- 允許程式開機自動執行 -->
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <!-- 捕獲螢幕所需許可權,Q後新增許可權(多人音視訊螢幕分享使用) -->
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
    <!-- IM SDK required end -->

(2)配置環信Appkey

<!-- 設定環信應用的AppKey --> 
<meta-data android:name="EASEMOB_APPKEY" android:value="Your AppKey" />

此處的環信Appkey就是第一步申請得到的。
(3)其他配置

<!-- 宣告SDK所需的service SDK核心功能-->
<service
    android:name="com.hyphenate.chat.EMChatService"
    android:exported="true"/>
<service android:name="com.hyphenate.chat.EMJobService"
    android:permission="android.permission.BIND_JOB_SERVICE"
    android:exported="true"
    />
<!-- 宣告SDK所需的receiver -->
<receiver android:name="com.hyphenate.chat.EMMonitorReceiver">
    <intent-filter>
        <action android:name="android.intent.action.PACKAGE_REMOVED"/>
        <data android:scheme="package"/>
    </intent-filter>
    <!-- 可選filter -->
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
        <action android:name="android.intent.action.USER_PRESENT" />
    </intent-filter>
</receiver>

4、配置混淆規則

-keep class com.hyphenate.** {*;} 
-dontwarn com.hyphenate.** 
//3.6.8版本之後移除apache,無需再新增 
-keep class internal.org.apache.http.entity.** {*;} 
//如果使用了實時音視訊功能 
-keep class com.superrtc.** {*;} 
-dontwarn com.superrtc.**

二、使用注意事項

1、需要指定jdk版本

android {
   ......

    //指定jdk版本
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

}

如果不配置的話,同步SDK後會報錯。

2、解決Android9.0以上強制使用https的問題

報錯表現:

UnknownServiceException: CLEARTEXT communication to localhost not permitted by network security policy

或者

IOException java.io.IOException: Cleartext HTTP traffic to * not permitted

解決辦法為:
參考:StackOverFlow
也可以直接在AndroidManifest.xml檔案的application標籤中設定android:usesCleartextTraffic=“true” 。

<application 
    android:usesCleartextTraffic="true" >
    ...... 
</application>

經過以上4步配置及下面的兩步注意事項後,就可以愉快的使用環信IM SDK了。

參考文件:

Android SDK 介紹及匯入

相關文章