一:準(zhǔn)備工作
1硬萍、集成流程
(1)注冊成為云通訊平臺用戶灼擂。
(2)登陸云通訊平臺嫉入,進(jìn)入管理控制臺,創(chuàng)建自己的應(yīng)用璧尸。
(3)下載云通訊Android SDK咒林,根據(jù)開發(fā)指南進(jìn)行編碼實現(xiàn)。
2爷光、前期準(zhǔn)備
(1)注冊成為云通訊的用戶
(2)登陸云通訊平臺垫竞,進(jìn)入管理控制臺,創(chuàng)建自己的應(yīng)用蛀序。在創(chuàng)建IM類應(yīng)用的時候欢瞪,只需填寫應(yīng)用名稱,不必選擇"啟用應(yīng)用回調(diào)地址"徐裸、"啟用IVR"遣鼓、"啟用TTS"、"服務(wù)器白名單"等選項重贺。
(3)應(yīng)用創(chuàng)建成功后骑祟,在"應(yīng)用列表"里面可以看見自己剛剛創(chuàng)建的應(yīng)用,可以對該應(yīng)用進(jìn)行編輯和刪除操作气笙。當(dāng)該應(yīng)用集成完云通訊IM能力后準(zhǔn)備正式對外發(fā)布時次企,需要點擊"上線"。
注意:使用5.0以上的SDK集成客戶端潜圃,測試音視頻缸棵、音視頻會議、群組等需要先將在我們控制臺對應(yīng)的應(yīng)用上線秉犹,才可以進(jìn)行測試蛉谜。
3、核心概念
(1)生產(chǎn)環(huán)境:對應(yīng)的接入域名為:https://app.cloopen.com:8883
(2)開發(fā)者主賬號:每個開發(fā)者在云通訊平臺對應(yīng)一個主賬號
(a)ACCOUNT SID:主賬號id崇堵。
(b)AUTH TOKEN:主賬號驗證token型诚。
(4)AppID:應(yīng)用標(biāo)識,每個創(chuàng)建的應(yīng)用都對應(yīng)唯一的id標(biāo)識鸳劳。
(3)子賬號:每個App用戶在云通訊對應(yīng)一個子賬號狰贯,包括賬號id和驗證token,用于安全性驗證赏廓。
(4)VoIP賬號:VoIP賬號主要用于云通訊平臺的VoIP通訊能力涵紊,每個子賬號都對應(yīng)一個VoIP賬號,由系統(tǒng)自動生成幔摸。
說明:
每一個注冊開發(fā)者對應(yīng)一個主賬號摸柄。
每一個主賬號下可以創(chuàng)建多個應(yīng)用。
每一個應(yīng)用下面可以創(chuàng)建億級子賬號既忆。
每一個子賬號對應(yīng)一個VoIP賬號驱负。
二:使用介紹
1嗦玖、云通訊IM 賬號體系
為了方便開發(fā)者進(jìn)行開發(fā)和兼容IM4.0以前版本,云通訊支持兩種賬號體系跃脊。
(1)固定子賬號體系(即voip+voip密碼登錄方式):開發(fā)者需要自己調(diào)用創(chuàng)建子賬號接口 宇挫,為app的用戶創(chuàng)建對應(yīng)的云通訊voip賬號,并將voip賬號和用戶id進(jìn)行綁定酪术,voip密碼和用戶密碼進(jìn)行綁定器瘪,登錄 的時候必須用云通訊voip賬號和voip密碼登錄。
說明:固定子賬號體系在所有IM版本中都支持绘雁,需要注意的是4.0之前的版本登錄需要使用子賬號橡疼,子賬號密碼,voip賬號庐舟,voip密碼進(jìn)行登 錄衰齐,5.0的固定子賬號體系,直接用voip賬號和voip密碼就可以继阻。如果要在demo中測試voip加密碼登錄方式耻涛,需要先在官網(wǎng)控制臺創(chuàng)建自己的應(yīng) 用,然后將demo默認(rèn)的應(yīng)id和token替換成自己創(chuàng)建的應(yīng)用的瘟檩,登錄的voip賬號和密碼抹缕,需要是該應(yīng)用下創(chuàng)建的voip賬號和密碼。
Android中替換應(yīng)用id和token的地方是ECPreferenceSettings類墨辛,ios 是在AppConfig.plst文件中修改卓研,demo中的appkey就是用戶在控制臺創(chuàng)建的應(yīng)用的appid。
(2)任意子賬號體系(即自定義登錄方式):用戶不必自己在云通訊后臺為用戶創(chuàng)建云通訊子賬號睹簇,可以直接使用用戶自己開發(fā)的App中的賬號進(jìn)行登錄奏赘,該登錄方式我們不驗證密碼。用戶在集成的過程中太惠,可以自己實現(xiàn)對自己登錄賬號密碼的驗證磨淌。
說明:任意子賬號體系在IM5.0以后的版本中支持,登錄的用戶名凿渊,不能包含中文梁只,特殊符號,不能以g或者gg開頭埃脏,建議在5-20位之間搪锣。
2、登錄流程
對應(yīng)賬號體系彩掐,登錄云通訊也有兩種驗證方式:
? 賬號和密碼驗證方式:
在登錄的時候构舟,輸入云通訊的voip賬號和對應(yīng)的voip密碼即可登錄。
使用此種登陸方式堵幽,在app用戶注冊的時候狗超,需要同時向云通訊后臺注冊监嗜,如圖所示:
使用此種登陸方式,登陸流程如圖所示:
? 賬號和appId抡谐,appToken驗證方式:
此種方式登陸無需使用云通訊子賬號,直接使用app的自有賬號登陸即可桐猬,appID和appToken可以在官網(wǎng)的"控制臺"相關(guān)應(yīng)用的描述頁面得到麦撵,此種方式的登陸流程如圖所示:
3、業(yè)務(wù)指南
3.1溃肪、業(yè)務(wù)指南
兩個用戶一對一進(jìn)行聊天免胃,支持文本、表情惫撰、語音羔沙、圖片、附件5種消息格式厨钻。支持已發(fā)送(指消息已經(jīng)發(fā)送到服務(wù)端)回執(zhí)扼雏。
3.2、群組
兩個以上用戶一起聊天夯膀。支持文本诗充、表情、語音诱建、圖片蝴蜓、附件5種消息格式。同樣也支持已發(fā)送回執(zhí)俺猿。
3.3茎匠、群組操作
支持創(chuàng)建群組、主動加入群組押袍、邀請加入群組诵冒、成員主動退出群組、群主解散群組谊惭、群主踢人造烁、設(shè)置消息免打擾操作。
群組又分為私有群組和公開群組午笛。私有群組是指主動加入時必須經(jīng)管理員同意才能加入的群組惭蟋,公開群組是指主動加入時無需經(jīng)管理員同意就能加入的群組。
3.4药磺、離線消息
指用戶不在線時候告组,有人給其發(fā)送消息,此時消息存儲在服務(wù)端癌佩,當(dāng)用戶再上線時木缝,從服務(wù)端獲取這些之前未收到的消息便锨。
3.5、設(shè)備推送
用戶不在線時我碟,有人給其發(fā)送消息放案,服務(wù)端會給用戶設(shè)置發(fā)送推送通知。用戶可以選擇查看通知喚起應(yīng)用矫俺,此時消息會被獲取到吱殉。也可以選擇忽略,此時消息變成離線消息厘托。
注意:為了使在推送通知里面顯示的是用戶昵稱而不是用戶的賬號ID友雳,用戶需要調(diào)用設(shè)置個人信息接口來設(shè)置用戶的昵稱。
Ios支持離線推送铅匹,離線推送是通過蘋果的apns推送實現(xiàn)的押赊,需要自己上傳推送證書,請參考“iOS推送證書”文檔包斑,Android沒有離線推送一說流礁,當(dāng)前最新版本支持在調(diào)用登出接口后,通過廣播實現(xiàn)消息通知罗丰。
3.6崇棠、自定義消息
可以通過自定義消息發(fā)送指令來實現(xiàn)一些擴(kuò)展功能。如消息已經(jīng)送達(dá)丸卷,消息已讀枕稀,位置分享、閱后即焚……谜嫉。
4萎坷、體系架構(gòu)
4.1技術(shù)特點
容聯(lián)IM通訊云服務(wù),聚焦于"場景·連接"服務(wù)沐兰,幫助開發(fā)構(gòu)建更完整的產(chǎn)品體驗哆档。
容聯(lián)IM通訊云的主要技術(shù)特點有:
1、無需更改App原有框架和App Server架構(gòu)住闯,集成sdk接口即可實現(xiàn)IM通訊能力瓜浸。
2、采取無DNS設(shè)計比原,實現(xiàn)快速登錄體驗插佛。
3、自適應(yīng)網(wǎng)絡(luò)和最小心跳包相結(jié)合的心跳技術(shù)量窘,消耗更少電量雇寇。
4、采取特有的二進(jìn)制協(xié)議和包體精簡、包體壓縮锨侯、智能多包合并策略實現(xiàn)最小流量包和最快的收發(fā)速度嫩海。
5、參考微信囚痴、陌陌的系統(tǒng)設(shè)計方案叁怪,采取真正的push-pull系統(tǒng)架構(gòu),保證不丟消息深滚、有序到達(dá)以及弱網(wǎng)絡(luò)環(huán)境下的消息接收奕谭。
4.2第三方應(yīng)用和云通訊IM云交互示意圖:
Paste_Image.png
如圖:
藍(lán)色應(yīng)用為開發(fā)者開發(fā)的App和開發(fā)者的后臺服務(wù)器,后臺服務(wù)器實現(xiàn)開發(fā)者自己的業(yè)務(wù)邏輯和保存自己的私有數(shù)據(jù)成箫。綠色為容聯(lián)IM通訊云,紅色為容聯(lián)IM的sdk旨枯。
藍(lán)色空心箭頭為開發(fā)者app和自己的后臺服務(wù)器進(jìn)行信令及業(yè)務(wù)交互蹬昌,藍(lán)色箭頭為開發(fā)者App,黃色箭頭表示App server通過RESTFUL API接口的方式調(diào)用容聯(lián)云的服務(wù),如獲取歷史消息攀隔,廣播消息等皂贩。
4.3 SDK 體系結(jié)構(gòu):
如圖:
Paste_Image.png
容聯(lián)IM SDK是一個能力庫,提供各種IM相關(guān)的接口昆汹,包括Yuntx_IMLib和LibCore兩部分明刷。Yuntx_IMLib采取Native語言開發(fā),封裝各種消息結(jié)構(gòu)和能力結(jié)構(gòu)满粗。LibCore是核心IM SDK的核心協(xié)議棧辈末,主要處理特有的二進(jìn)制協(xié)議和傳輸層協(xié)議,采取c語言開發(fā)映皆。iOS和Android采取同一套LibCore挤聘,保證消息處理的一致性捅彻。
iOS 類結(jié)構(gòu):
Paste_Image.png
ECDevice 是IM sdk的核心類组去,包括:
(1)方法集:主要有登陸方法,登出方法步淹,設(shè)置個人信息方法从隆,獲取個人信息方法。
(2)MessageManager實例:包括GroupManager缭裆,處理群組的相關(guān)功能键闺,ChatManager處理聊天的相關(guān)消息
(3)ECVoIPCallManager實例:包含網(wǎng)絡(luò)電話接口,落地電話接口澈驼,雙向回?fù)芙涌谝约跋鄳?yīng)的回調(diào)接口的定義
(4)ECMeetingManager實例:包含實時對講接口艾杏,語音會議接口,視頻會議接口以及相應(yīng)的回調(diào)接口的定義
(5)Delegate:通知回調(diào)接口集:包括ECChatDelegate通知回調(diào)接口集,ECBaseDelegate登錄购桑、登出回調(diào)接口集畅铭,ECGroupDelegate群組管理通知回調(diào)接口集,ECVoIPCallDelegate音視頻功能通知回調(diào)接口集勃蜘,ECMeetingDelegate音視頻會議功能回調(diào)接口集硕噩。
消息類結(jié)構(gòu):
Paste_Image.png
ECMessage是消息基類,ECMessageBody是抽象的消息內(nèi)容類,包括:
(1)ECTextMessageBody:文本消息內(nèi)容類缭贡。
(2)ECFileMessageBody:附件消息內(nèi)容類炉擅,同事時也是多媒體消息內(nèi)容基類,分別是:
1.ECVoiceMessageBody:語音消息內(nèi)容類阳惹。
2.ECVideoMessageBody:視頻消息內(nèi)容類谍失。
3.ECImageMessageBody:圖片消息內(nèi)容類。