最近项目中要使用即时通讯,为什么会选环信呢,这是因为之前负责这一块的那位兄弟跟老板说这是免费的,老板一听免费的,好,就它了,后来这位兄弟跑路了,就让我来接手了.....,无力吐槽,废话不多说,我们开始吧。
下面我就来分享一下我在集成环信EaseUi中遇到的问题。
ps:官方的文档说的不是很明白,一不小心就会掉进坑里,切记切记........
1.注册环信并创建应用,创建好了之后会生成AppKey,先记下来待会我们会在 AndroidManifast.xml 中要用到
环信官网 http://www.easemob.com/?utm_source=baidu-pp
2.下载SDK
下载地址: http://www.easemob.com/download/im
我们选择 SDK+Demo 源码下载
下载解压之后会得到这几个文件夹
官方对这几个文件夹的解释是这样的
因为我们是集成EaseUI,所以我们要用到examples文件夹下的easeui这个文件夹,EaseUI是一个库,里面封装了 IM 功能常用的控件,fragment等等
3.导入easeui
注意:导入AS中的时候要把build.gradle文件删除
打开你的 AS 项目→File→New→Import Module→选择或输入 EaseUI 库路径
easyui文件夹里面有两个文件,simpledemo里面是个可运行的项目,咱们只用easeui库,选中之后点击 Finish
导入成功之后我们还需要将easeui同步到我们项目当中去,在项目上右键,Open Module Settings
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" />
</