如果僅集成IM功能,只需要導(dǎo)入IM專版的SDK:YTX_Android_IM_SDK.zip,去下載。
如果需要集成全部功能,包含IM、實時音視頻、會議,則需要導(dǎo)入全功能的SDK:YTX_Android_Full_SDK.zip,去下載。
將解壓后的文件導(dǎo)入您工程下的libs目錄下。Jar版本號以SDK目錄下放置的Jar包實際版本為準。
IM專版SDK導(dǎo)入libs目錄下圖所示:
全能力版SDK導(dǎo)入libs目錄如下圖所示:
說明:
1. libserphone.so: IM消息和音視頻以及音視頻會議功能庫,必須添加。
2. libECMedia.so: 使用音視頻功能,必須添加。
3. libyuntx_gl_disp.so: 5.3.0以及之后版本添加了視頻圖像繪制庫,使用ECOpenGLView控件需要添加。
4. libvoicechange.so: 5.3.0以及之后版本添加了語音變聲接口庫,用來將錄制的語音文件進行音頻數(shù)據(jù)處理轉(zhuǎn)換成不同發(fā)聲效果。
5. arm64-v8a目錄中是64位的so庫,適用于CPU是ARM64位的終端設(shè)備。
6. armeabi目錄中是32位的so庫,適用于CPU是通用ARM的終端設(shè)備。
7. Yuntx_IMLib_v5.x.xr.jar是SDK對外提供的Jar包。
注意事項:
1. 如果開發(fā)者項目需要添加armeabi-v7a目錄,可將armeabi目錄下的libserphone.so拷貝至armeabi-v7a目錄。
2. 目前云通訊只支持arm系列的CPU。其他類型(X86,MIPS等)不支持,因此不能在libs目錄下添加ARM類型以外的適配目錄,如必須此類適配,可以撥打4006101019客服電話具體洽談。
1.2.1 權(quán)限配置
//自定義權(quán)限配置
云通訊SDK需要用戶聲明接收IM消息和接收來電的自定義權(quán)限,用于接收SDK發(fā)出的廣播通知。客戶可根據(jù)需要使用的功能進行配置,如未設(shè)置對應(yīng)權(quán)限將無法正常接收廣播通知。
//接收IM消息的自定義權(quán)限 <permission android:name="com.yuntongxun.ecdemo.permission.RECEIVE_MSG" android:protectionLevel="signature"/> //使用接收IM消息權(quán)限 <uses-permission android:name="com.yuntongxun.ecdemo.permission.RECEIVE_MSG"/> //接收來電的自定義權(quán)限 <permission android:name="com.yuntongxun.ecdemo.permission.INCOMING_CALL" android:protectionLevel="signature"/> //使用接收來電權(quán)限 <uses-permission android:name="com.yuntongxun.ecdemo.permission.INCOMING_CALL"/>
注意事項:
在開發(fā)自有項目APP時需要將以上配置中的com.yuntongxun.ecdemo替換為自有項目APP的包名
//以下為必選配置
//允許程序打開網(wǎng)絡(luò)sockets <uses-permission android:name="android.permission.INTERNET"/> //允許程序訪問有關(guān)的網(wǎng)絡(luò)信息 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> //允許程序訪問Wi-Fi網(wǎng)絡(luò)狀態(tài)信息 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> //允許應(yīng)用讀寫用戶的外部存儲器 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> //允許讀取電話的狀態(tài) <uses-permission android:name="android.permission.READ_PHONE_STATE"/> //允許一個程序獲取信息有關(guān)當前或最近運行的任務(wù),一個縮略的任務(wù)狀態(tài),是否活動等等 <uses-permission android:name="android.permission.GET_TASKS"/> //允許程序錄制音頻 <uses-permission android:name="android.permission.RECORD_AUDIO"/> //允許應(yīng)用程序修改全局聲音設(shè)置的權(quán)限 <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/> //允許使用PowerManager的WakeLocks在進程休眠時能夠后臺保持 <uses-permission android:name="android.permission.WAKE_LOCK"/> //允許請求訪問使用照相設(shè)備(如果使用視頻通話則必選配置) <uses-permission android:name="android.permission.CAMERA"/>
//以下列出幾種可選配置,開發(fā)者可根據(jù)自己的需求進行選擇配置
//如需使用藍牙設(shè)備,可配置以下權(quán)限 //允許程序連接到已配對的藍牙設(shè)備 <uses-permission android:name="android.permission.BLUETOOTH"/> //允許程序發(fā)現(xiàn)和配對藍牙設(shè)備 <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> //如需GPS相關(guān)權(quán)限,可配置以下權(quán)限 //GPS定位權(quán)限 <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/> //允許一個程序訪問CellID或WiFi熱點來獲取粗略的位置 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> //允許讀取電話的狀態(tài) <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> //允許一個程序訪問精良位置(如GPS) <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> //其他 //允許程序讀取用戶聯(lián)系人數(shù)據(jù) <uses-permission android:name="android.permission.READ_CONTACTS"/> //允許訪問振動設(shè)備 <uses-permission android:name="android.permission.VIBRATE"/> //允許一個程序在系統(tǒng)啟動完成時自定啟動 <uses-permission android:name="android.permission.WAKE_LOCK"/> //允許一個程序接收到 ACTION_BOOT_COMPLETED廣播在系統(tǒng)完成啟動 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <uses-permission android:name="android.permission.READ_LOGS" />
注意事項:
1.SDK 的權(quán)限聲明與application同級,因此要放到AndroidManifest.xml 清單文件的application節(jié)點外。
2.文檔僅提供了幾種可選權(quán)限,開發(fā)者如需使用其他權(quán)限,可以參考Android相關(guān)文檔,根據(jù)自己的應(yīng)用添加所需權(quán)限。
1.2.2 SDK核心配置
清單文件配置項
// SDK核心服務(wù)配置 <service android:name="com.yuntongxun.ecsdk.ECClientService" android:enabled="true" android:process=":push" /> // 提高sdk服務(wù)存活率(v5.2.2r以后版本提供) <service android:name="com.yuntongxun.ecsdk.ECClientService$InnerService" android:enabled="true" android:process=":push" /> // 以下兩項為SDK內(nèi)部處理項,其中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網(wǎng)絡(luò)改變廣播 <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廣播通知配置(開機廣播) // 可選廣播、如果應(yīng)用想做開機重啟,可以實現(xiàn)該廣播通知即可 <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匹配規(guī)則{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節(jié)點內(nèi)。
2.聲明自定義通知的廣播接收器,開發(fā)自有項目APP時,action 中的 com.yuntongxun.ecdemo 請?zhí)鎿Q為自有項目APP的包名
配置SDK消息通知廣播 ,SDK通知會分三種提醒方式如下表所示
a、直接通過設(shè)置的回調(diào)接口(OnChatReceiveListener)Push給應(yīng)用,SDK處于登錄狀態(tài)并且應(yīng)用處于運行狀態(tài),則會直接通過回調(diào)接口通知。
b、采用(BroadcastReceiver)廣播通知(v5.1.8版本及以后版本提供),SDK處于登錄狀態(tài)并且應(yīng)用處于未運行狀態(tài),則會直接喚醒應(yīng)用處理。
c、如果應(yīng)用未處于運行狀態(tài)并且不想被喚醒應(yīng)用運行則采用狀態(tài)欄通知處理(SDK直接處理消息提醒,不會通知應(yīng)用),比如調(diào)用ECDevice#logout(ECDevice.NotifyMode, ECDevice.OnLogoutListener)SDK退出登錄并且傳入后臺設(shè)置接收消息才會有提醒。
注意:
(1)以上在a和b的場景下,SDK都會將消息直接給應(yīng)用處理,只有在c的情況SDK才會直接處理消息提醒,所以應(yīng)用需要處理a和b兩種情況。
(2)當手機使用的是華為Rom系統(tǒng)(EMUI),在我們的SDK推送服務(wù)(ECClientService)不存活的情況下,推送服務(wù)器會通過華為推送將消息推送到客戶端來實現(xiàn)消息通知,因此需要集成華為的sdk來處理華為推送。具體集成方式參考華為推送平臺官網(wǎng)及其Demo: http://developer.huawei.com/cn/consumer/wiki/index.php?title=%E6%8E%A5%E5%85%A5%E8%AF%B4%E6%98%8E
對工程打包混淆,需要遵循如下規(guī)則:
// 注:v.x.x.x根據(jù)實際版本號修改,例如v5.0.0.1b -libraryjars libs/Yuntx_IMLib_vx.x.x.jar(如果是Android Studio 此行忽略) -keep class com.yuntongxun.ecsdk.** {*; }
SDK中和服務(wù)端的交互采取異步回調(diào)方法,有兩種異步回調(diào)方法,一種是請求回調(diào)方法,一種是通知回調(diào)方法,詳細介紹如下:
(1)請求回調(diào)方法:即由用戶主動發(fā)出一個操作請求,請求的結(jié)果在回調(diào)中返回。具體說就是在調(diào)用sdk的方法時,sdk的方法參數(shù)中有回調(diào)方法,請求的結(jié)果直接在參數(shù)的回調(diào)方法中處理。例如發(fā)送消息的方法,包含獲知消息是否發(fā)送成功的回調(diào),此方法就是請求回調(diào)方法。
(2)通知回調(diào)方法:通知回調(diào)是指由云通訊服務(wù)端主動給客戶端發(fā)送的信令或業(yè)務(wù)消息,如接收消息,就是由服務(wù)端通知應(yīng)用來收消息,此方法就是通知回調(diào)方法。
文檔更新時間:2017年1月17日