IOS即時聊天方案以及集成簡要

IOS即時聊天

方案

方案一:socket通信

iOS開發之即時通訊之Socket(AsyncSocket)

方案二:XMPP + OpenFire

引用:
XMPP(二)-基于asmack+openfire的安卓客戶端(仿QQ)的介紹以及個人心得

XMPP這塊兒,互相聊天并不需要雙方必須是好友關系
只需知道對方的JID即可收發消息,因此,許多應用也正是看中了這一點,來實現應用中的關注,粉絲等功能,而關注,取消關注,拉黑等功能是可以通過web服務實現的,而XMPP此時只充當了點對點的聊天功能,所以大家也不必糾結xmpp本身自帶的邀請好友了,同意好友申請了,獲取好友列表了等等,只需大致了解即可,重點是聊天過程的實現,以及客戶端跟服務端連接的穩定性

如果使用openfire的話,都是有兩個服務端的

  • 一個是自己的web服務端,一個就是openfire服務端,像好友頭像,昵稱,性別,年齡,地址,以及類似陌陌的照片墻等信息數據都是可通過web服務來存取的
  • 只需web數據庫跟openfire數據庫的用戶id對應起來即可,而只依靠openfire本身,這些資料的存取是無法實現的。

做這個項目時,本打算將web和of結合起來,來實現更復雜更貼近實戰的功能的,不過最后放棄了,應為這樣工作量太大了

聊天過程中,圖片,語音,視頻等信息如何通過xmpp傳輸


xmpp傳什么最快,傳什么最簡單?當然是字符串了!字符串中可以有什么?什么都可以有!因此,我們就可以將我們想要的信息都放進字符串中傳輸過去,對方收到消息后,解析之,便可得到一切你想要得到的東西,如本項目中,圖片,以及位置消息的實現,就是將圖片路徑或者位置坐標跟接收者以及發送者的信息以某特定間隔符間隔并組裝成一個字符串作為message的body發送過去(如:接收者* 發送者 * 消息類型 * 消息內容 * 發送時間 * 。。。等等等),對方收到消息后以“*”拆分便可得到所有信息,豈不快哉?因此,對于圖片語音視頻等類型的信息,我們都只需要其路徑即可,那么路徑又怎么獲得呢?就像我上面說的,配合web服務,現將圖片語音等上傳到web服務器獲取上傳成功后的路徑(這個不難吧),然后將路徑作為字符串發送給對方,對方接收到消息后按消息類型解析,并根據路徑下載圖片或語音

方案三:第三方平臺 --- 環信

iOS SDK 介紹


環信 SDK 為用戶開發 IM 相關的應用提供的一套完善的開發框架。包括以下幾個部分:


  • SDK_Core: 為核心的消息同步協議實現,完成與服務器之間的信息交換。
  • SDK: 是基于核心協議實現的完整的 IM 功能,實現了不同類型消息的收發、會話管理、群組、好友、聊天室等功能。
  • EaseUI: 是一組 IM 相關的 UI 控件,旨在幫助開發者快速集成環信 SDK。
    用戶可以基于我們提供的 Demo 實現自己的應用,也可以基于 SDK 開發自己應用。

SDK 采用模塊化設計,每一模塊的功能相對獨立和完善,用戶可以根據自己的需求選擇使用下面的模塊:

  • EMClient: 是 SDK 的入口,主要完成登錄、退出、連接管理等功能。也是獲取其他模塊的入口。
  • EMChatManager: 管理消息的收發,完成會話管理等功能。
  • EMContactManager: 負責好友的添加刪除,黑名單的管理。
  • EMGroupManager: 負責群組的管理,創建、刪除群組,管理群組成員等功能。
  • EMChatroomManager: 負責聊天室的管理。

整合大致步驟:

Xcode

 1. 環信管理后臺導入推送證書
 2. 下載環信SDk
 3. 導入依賴框架 framework

環信開發后臺

 1.新建應用  獲取 AppKey

初始化代碼

-(void)IMInit
{
    //AppKey:注冊的AppKey,詳細見下面注釋。
    //apnsCertName:推送證書名(不需要加后綴),詳細見下面注釋。
    EMOptions *options = [EMOptions optionsWithAppkey:@"ioscoder#shine"];
    options.apnsCertName = @"ZJDevelopPush";
    [[EMClient sharedClient] initializeSDKWithOptions:options];
}

整合EaseUI(根據實際需要) 使用官方API即可

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,565評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,115評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,577評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,514評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,234評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,621評論 1 326
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,641評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,822評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,380評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,128評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,319評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,879評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,548評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,970評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,229評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,048評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,285評論 2 376

推薦閱讀更多精彩內容

  • 點擊查看原文 Web SDK 開發手冊 SDK 概述 網易云信 SDK 為 Web 應用提供一個完善的 IM 系統...
    layjoy閱讀 13,842評論 0 15
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,158評論 4 61
  • 即時通訊系列閱讀 即時通訊基礎 即時通訊:XMPP基礎 即時通訊:XMPP項目實踐-微聊 Smack類庫最好的學習...
    JackChen1024閱讀 3,742評論 0 11
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,810評論 18 139
  • while 只要指定條件為true,循環就可以一直執行。 如果條件一直為true,會導致死循環使瀏覽器崩潰。 do...
    質真如渝閱讀 709評論 0 3