android 集成环信SDK

翟高明
2023-12-01

集成步骤:

1. 首先在你的项目根目录build.gradle文件的allprojects→repositories属性下加入远程库地址

allprojects {
    repositories {
        google()
        jcenter()
        

        maven { url 'https://jitpack.io' }

        maven { url 'http://developer.huawei.com/repo'} //如果需要使用华为推送HMS,则需要加上此句
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
    }
}

2. 然后在你的module的build.gradle里加入以下代码

android {
    //use legacy for android 6.0(3.6.8版本之后移除apache library,请将下面注释掉)
    useLibrary 'org.apache.http.legacy'
    
    //自3.6.0开始需要java8的支持
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
dependencies {
    api 'com.android.support:appcompat-v7:28.0.0-alpha1'
    // Google firebase cloud messaging
    implementation 'com.google.android.gms:play-services-base:11.4.0'
    implementation 'com.google.firebase:firebase-messaging:11.4.0'
    //api 'com.hyphenate:hyphenate-sdk:3.6.8'
    implementation 'com.github.bumptech.glide:glide:4.8.0'

    implementation project(':easeui')

    implementation 'com.parse:parse-android:1.13.1'

    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.50"
}

3. 导入easeui;

从下载下来的SDK中导入easeui,  File---->New--->import Module

4. 配置信息

在清单文件 AndroidManifest.xml 里加入以下权限,以及写上你注册的 AppKey。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="Your Package"
    android:versionCode="100"
    android:versionName="1.0.0">
  
    <!-- Required -->
    <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.ACCESS_MOCK_LOCATION" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>  
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <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" />
 
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:name="Your Application">
  
   	<!-- 设置环信应用的AppKey -->
    	<meta-data android:name="EASEMOB_APPKEY"  android:value="Your AppKey" />
    	<!-- 声明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>
    </application>
</manifest>

5. 初始化

在application中添加初始化代码:

private void initHuanxin() {
        DemoHelper.getInstance().init(this);
//        EMOptions options = new EMOptions();
//        // 默认添加好友时,是不需要验证的,改成需要验证
//        options.setAcceptInvitationAlways(false);
//        // 是否自动将消息附件上传到环信服务器,默认为True是使用环信服务器上传下载,如果设为 false,需要开发者自己处理附件消息的上传和下载
        options.setAutoTransferMessageAttachments(true);
        // 是否自动下载附件类消息的缩略图等,默认为 true 这里和上边这个参数相关联
        options.setAutoDownloadThumbnail(true);
//
//        //初始化
//        EMClient.getInstance().init(this, options);
//        //在做打包混淆时,关闭debug模式,避免消耗不必要的资源
//        EMClient.getInstance().setDebugMode(true);
        EaseUI.getInstance().init(this, null);
    }

6. APP 打包混淆

#环信
-keep class com.hyphenate.** {*;}
-keep class com.hyphenate.chat.*** {*;}
-keep class org.jivesoftware.** {*;}
-keep class org.apache.** {*;}
#另外,demo中发送表情的时候使用到反射,需要keep SmileUtils,注意前面的包名,
#不要SmileUtils复制到自己的项目下keep的时候还是写的demo里的包名
-keep class com.hyphenate.chatuidemo.utils.SmileUtils {*;}
-keep class com.hyphenate.push.*** {*;}
-keep class com.parse.** {*;}
-dontwarn  com.hyphenate.****
-keep class internal.org.apache.http.entity.** {*;}
#如果使用了实时音视频功能
-keep class com.superrtc.** {*;}
-dontwarn  com.superrtc.**
-dontwarn com.hyphenate.push.***

 

 类似资料: