如果僅集成IM功能,只需要導入IM專版的SDK:YTX_Android_IM_SDK.zip,去下載。
如果需要集成全部功能,包含IM、實時音視頻、會議,則需要導入全功能的SDK:YTX_Android_Full_SDK.zip,去下載。
將解壓后的文件導入您工程下的libs目錄下。Jar版本號以SDK目錄下放置的Jar包實際版本為準。
IM專版SDK導入libs目錄下圖所示:
全能力版SDK導入libs目錄如下圖所示:
說明:
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 權限配置
//自定義權限配置
云通訊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通知會分三種提醒方式如下表所示
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
對工程打包混淆,需要遵循如下規則:
// 注:v.x.x.x根據實際版本號修改,例如v5.0.0.1b -libraryjars libs/Yuntx_IMLib_vx.x.x.jar(如果是Android Studio 此行忽略) -keep class com.yuntongxun.ecsdk.** {*; }
SDK中和服務端的交互采取異步回調方法,有兩種異步回調方法,一種是請求回調方法,一種是通知回調方法,詳細介紹如下:
(1)請求回調方法:即由用戶主動發出一個操作請求,請求的結果在回調中返回。具體說就是在調用sdk的方法時,sdk的方法參數中有回調方法,請求的結果直接在參數的回調方法中處理。例如發送消息的方法,包含獲知消息是否發送成功的回調,此方法就是請求回調方法。
(2)通知回調方法:通知回調是指由云通訊服務端主動給客戶端發送的信令或業務消息,如接收消息,就是由服務端通知應用來收消息,此方法就是通知回調方法。
文檔更新時間:2017年1月17日