一,项目说明
利用 ApkPlug 插件化框架将环信 DEMO 组件化,以实现按需动态加载和减小应用体积的 目的。
环信 IM 是目前移动开发中非常棒的 IM 聊天开发工具,开发者可以使用它可以轻松的为自己的应用嵌入 IM 聊天功能,然而在接入过程中我们依然会遇到一些问题。
1. SDK 包比较大,根据环信官网提供的 DEMO,所以聊天功能加起来有 5M 左右。
2. 同时在设计聊天界面过程中,不可避免的要引入资源文件,这对我们应用后期维护 造成不小的干扰。
二,项目所使用到的开发库
Apkplug v2.7.7 版本 (必须是 v2.7.7 以上版本,否则无法运行)
Apkplug 插件托管服务 v1.8.0 版本以上
EaseMobSDKDEMO v2.1.6 (使用的最新版本 DEMO)
三,项目目录结构
EaseMobChat ---主应用演示 DEMO
HuanxinPlugDemo ---环信IM 组件的具体实现【您可修改实现自定义效果】
PlugIMSDK1.0.0.jar --组件调用库
四,使用步骤
1,主应用中加入 ApkPlug 框架
关于 ApkPlug 使用可见官方的接入文档,有了 apkplug 我们可以动态加载环信 IM 组件,还有 ShareSDK 组件等。未来 apkplug 组件市场还会不断加入更多的组件提供给开发者使用。
1. apkplug 框架 (用于加载环信 IM 组件) 【核心】
2. apkplug 托管服务 SDK (用于从服务器动态下载组件)【开发者可替换为自己的 下载服务】
2,导入 PlugIMSDK 调用库
将 PlugIMSDK1.0.0.jar 拷贝到主应用的libs 目录下即可。
3,配置相关权限
<span style="font-size:12px;"><!-- APKPLUG框架须要的权限 -->
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!—环信IM SDK须要的权限 -->
<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" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
</span>
4,配置环信需要的相关信息
<pre name="code" class="java"><span style="font-size:12px;"><!-- 设置环信应用的appkey -->
<meta-data
android:name="EASEMOB_APPKEY" android:value="easemob-demo#chatdemoui" />
<!-- 声明sdk所需的service -->
<service android:name="com.easemob.chat.EMChatService" />
<!-- umeng appkey,可忽略 -->
<meta-data
android:name="UMENG_APPKEY" android:value="53912a3156240b01a7075ed1" >
</meta-data></span>
<span style="font-size:12px;">
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="3ecea51f560650b1ed8a4b99808f52e8" /></span>
注释说明:
ApkPlug框架普通版本不支持插件Service,因此需要在宿主配置对插件的Service进行配置。
以上步骤配置完成以后即可使用环信IM 组件了,使用方式非常简单,以分享功能为例
IMSdkAgent imsdkagent=new IMSdkAgent(this,frame.getSystemBundleContext()); imsdkagent.StatIMSDK(
new CheckInitCallBack(){
@Override
public void onSuccess(PlugIMSDK service) { Log.e("", "PlugIMSDK");
//这里就会启动环信界面了
service.StartIM("");
}
@Override
public void onFailure(int errorNo, String strMsg) { Log.e("onFailure", strMsg);
}
});
6, 功能说明
1. 目前 apkplug 的环信 IM 组件不支持其百度地图定位功能
2. 现在如果您想自定义 IM 聊天界面只需要 HuanxinPlugDemo 工程即可,主应用一点都不 用改动了哦。
7,操作演示
源码及 Demo 地址:http://store.apkplug.com/pluginfo?plugid=201504012048051