(九)XMPP聊天模块

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

这个模块是用到什么类? message吗? 但是好像在XMPPFramework.h中并不能找到我们想要的类

经验所结:所有的模块最少都有一个模块类和数据存储类
因为在 XMPPFramework.h 中并没有我们想要的
所以我们只能自己添加到XMPPFramework.h文件中

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

类方法属性介绍:


楼上讲了他的属性和基本的介绍,我这里讲一下怎么去使用:

电子名片的模块内部是怎么实现的
》发送请求从服务器获取 电子名片数据(用户的个人信息)数据
》接收到服务器返回的 电子名片 数据后,把数据缓存到本地数据库


在Extensions中有XEP-0054扩展,提供了一种可以通过XMPP发送电子名片的机制。

讲了 这个模块的来处(XEP-0054)和 这个模块的基本流程现在开始讲怎么去使用它


1、激活模块

//创建模块
_msgArchivingStorage = [[XMPPMessageArchivingCoreDataStorage alloc] init];
_msgArchiving = [[XMPPMessageArchiving alloc] initWithMessageArchivingStorage:_msgArchivingStorage];
//激活
[_msgArchiving activate:_xmppStream];

2、获取模块信息

#1.获取上下文2.添加条件3.执行请求获取数据  同与花名册这里有些就不做多的介绍了

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

// 2.查询请求
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"XMPPMessageArchiving_Message_CoreDataObject"];

// 过滤 (当前登录用户 并且 好友的聊天消息)
NSString *loginUserJid = [WCXMPPTool sharedWCXMPPTool].xmppStream.myJID.bare;
WCLog(@"%@",loginUserJid);
NSPredicate *pre = [NSPredicate predicateWithFormat:@"streamBareJidStr = %@ AND bareJidStr = %@",loginUserJid,self.friendJid.bare];
request.predicate = pre;

// 设置时间排序
NSSortDescriptor *timeSort = [NSSortDescriptor sortDescriptorWithKey:@"timestamp" ascending:YES];
request.sortDescriptors = @[timeSort];

// 3.执行请求  NSFetchedResultsController
_resultContr = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:msgContext sectionNameKeyPath:nil cacheName:nil];
_resultContr.delegate = self;
NSError *err = nil;
[_resultContr performFetch:&err];

3、获取聊天数据

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

// 2、获取内容
    msgObj.body

4、发送聊天数据

#    messageWithType 消息类型 to聊天对象的JID

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

#    addBody 发送的内容
[msg addBody:txt];

#    sendElement:msg 发送给服务器
[[WCXMPPTool sharedWCXMPPTool].xmppStream sendElement:msg];

你可能感兴趣的:((九)XMPP聊天模块)