导入说明

1、环境要求 

在您集成容联云 SDK 前环境要求如下:

  • 建议使用Android Studio2.3及以上版本。
  • JAVA 编译版本 JDK 1.7 及以上版本。

 SDK版本支持

  •  容联Android SDK最低支持Android API 10即安卓2.3.3以上版本。

2、导入sdk

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

打开您下载的SDK,如图所示:

如果仅集成IM和音频功能,不需要视频,只需要导入IM加音频的SDK:YTX_Android_IM_AU_SDK.zip去下载

打开您下载的SDK,如图所示:

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

打开您下载的SDK,如图所示:

说明:

  • libserphone.so: IM消息和音视频以及音视频会议功能库,必须添加。
  • libECMedia.so: 使用音视频功能,必须添加。
  • libyuntx_gl_disp.so: 5.3.0以及之后版本添加了视频图像绘制库,使用ECOpenGLView控件需要添加。
  • libvoicechange.so: 5.3.0以及之后版本添加了语音变声接口库,用来将录制的语音文件进行音频数据处理转换成不同发声效果。
  • arm64-v8a目录中是64位的so库,适用于CPU是ARM64位的终端设备。
  • armeabi目录中是32位的so库,适用于CPU是通用ARM的终端设备。
  • YTX_Android_xx_SDK_v5.x.xr.jar是SDK对外提供的Jar包。

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

如何导入SDK,以IM专版的SDK为例(其他SDK导入方式一致),如图所示:

注意事项:

  • 如果开发者项目需要添加armeabi-v7a目录,可将armeabi目录下的所有so文件拷贝至armeabi-v7a目录。
  • 目前云通讯只支持arm系列的CPU。其他类型(X86,MIPS等)不支持,因此不能在libs目录下添加ARM类型以外的适配目录,如必须此类适配,可以拨打4006101019客服电话具体洽谈。               

3、配置工程

3.1 权限配置

3.1.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的包名                                          

                                                           

3.1.2 必选配置
  • //允许程序打开网络
  • 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" />                

                                         

注意事项:

  • SDK 的权限声明与application同级,因此要放到AndroidManifest.xml 清单文件的application节点外。
  • 文档仅提供了几种可选权限,开发者如需使用其他权限,可以参考Android相关文档,根据自己的应用添加所需权限。

                                 

3.1.3 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>                 

                                         

                                 

注意事项:

  • SDK核心配置是属于application的属性,需要放到AndroidManifest 清单文件的application节点内。
  • 声明自定义通知的广播接收器,开发自有项目APP时,action 中的 com.yuntongxun.ecdemo 请替换为自有项目APP的包名

3.2 混淆打包

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

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

4、请求回调和通知回调

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

  • 请求回调方法:即由用户主动发出一个操作请求,请求的结果在回调中返回。具体说就是在调用sdk的方法时,sdk的方法参数中有回调方法,请求的结果直接在参数的回调方法中处理。例如发送消息的方法,包含获知消息是否发送成功的回调,此方法就是请求回调方法。
  • 通知回调方法:通知回调是指由云通讯服务端主动给客户端发送的信令或业务消息,如接收消息,就是由服务端通知应用来收消息,此方法就是通知回调方法。