XMPP部分經驗

2021-06-27 20:14:02 字數 1475 閱讀 1801

(一)

1、首先是呼叫viewdidload方法。

2、先重新整理然後從資料庫裡面獲取所有的聊天記錄(initbubbledatas),這個方法寫在重新整理的方法裡面,每次重新整理都要呼叫

3、通過上面的方法將訊息結構轉換成聊天結構(structurebubbledataswithmessages),這個方法處理的物件是乙個xml流,就是通過這個方法將裡面的元素分類整理出來,比如訊息型別(mjlmessagetype),時間,訊息內容(body),在這個方法裡面我們還要根據資訊的型別進行處理,這個乙個方法

cmsg= [self structuremessagetype:mjlmessagetypetext xmppmessage:object.message path:nil expandpath:nil stamp:timestamp];這個方法裡面是組織訊息結構,是通過另外乙個類cmmessage來裝一下取出來的資訊的裡面的元素,cmmessage的屬性基本上包括上面那個方法傳過來的引數,同時還有更多,主要是有些引數還封裝了另外的屬性

然後就是將訊息結構轉換成聊天結構(structurebubbledata),通過這個方法將資料傳入顯示nsbubbledata,這個類是顯示在ui上面的資料的直接**,然後每條資訊返回乙個bubbledata物件,然後建立乙個全域性陣列,將bubbledata全部裝在這個全域性陣列bubbledatas裡面,此時方法structurebubbledataswithmessages已經執行完,目的達到,就是得到將

[(xmpproommessagecoredatastorageobject *)obj或者(xmppmessagearchiving_message_coredataobject *)obj物件轉換成直接能被bubbletableview**方法直接呼叫的物件。

4、上面那個方法會反覆用到,也是最複雜的最關鍵的處理,處理完之後就是分布好檢視(scrolltobottomwithtableheight和atbottom)

,這兩個分布檢視的方法),將陣列(bubbledata)裡面的資料裝在到ui上面。

以上是裝在流程,下面是重點說一下

cmchat*******的定製以及發資訊的流程。

(二)xmppmessagearchivingcoredatastorage,先建立乙個以該資料庫類似名字的實體,然後建立乙個謂詞和請求,謂詞是請求的特徵,是請求的樣式,其實就是搜尋,就是從資料庫中搜尋類似樣式的個體,也可以不這樣,可以乙個乙個對比,其實一樣,

3、我用上面的方式獲取討論組裡面的資訊並刪除,發現最新的資訊裡面沒有了,但是在開啟那個討論組,發現資訊還在,後來我知道,在討論組裡面資訊儲存有兩份,乙份是儲存再上面的資料庫裡(所有的資訊都儲存在裡面),還儲存乙份在xmpproomcoredatastorage裡面,我只刪掉乙份,而另外的沒有刪掉。

5、在開發中有一些很怪得命名方法,忽略它,不要緊的,不要被名字嚇到了。

xmpp的使用經驗

im 標準協議 有xmpp impp prim sip 等,其中xmpp基於xml的協議,具備了很好的擴充套件性 依靠xml的網域名稱空間 並且可以建立在tls上使用sasl認證。1.檔案比如 文件最好是依靠http進行傳輸,而不使用xmpp的socket連線通道 2.二進位制資料,依靠base64...

XMPP協議學習

xmpp協議簡介 xmpp extensible messageing and presence protocol 可擴充套件訊息與存在協議 是目前主流的四種im im instant messaging,即時訊息 協議之一,其他三種分別為 即時資訊和空間協議 impp 空間和即時資訊協議 prim...

XMPP協議介紹

通訊能夠在這三者的任意兩個之間雙向發生。伺服器同時承擔了客戶端資訊記錄,連線管理和資訊的路由功能。閘道器承擔著與異構即時通訊系統的互聯互通,異構系統可以包括sms 簡訊 msn,icq等。基本的網路形式是單客戶端通過tcp ip連線到單伺服器,然後在之上傳輸xml。客戶端利用xmpp 基於tcp i...