1、Android sdk集成指南

1.1、导入sdk

如果仅集成IM功能,只需要导入IM专版的SDK:YTX_Android_IM_SDK.zip,去下载

如果需要集成全部功能,包含IM、实时音视频、会议,则需要导入全功能的SDK:YTX_Android_Full_SDK.zip,去下载

将解压后的文件导入您工程下的libs目录下。Jar版本号以SDK目录下放置的Jar包实际版本为准。

IM专版SDK导入libs目录下图所示:

IM.png

全能力版SDK导入libs目录如下图所示:

Full.png

说明:

1. libserphone.so: IM消息和音视频以及音视频会议功能库,必须添加。

2. libECMedia.so: 使用音视频功能,必须添加。

3. libyuntx_gl_disp.so: 5.3.0以及之后版本添加了视频图像绘制库,使用ECOpenGLView控件需要添加。

4. libvoicechange.so: 5.3.0以及之后版本添加了语音变声接口库,用来将录制的语音文件进行音频数据处理转换成不同发声效果。

5. arm64-v8a目录中是64位的so库,适用于CPU是ARM64位的终端设备。

6. armeabi目录中是32位的so库,适用于CPU是通用ARM的终端设备。

7. Yuntx_IMLib_v5.x.xr.jar是SDK对外提供的Jar包。

注意事项:

1. 如果开发者项目需要添加armeabi-v7a目录,可将armeabi目录下的libserphone.so拷贝至armeabi-v7a目录。

2. 目前云通讯只支持arm系列的CPU。其他类型(X86,MIPS等)不支持,因此不能在libs目录下添加ARM类型以外的适配目录,如必须此类适配,可以拨打4006101019客服电话具体洽谈。

1.2、配置工程

1.2.1 权限配置

//自定义权限配置

云通讯SDK需要用户声明接收IM消息和接收来电的自定义权限,用于接收SDK发出的广播通知。客户可根据需要使用的功能进行配置,如未设置对应权限将无法正常接收广播通知。

                	
//接收IM消息的自定义权限
<permission android:name="com.yuntongxun.ecdemo.permission.RECEIVE_MSG" android:protectionLevel="signature"/>
//使用接收IM消息权限
<uses-permission android:name="com.yuntongxun.ecdemo.permission.RECEIVE_MSG"/>
//接收来电的自定义权限
<permission android:name="com.yuntongxun.ecdemo.permission.INCOMING_CALL" android:protectionLevel="signature"/>
//使用接收来电权限
<uses-permission android:name="com.yuntongxun.ecdemo.permission.INCOMING_CALL"/>


                    

注意事项:

在开发自有项目APP时需要将以上配置中的com.yuntongxun.ecdemo替换为自有项目APP的包名

                	
					

//以下为必选配置

//允许程序打开网络sockets <uses-permission android:name="android.permission.INTERNET"/> //允许程序访问有关的网络信息 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> //允许程序访问Wi-Fi网络状态信息 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> //允许应用读写用户的外部存储器 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> //允许读取电话的状态 <uses-permission android:name="android.permission.READ_PHONE_STATE"/> //允许一个程序获取信息有关当前或最近运行的任务,一个缩略的任务状态,是否活动等等 <uses-permission android:name="android.permission.GET_TASKS"/> //允许程序录制音频 <uses-permission android:name="android.permission.RECORD_AUDIO"/> //允许应用程序修改全局声音设置的权限 <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/> //允许使用PowerManager的WakeLocks在进程休眠时能够后台保持 <uses-permission android:name="android.permission.WAKE_LOCK"/> //允许请求访问使用照相设备(如果使用视频通话则必选配置) <uses-permission android:name="android.permission.CAMERA"/>
                	
					

//以下列出几种可选配置,开发者可根据自己的需求进行选择配置

//如需使用蓝牙设备,可配置以下权限 //允许程序连接到已配对的蓝牙设备 <uses-permission android:name="android.permission.BLUETOOTH"/> //允许程序发现和配对蓝牙设备 <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> //如需GPS相关权限,可配置以下权限 //GPS定位权限 <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/> //允许一个程序访问CellID或WiFi热点来获取粗略的位置 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> //允许读取电话的状态 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> //允许一个程序访问精良位置(如GPS) <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> //其他 //允许程序读取用户联系人数据 <uses-permission android:name="android.permission.READ_CONTACTS"/> //允许访问振动设备 <uses-permission android:name="android.permission.VIBRATE"/> //允许一个程序在系统启动完成时自定启动 <uses-permission android:name="android.permission.WAKE_LOCK"/> //允许一个程序接收到 ACTION_BOOT_COMPLETED广播在系统完成启动 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <uses-permission android:name="android.permission.READ_LOGS" />

注意事项:

1.SDK 的权限声明与application同级,因此要放到AndroidManifest.xml 清单文件的application节点外。

2.文档仅提供了几种可选权限,开发者如需使用其他权限,可以参考Android相关文档,根据自己的应用添加所需权限。

1.2.2 SDK核心配置

清单文件配置项

                	
// SDK核心服务配置
<service android:name="com.yuntongxun.ecsdk.ECClientService" 
android:enabled="true" android:process=":push" />

// 提高sdk服务存活率(v5.2.2r以后版本提供)
<service android:name="com.yuntongxun.ecsdk.ECClientService$InnerService"
android:enabled="true" android:process=":push" />

// 以下两项为SDK内部处理项,其中booter.Alarm在v5.1.9r以后版本提供
<receiver android:name="com.yuntongxun.ecsdk.booter.CCPReceivers$AlarmReceiver" 
android:process=":push"/>
<receiver android:name="com.yuntongxun.ecsdk.booter.Alarm" 
android:exported="false" android:process=":push"/>

// SDK网络改变广播
<receiver
    android:name="com.yuntongxun.ecsdk.booter.CCPReceivers$ConnectionReceiver"
    android:process=":push">
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver>

// SDK广播通知配置(开机广播)
// 可选广播、如果应用想做开机重启,可以实现该广播通知即可
<receiver
    android:name="com.yuntongxun.ecsdk.booter.CCPReceivers$BootReceiver"
    android:process=":push">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

// 声明自定义通知的广播接收器(需要替换包名,详见注意事项)
<receiver
    android:name=".service.YuntxNotifyReceiver"
    android:exported="false">
    <intent-filter>
        // 接收push消息
        // action匹配规则{packageName + ".action" + "功能"}
        <action android:name="com.yuntongxun.ecdemo.action.VOIP_CALL" />
        <action android:name="com.yuntongxun.ecdemo.action.MESSAGE" />
        <action android:name="com.yuntongxun.ecdemo.action.NOTIFICATION_CLICK" />
        <action android:name="com.yuntongxun.ecdemo.action.PERSON_VERSION" />
    </intent-filter>
</receiver>


                    

注意事项:

1.SDK核心配置是属于application的属性,需要放到AndroidManifest 清单文件的application节点内。

2.声明自定义通知的广播接收器,开发自有项目APP时,action 中的 com.yuntongxun.ecdemo 请替换为自有项目APP的包名

SDK消息通知说明

配置SDK消息通知广播 ,SDK通知会分三种提醒方式如下表所示

IM.png

a、直接通过设置的回调接口(OnChatReceiveListener)Push给应用,SDK处于登录状态并且应用处于运行状态,则会直接通过回调接口通知。

b、采用(BroadcastReceiver)广播通知(v5.1.8版本及以后版本提供),SDK处于登录状态并且应用处于未运行状态,则会直接唤醒应用处理。

c、如果应用未处于运行状态并且不想被唤醒应用运行则采用状态栏通知处理(SDK直接处理消息提醒,不会通知应用),比如调用ECDevice#logout(ECDevice.NotifyMode, ECDevice.OnLogoutListener)SDK退出登录并且传入后台设置接收消息才会有提醒。

注意:

(1)以上在a和b的场景下,SDK都会将消息直接给应用处理,只有在c的情况SDK才会直接处理消息提醒,所以应用需要处理a和b两种情况。

(2)当手机使用的是华为Rom系统(EMUI),在我们的SDK推送服务(ECClientService)不存活的情况下,推送服务器会通过华为推送将消息推送到客户端来实现消息通知,因此需要集成华为的sdk来处理华为推送。具体集成方式参考华为推送平台官网及其Demo: http://developer.huawei.com/cn/consumer/wiki/index.php?title=%E6%8E%A5%E5%85%A5%E8%AF%B4%E6%98%8E

1.3、混淆打包

对工程打包混淆,需要遵循如下规则:

                	
// 注:v.x.x.x根据实际版本号修改,例如v5.0.0.1b
-libraryjars libs/Yuntx_IMLib_vx.x.x.jar(如果是Android Studio 此行忽略)
-keep class com.yuntongxun.ecsdk.** {*; }


                    

2、请求回调和通知回调

SDK中和服务端的交互采取异步回调方法,有两种异步回调方法,一种是请求回调方法,一种是通知回调方法,详细介绍如下:

(1)请求回调方法:即由用户主动发出一个操作请求,请求的结果在回调中返回。具体说就是在调用sdk的方法时,sdk的方法参数中有回调方法,请求的结果直接在参数的回调方法中处理。例如发送消息的方法,包含获知消息是否发送成功的回调,此方法就是请求回调方法。

(2)通知回调方法:通知回调是指由云通讯服务端主动给客户端发送的信令或业务消息,如接收消息,就是由服务端通知应用来收消息,此方法就是通知回调方法。

文档更新时间:2017年1月17日