OpenIM文檔方面的建設一直遠遠落后于開發(fā), 也經(jīng)常被開發(fā)者詬病,在接下來一周的時間里,我們重點補齊文檔,讓開發(fā)者更輕松接入。由于app sdk底層都是go來實現(xiàn),所以本文先寫一個模板和框架,在接下來的時間里,會有iOS、Android、Flutter、Uniapp、jssdk同事補充具體的細節(jié),并更新到官網(wǎng)
初始化及登錄
初始化并登錄成功回調,是正常使用OpenIM 服務的前提
SDK | 描述 |
[Login] | 登錄,如果登錄成功,必須退出登錄才能再次執(zhí)行登錄操作 |
[Logout] | 退出登錄 |
[GetLoginStatus] | 獲取登錄狀態(tài), 101:登錄成功, 102:登陸中, 103:登錄失敗, 201:退出登錄 |
[GetLoginUser] | 獲取當前登錄用戶UserID,此時用戶登錄狀態(tài)未知 |
[initSDK] | 初始化 SDK,整個生命周期執(zhí)行一次,登錄相關監(jiān)聽介紹如下: |
OpenIM和調用方利用監(jiān)聽回調機制,和調用方信息互通,把登錄狀態(tài)通過異步回調方式即時傳遞給調用方,確保信息及時傳達而不阻塞其主線程。
監(jiān)聽說明
登錄相關監(jiān)聽 | 回調描述 |
[OnConnecting] | 連接中,在連接后臺時(包括重連)回調 |
[OnConnectSuccess] | 連接成功 |
[OnConnectFailed] | 連接失敗,如果因網(wǎng)絡連接失敗會重連,其他情況不重連 |
[OnKickedOffline] | 被踢下線,可能由于多端登錄策略所致,或后臺管理員強制其退出登錄 |
[OnUserTokenExpired] | 檢測token過期回調 |
調用流程
OpenIM調用流程分為如下幾步:
(1)初始化:在整個生命周期執(zhí)行一次
(2)設置監(jiān)聽:包括群組監(jiān)聽,好友監(jiān)聽,用戶監(jiān)聽,消息及會話監(jiān)聽,這些監(jiān)聽會在其他章節(jié)中描述
(3)登錄:登錄回調成功后再執(zhí)行其他操作,否則可能出現(xiàn)資源加載未完成的錯誤
(4)收發(fā)消息等操作;
好友管理相關接口
OpenIM提供好友關系托管,比如好友申請,同意,以及好友獲取等,OpenIM在客戶端本地存儲好友關系,并結合消息通知機制,按需調用后臺接口,確保本地和服務端數(shù)據(jù)一致。同時利用監(jiān)聽機制,把數(shù)據(jù)變化通過異步回調傳達調用方。OpenIM在收發(fā)消息時,默認不檢查好友關系,您可以在配置文件中自行修改。OpenIM好友關系是雙向關系,A添加B為好友后,則A在B的好友列表中,B也在A的好友列表中,A刪除B,僅僅只是刪除A的好友列表,而B的好友列表不受影響。同樣,黑名單也類似。
SDK | 描述 |
[GetDesignatedFriendsInfo] | 獲取指定好友的信息 |
[GetFriendList] | 獲取所有的好友列表 |
[SearchFriends] | 通過關鍵詞搜索好友 |
[CheckFriend] | 檢查是否好友關系 |
[AddFriend] | 發(fā)起添加好友請求 |
[SetFriendRemark] | 設置好友備注 |
[DeleteFriend] | 刪除好友(單向刪除) |
[GetRecvFriendApplicationList] | 獲取我收到的添加好友申請列表 |
[GetSendFriendApplicationList] | 獲取我發(fā)起的的添加好友申請列表 |
[AcceptFriendApplication] | 同意好友申請 |
[RefuseFriendApplication] | 拒絕好友申請 |
[SetFriendListener] | 設置好友、黑名單相關監(jiān)聽,用于UI層實時感知數(shù)據(jù)變化并刷新 |
監(jiān)聽說明
好友監(jiān)聽器的作用:調用方設置好友監(jiān)聽,好友關系的變化會通過OpenIM消息機制實時同步到需要感知的在線用戶,包括用戶的其他端,調用方根據(jù)回調事件做相關的數(shù)據(jù)處理。
比如用戶B在Android端添加用戶A為好友,用戶A(所有在線的終端)收到B的好友申請,則A調用GetRecvFriendApplicationList獲取收到的好友申請列表,刷新界面。同時,用戶B在線其他的終端比如PC端也會收到通知,B調用GetSendFriendApplicationList獲取發(fā)起的好友申請列表,刷新B發(fā)出的好友申請列表。
當然也可以利用回調的參數(shù)信息,做增量處理,而不用獲取全量的好友申請列表。
以用戶B申請?zhí)砑佑脩鬉為例
好友及黑名單監(jiān)聽 | 描述 |
[OnFriendApplicationAdded] | 好友申請列表增加,主動發(fā)起者和被動添加者會收到 |
[OnFriendApplicationDeleted] | 好友申請列表刪除,主動刪除者會收到 |
[OnFriendApplicationAccepted] | 好友申請被同意,主動發(fā)起者和被動添加者會收到 |
[OnFriendApplicationRejected] | 好友申請被拒絕,主動發(fā)起者和被動添加者會收到 |
[OnFriendAdded] | 好友增加,用戶好友增加時會收到 |
[OnFriendDeleted] | 好友刪除,用戶好友減少時會收到 |
[OnFriendInfoChanged] | 好友信息改變,用戶好友信息(比如昵稱等)改變時會收到 |
[OnBlackAdded] | 黑名單增加,用戶黑名單增加時會收到 |
[OnBlackDeleted] | 黑名單移除,用戶黑名單減少時會收到 |
項目介紹
OpenIM繼續(xù)領跑開源IM領域,在廣大開發(fā)者的支持下,目前github star突破9k。在數(shù)據(jù)泄露、信息外泄、隱私濫用的時代,IM私有化部署需求旺盛。其中,政企協(xié)同辦公對IM需求猛增,隨著信息化技術的迭代升級以及信創(chuàng)產業(yè)加速落地和實踐,協(xié)同辦公軟件的發(fā)展?jié)摿⑦M一步被釋放?!鞍踩煽亍爸鸩匠蔀榈谝灰?。對于社區(qū)交友領域,暴露出的隱私安全問題越來越多,私有化部署確保用戶數(shù)據(jù)不泄露。
OpenIM從服務端到客戶端SDK開源即時通訊(IM)整體解決方案,可以輕松替代第三方IM云服務,打造具備聊天、社交、辦公功能的app。
github地址: https://github.com/OpenIMSDK/Open-IM-Server
開發(fā)者中心:https://doc.rentsoft.cn/#/
OpenIM團隊
創(chuàng)始團隊來自資深IM技術團隊,我們致力于用開源技術創(chuàng)造服務價值,打造輕量級、高可用的IM架構,開發(fā)者只需簡單調用 SDK,即可在應用內構建多種即時通訊及實時音視頻互動場景。OpenIM優(yōu)勢:開源,安全,可靠,低成本。對于信息安全重視的電子政務,企業(yè)協(xié)同辦公,OpenIM都是非常好的選擇。
從公司成立之初就將“開源”作為核心戰(zhàn)略來推進,開源充分體現(xiàn)了自由、平等、分享的互聯(lián)網(wǎng)精神。
OpenIM邀請全球技術極客參與技術優(yōu)化,讓開發(fā)者輕松集成,讓每一個應用都具備IM功能,同時考慮企業(yè)的接入成本、服務器資源以及最重要的數(shù)據(jù)安全性和私密性。