android 集成环信SDK
程序员文章站
2022-06-22 08:42:06
集成步骤: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
下一篇: 图解Java设计模式之访问者模式