現在的外包項目需求變態的各種各樣,今天要做社交,明天要加電商,后天又要加直播了,這些系統如果要自己開發,除非大公司技術和人力都夠,不然短時間是幾乎實現不了的。所以學會靈活利用市面上的各種SDK是灰常重要的技能。
最近繼續在做的項目是一個氣象救災類APP,里面需要進行聊天的即時通訊模塊。目前已經實現,效果如下:
一、市面上的即時通訊SDK
目前市面上的即時通訊SDK大概有:融雲、網易雲信、容聯雲等。非常多。
較為穩定、功能較全的應該是網易雲信了,界面如下:
但是我們的應用需要的即時通訊是一個模塊,已經有TabBar作為基本的界面布局,聊天模塊Tab形式比較合適,所以方便集成,使用了容聯雲的Demo。
(當然也可以使用雲信的SDK然后自己寫界面)
二、即時通訊SDK的運作邏輯:
一般提供SDK的平台,只提供通訊能力,幾乎不提供用戶資料管理。畢竟如果客戶要對個人信息做各種各樣的自定義需求的話,雲平台提供不了這么多自定義的接口。另外數據安全也是客戶考慮的因素,所以現在的雲平台一般都只相當於一個信息傳遞中介。
上圖就是其運作邏輯,APP和APP,或者WEB和APP的即時通訊,直接走雲平台的服務器,這個服務器里存儲的,只有UserA的ID和UserB的ID,和其聊天的內容。如果我們后台要獲取聊天記錄的話,就通過另外的接口獲取。而這些平台的盈利點,也就是通過保存聊天記錄來收費,或者加入更高級的功能,比如視頻通話等。
三、即時通訊模塊的嵌入
1.兩套賬號的綁定
假如想要做用戶系統的話,那我們一定要有自己的賬號密碼。而雲平台有一套登陸的VOIP賬號密碼,但不涉及具體的用戶信息管理。
所以我們需要對用戶賬號和雲平台賬號一對一進行綁定。
操作流程簡單而言登錄用我們自己平台的賬號。在登陸后,獲取到返回的賬號密碼,然后對雲平台的通訊系統進行登陸。
2.做好由雲平台賬號獲取用戶信息的接口
這里麻煩的地方在於,聊天模塊的所有用戶資料雲平台是不存儲的,比如電話、地址等(也許你也並不希望他們去存)。所以聊天模塊加載的時候,都只有VOIP跟VOIP之間的關系。【不過一般他們都會存用戶對應的姓名(或昵稱),這樣的話聊天模塊加載的時候,至少姓名可以加載出來。】
所以我們必須想方式,通過VOIP來從我們自己數據庫找到該用戶的具體信息來顯示。比如好友關系、電話等更詳細信息,容聯雲都是沒有做的,需要存在我們自己的數據庫里然后通過接口取出來。
這一塊,我實現的方式是,首先登陸的時候,通過我們的服務器下載用戶的通訊錄(好友關系),通訊錄包含了好友們的基本信息和VOIP賬號。
然后要獲得某個好友的信息,通過VOIP賬號進行本地查詢就夠了。如果需要更多信息,可以另外做接口。
demo下載:
網易雲信:http://www.netease.im/?page=download
容聯雲:http://www.yuntongxun.com/api/im/sdkDemo#point_box