环信IM SDK可以帮助用户快速开发IM相关的应用。如何快速集成环信IM SDK呢?
首先附上环信官网的集成SDK的文档:Android SDK 介绍及导入
一、集成环信IM SDK
1、申请环信Appkey
要使用环信IM SDK第一步就是要去环信官网申请环信的Appkey。
具体的申请过程,参考环信官方:快速体验环信。
2、添加SDK依赖
(1)添加远程依赖
a、项目根目录下build.gradle配置:
repositories {
google()
mavenCentral()
}
b、module目录下的build.gradle中加入SDK依赖:
dependencies {
api 'io.hyphenate:hyphenate-chat:3.9.8'
}
(2)手动配置
a、先到环信官网下载环信IM SDK:场景DEMO及源码下载
b、将 SDK 包内 libs 路径下的如下文件,拷贝到项目路径下:
文件或文件夹 | 项目路径 |
---|---|
easemob_xxx.jar 文件 | /app/libs/ |
arm64-v8a 文件夹 | /app/src/main/jniLibs/ |
armeabi-v7a 文件夹 | /app/src/main/jniLibs/ |
x86 文件夹 | /app/src/main/jniLibs/ |
x86_64 文件夹 | /app/src/main/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.READ_EXTERNAL_STORAGE"/>
<!-- 访问 GPS 定位,用于定位消息,如果不用定位相关可以移除 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<!-- 允许程序在手机屏幕关闭后后台进程仍然运行 -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- 允许程序开机自动运行,SDK 保活时使用,如果使用厂商推送,可以移除 -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<!-- 申请闹钟定时权限 -->
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
<!-- 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.**
二、使用注意事项
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了。
三、修订记录
1、2022.11.17:更新SDK版本为3.9.8;更新远程仓库为mavenCentral;更新所需权限。