在 app 中需要使用到即時(shí)通訊的功能蛋铆,自己在項(xiàng)目中使用的是環(huán)信的即時(shí)通訊平臺(tái)诀蓉。接下來(lái)的幾篇文章都會(huì)說(shuō)明和總結(jié)自己的使用過(guò)程的一些細(xì)節(jié)惜辑。
在數(shù)據(jù)的安全方面化撕,環(huán)信的即時(shí)通訊平臺(tái)只需要項(xiàng)目與環(huán)信服務(wù)器的消息數(shù)據(jù)的傳遞凳忙,并不需要涉及到自己核心業(yè)務(wù)的用戶數(shù)據(jù)业踏。在這點(diǎn)上感覺(jué)還是比較靠譜的。
對(duì)于只需要一些基本的即時(shí)通訊功能(用戶數(shù)據(jù)涧卵、群組勤家、消息、消息推送柳恐、狀態(tài)伐脖、文件),環(huán)信平臺(tái)的集成和使用還是免費(fèi)的乐设,這也是不錯(cuò)的選擇讼庇。
Android SDK 概述
環(huán)信 SDK 開(kāi)發(fā)框架包括 SDK_Core、SDK近尚、EaseUI蠕啄。
-
SDK_Core
:核心的消息同步協(xié)議實(shí)現(xiàn),完成了和環(huán)信服務(wù)器之間的信息交換; -
SDK
:在核心協(xié)議的基礎(chǔ)上實(shí)現(xiàn)了完整的 IM 功能歼跟,包括不同類型的消息收發(fā)和媳、會(huì)話管理、群組哈街、好友等功能留瞳; -
EaseUI
:一組 IM 相關(guān)的 UI 控件,把消息的發(fā)送接收等功能封裝到了內(nèi)部骚秦,可滿足快速開(kāi)發(fā)的要求她倘。
環(huán)信 SDK 采用了模塊化設(shè)計(jì),每一個(gè)模塊的功能相對(duì)獨(dú)立作箍,我們可以根據(jù)自己的需求選擇合適的模塊硬梁。
EMClient:EMChatManager 模塊、EMContactManager 模塊蒙揣、EMGroupManager 模塊靶溜、EMChatRoomManager 模塊。
-
EMClient
:SDK 的入口懒震,主要完成登錄罩息、退出、連接管理等功能个扰,也是獲取其他模塊的入口瓷炮; -
EMChatManager
:管理消息的收發(fā),完成會(huì)話管理等功能递宅; -
EMContactManager
:負(fù)責(zé)好友的添加刪除娘香,黑名單的管理; -
EMGroupManager
:負(fù)責(zé)群組的管理办龄,創(chuàng)建烘绽、刪除群組,管理群成員等功能俐填;
Gradel 導(dǎo)入 SDK
android {
//use legacy for android 6.0
useLibrary 'org.apache.http.legacy'
}
dependencies {
compile 'com.android.support:appcompat-v7:23.4.0'
//Optional compile for GCM (Google Cloud Messaging).
compile 'com.google.android.gms:play-services-gcm:9.4.0'
compile 'com.hyphenate:hyphenate-sdk:3.3.0'
}
如果不需要音視頻通話的 SDK安接,使用 compile 'com.hyphenate:hyphenate-sdk-lite:3.3.0'
,具體 SDK 版本號(hào)參考 這里英融。
SDK 中使用到的第三方庫(kù)
-
google-play-services
:GCM 推送盏檐; -
org.apache.http.legacy
:Android6.0 中默認(rèn)移除了 httpclient 的代碼,用這個(gè)庫(kù)兼容驶悟,不能刪除胡野,否則在 6.0 系統(tǒng)中,SDK 會(huì)有問(wèn)題痕鳍。
EaseUI 中使用到的第三方庫(kù)
-
glide
:圖片處理庫(kù)硫豆。
實(shí)際項(xiàng)目中用到的第三方庫(kù)
-
com.android.support:multidex:1.0.1
:APP 總方法數(shù)超過(guò) 64k 時(shí),需要用這個(gè)庫(kù)做分包處理。使用環(huán)信 SDK 肯定得分包够庙,它占的太大了恭应。
如果對(duì)生成的 apk 大小比較敏感,建議使用 jar 方式耘眨,并且手工拷貝 so。如果使用 lite 版境肾,建議僅保留 armeabi剔难;如果使用音視頻版,建議僅保留 armeabi-v7a奥喻。這樣雖然在對(duì)應(yīng)平臺(tái)執(zhí)行的速度會(huì)降低偶宫,但是能有效減小 apk 的大小。
AndroidManifest 配置信息
<!-- Required -->
<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" />
...
<!-- 設(shè)置環(huán)信應(yīng)用的AppKey -->
<meta-data android:name="EASEMOB_APPKEY" android:value="Your AppKey" />
<!-- 聲明SDK所需的service SDK核心功能-->
<service android:name="com.hyphenate.chat.EMChatService" android:exported="true"/>
<service android:name="com.hyphenate.chat.EMJobService"
android:permission="android.permission.BIND_JOB_SERVICE"
android:exported="true"
/>
<!-- 聲明SDK所需的receiver -->
<receiver android:name="com.hyphenate.chat.EMMonitorReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REMOVED"/>
<data android:scheme="package"/>
</intent-filter>
<!-- 可選filter -->
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
App 混淆
在 ProGuard 文件中加入以下 keep
-keep class com.hyphenate.** {*;}
-dontwarn com.hyphenate.**
文章只是作為自己記錄學(xué)習(xí)使用环鲤,如果有使用不當(dāng)?shù)牡胤娇梢訞我纯趋。
參考文章:
環(huán)信開(kāi)發(fā)文檔