美文网首页xmpp
(九)XMPP聊天模块

(九)XMPP聊天模块

作者: AlexLi_ | 来源:发表于2016-06-02 22:34 被阅读259次

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聊天模块

    “http://www.bkjia.com/IOSjc/965137.html” 这个模块是用到什么类? mes...

  • iOS 开发工程师必备技能图谱

    其中个人对图谱中补充的部分: 查找,并解决内存泄露 能自定义控件开发 IM聊天模块(XMPP) 自定义控件开发 苹...

  • XMPP - 多人聊天

    MUC 简述 其实想了解一个框架最好的方法就是去阅读官方文档,下面会分别给出中英文档的连接。(当然如果你没兴趣看文...

  • Smack踩坑:ResolutionUnsuccessfulEx

    最近又在搞XMPP聊天模块,遇到了一个关于openfire服务器地址配置的坑,写篇笔记记录下来。在Android客...

  • XMPP - 简单通讯

    这一章节会从基础模块开始逐步实现私聊功能 XMPP 基础模块 基础模块 1、 XMPPJID : 身份模块,在 X...

  • XMPP即时聊天步骤

    一.登录注册 1.创建单例(XMPPManager) 2.配置通讯管道 3.构造XMPPJID 4.连接服务器 5...

  • iOS—XMPP登录、聊天

    通常的做法是我们会新建一个专门针对 xmpp 库的管理类,来处理所有的关于 xmpp 类的调用,这也是对封装的一点...

  • XMPP即时聊天(一)

    �要实现XMPP�协议即时聊天,总共分两步走:1.搭建消息服务器环境;2.客户端连接消息服务器。下面我们围绕这两个...

  • (八)XMPP花名册模块

    模块类的介绍 :http://www.henishuo.com/ios-xmpp-roster/ 楼上讲了他的属性...

  • MQTT vs. XMPP

    XMPP 是老牌的即时聊天协议,像 Google Hangouts, WhatsApp Messenger 等即时...

网友评论

    本文标题:(九)XMPP聊天模块

    本文链接:https://www.haomeiwen.com/subject/brykdttx.html