(九)XMPP聊天模塊

http://www.bkjia.com/IOSjc/965137.html

這個(gè)模塊是用到什么類? message嗎? 但是好像在XMPPFramework.h中并不能找到我們想要的類

經(jīng)驗(yàn)所結(jié):所有的模塊最少都有一個(gè)模塊類和數(shù)據(jù)存儲(chǔ)類
因?yàn)樵?XMPPFramework.h 中并沒有我們想要的
所以我們只能自己添加到XMPPFramework.h文件中

#import "XMPPMessageArchiving.h"
#import "XMPPMessageArchivingCoreDataStorage.h"

類方法屬性介紹:


樓上講了他的屬性和基本的介紹,我這里講一下怎么去使用:

電子名片的模塊內(nèi)部是怎么實(shí)現(xiàn)的
》發(fā)送請(qǐng)求從服務(wù)器獲取 電子名片數(shù)據(jù)(用戶的個(gè)人信息)數(shù)據(jù)
》接收到服務(wù)器返回的 電子名片 數(shù)據(jù)后,把數(shù)據(jù)緩存到本地?cái)?shù)據(jù)庫


在Extensions中有XEP-0054擴(kuò)展,提供了一種可以通過XMPP發(fā)送電子名片的機(jī)制。

講了 這個(gè)模塊的來處(XEP-0054)和 這個(gè)模塊的基本流程現(xiàn)在開始講怎么去使用它


1、激活模塊

//創(chuàng)建模塊
_msgArchivingStorage = [[XMPPMessageArchivingCoreDataStorage alloc] init];
_msgArchiving = [[XMPPMessageArchiving alloc] initWithMessageArchivingStorage:_msgArchivingStorage];
//激活
[_msgArchiving activate:_xmppStream];

2、獲取模塊信息

#1.獲取上下文2.添加條件3.執(zhí)行請(qǐng)求獲取數(shù)據(jù)  同與花名冊(cè)這里有些就不做多的介紹了

// 1.上下文  XMPPMessageArchivingCoreDataStorage 
NSManagedObjectContext *msgContext = [WCXMPPTool sharedWCXMPPTool].msgArchivingStorage.mainThreadManagedObjectContext;

// 2.查詢請(qǐng)求
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"XMPPMessageArchiving_Message_CoreDataObject"];

// 過濾 (當(dāng)前登錄用戶 并且 好友的聊天消息)
NSString *loginUserJid = [WCXMPPTool sharedWCXMPPTool].xmppStream.myJID.bare;
WCLog(@"%@",loginUserJid);
NSPredicate *pre = [NSPredicate predicateWithFormat:@"streamBareJidStr = %@ AND bareJidStr = %@",loginUserJid,self.friendJid.bare];
request.predicate = pre;

// 設(shè)置時(shí)間排序
NSSortDescriptor *timeSort = [NSSortDescriptor sortDescriptorWithKey:@"timestamp" ascending:YES];
request.sortDescriptors = @[timeSort];

// 3.執(zhí)行請(qǐng)求  NSFetchedResultsController
_resultContr = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:msgContext sectionNameKeyPath:nil cacheName:nil];
_resultContr.delegate = self;
NSError *err = nil;
[_resultContr performFetch:&err];

3、獲取聊天數(shù)據(jù)

//獲取聊天信息  NSFetchedResultsController
    XMPPMessageArchiving_Message_CoreDataObject *msgObj = _resultContr.fetchedObjects[indexPath.row];

// 2、獲取內(nèi)容
    msgObj.body

4、發(fā)送聊天數(shù)據(jù)

#    messageWithType 消息類型 to聊天對(duì)象的JID

XMPPMessage *msg = [XMPPMessage messageWithType:@"chat" to:self.friendJid];

#    addBody 發(fā)送的內(nèi)容
[msg addBody:txt];

#    sendElement:msg 發(fā)送給服務(wù)器
[[WCXMPPTool sharedWCXMPPTool].xmppStream sendElement:msg];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,624評(píng)論 30 472
  • 前言 上一篇博客中我們說到如何通過XMPPFramework中的代理方法來獲取到好友節(jié)點(diǎn)數(shù)據(jù)信息,但是我們發(fā)現(xiàn)節(jié)點(diǎn)...
    神經(jīng)騷棟閱讀 3,675評(píng)論 6 10
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,058評(píng)論 25 709
  • 關(guān)于XMPP最權(quán)威的講解:http://www.jabbercn.org/RFC3920(這個(gè)才是最權(quán)威的,下面文...
    隨風(fēng)飄蕩的小逗逼閱讀 1,640評(píng)論 1 5
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,568評(píng)論 19 139

友情鏈接更多精彩內(nèi)容