前一阵时间一直以为环信不能被个人用户注册,结果现在想试试结果真的注册进来了,各种打脸。今天趁着晚上有时间把环信继承的步骤做一个记录,方便以后的童鞋们能够快速的集成。
1.第一步:肯定是创建应用喽
那么具体步骤为了避免大家看的烦躁,我就不一一截图了,而是将官网的连接地址给大家po过来
http://docs.easemob.com/im/000quickstart/10register
当然从这个连接中可以清楚的看到
感觉这一巴掌真痛!!!
当然官方的文档多少有点出入,没关系,只需要创建好自己的应用就可以了。
第一步so easy
2.第二步:下载sdk
不用多说,照着文档下载就行。po上网址:
http://www.easemob.com/download/im
解压后是这样的。
考虑到开发者需求不一样,在下载的 SDK 中,提供了两个不同的 jar 包:
在这里主要介绍后面四个文件夹内容:
3.第三步:配置工程环境
简单的说,就是往你的项目中去粘贴东西就行了。
在自行开发的应用中,集成环信聊天需要把 libs 文件夹下的 jar 及 so 文件复制到你的项目的 libs 文件夹相应位置,如果不需要语音和视频通话功能,导入libs.without.audio 下的文件即可。
如图:
至于这些三方的so文件怎么导入请看我的另一篇文章
http://blog.csdn.NET/JerryWu145/article/details/52507658
4.第四步,配置代码环境
在清单文件 AndroidManifest.xml 里加入以下权限,以及写上你注册的 AppKey。
权限配置(实际开发中可能需要更多的权限,可参考 Demo):
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="us.mifeng.guaju.huanxin">
- <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.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:name="app.MyApp"
- android:allowBackup="true"
- android:icon="@mipmap/ic_launcher"
- android:label="@string/app_name"
- android:supportsRtl="true"
- android:theme="@style/AppTheme">
- <activity android:name=".MainActivity">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
-
- <activity android:name=".LoginActivity">
- </activity>
- <activity
- android:name=".ChatActivity"
- android:windowSoftInputMode="adjustResize|stateHidden">
- </activity>
-
- <meta-data android:name="EASEMOB_APPKEY" android:value="guajujerry#im" />
-
- <service android:name="com.hyphenate.chat.EMChatService" android:exported="true"/>
-
- <receiver android:name="com.hyphenate.chat.EMMonitorReceiver">
- <intent-filter>
- <action android:name="android.intent.action.PACKAGE_REMOVED"/>
- <data android:scheme="package"/>
- </intent-filter>
-
- <intent-filter>
- <action android:name="android.intent.action.BOOT_COMPLETED"/>
- <action android:name="android.intent.action.USER_PRESENT" />
- </intent-filter>
- </receiver>
- </application>
-
- </manifest>
关于 EASEMOB_APPKEY 对应的 value 获取,在创建应用后,申请 AppKey 并进行相关配置。(环信 Demo 中 AppKey 为 easemob-demo#chatdemoui)
接下来是对自己创建的application进行初始化配置:
- package app;
-
- import android.app.ActivityManager;
- import android.app.Application;
- import android.content.Context;
-
- import com.hyphenate.chat.EMClient;
- import com.hyphenate.chat.EMOptions;
-
- import java.util.Iterator;
- import java.util.List;
-
-
-
-
-
- public class MyApp extends Application {
-
-
- private Context mContext;
-
-
- private boolean isInit = false;
-
- @Override
- public void onCreate() {
- super.onCreate();
- mContext = this;
-
-
- initEasemob();
- }
-
-
-
-
- private void initEasemob() {
-
- int pid = android.os.Process.myPid();
- String processAppName = getAppName(pid);
-
-
-
-
-
- if (processAppName == null || !processAppName.equalsIgnoreCase(mContext.getPackageName())) {
-
- return;
- }
- if (isInit) {
- return;
- }
-
-
-
-
-
- EMOptions options = new EMOptions();
-
-
-
- options.setAutoLogin(true);
-
- options.setRequireAck(true);
-
- options.setRequireDeliveryAck(true);
-
- options.setRequireServerAck(true);
-
- options.setAcceptInvitationAlways(false);
-