欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

android 集成环信SDK

程序员文章站 2022-03-11 08:35:04
集成步骤:1. 首先在你的项目根目录build.gradle文件的allprojects→repositories属性下加入远程库地址allprojects { repositories { google() jcenter() maven { url 'https://jitpack.io' } maven { url 'http://developer.huawei.com/repo'} //如果需要...

集成步骤:

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.***

 

本文地址:https://blog.csdn.net/liuye066/article/details/107181968