“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];