您的位置:首页 > 移动开发 > IOS开发

iOS 的 XMPPFramework 简介

2014-12-25 09:14 288 查看

1登录和好友上下线

1.1XMPP中常用对象们

XMPPStream:xmpp基础服务类

XMPPRoster:好友列表类

XMPPRosterCoreDataStorage:好友列表(用户账号)在core data中的操作类

XMPPvCardCoreDataStorage:好友名片(昵称,签名,性别,年龄等信息)在core data中的操作类

XMPPvCardTemp:好友名片实体类,从数据库里取出来的都是它

xmppvCardAvatarModule:好友头像

XMPPReconnect:如果失去连接,自动重连

XMPPRoom:提供多用户聊天支持

XMPPPubSub:发布订阅

1.2登录操作,也就是连接xmpp服务器

?
connect成功之后

会依次调用XMPPStreamDelegate的方法,

首先调用

- (void)xmppStream:(XMPPStream *)sender socketDidConnect:(GCDAsyncSocket *)socket

然后

- (void)xmppStreamDidConnect:(XMPPStream *)sender

在该方法下面需要使用xmppStream 的authenticateWithPassword方法进行密码验证,成功的话会响应delegate的方法,就是下面这个

- (void)xmppStreamDidAuthenticate:(XMPPStream *)sender

1.3上线

实现 - (void)xmppStreamDidAuthenticate:(XMPPStream *)sender 委托方法

?

1.4退出并断开连接

?

1.5好友状态

获取好友状态,通过实现 

?
方法

当接收到 <presence /> 标签的内容时,XMPPFramework 框架回调该方法 

一个 <presence /> 标签的格式一般如下:

?
presence 的状态:

available 上线

away 离开

do not disturb 忙碌

unavailable 下线

?

[b]2接收消息和发送消息[/b]

2.1接收消息

通过实现 

?
方法

当接收到 <message /> 标签的内容时,XMPPFramework 框架回调该方法

根据 XMPP 协议,消息体的内容存储在标签 <body /> 内

?

2.2发送消息

发送消息,我们需要根据 XMPP 协议,将数据放到 <message /> 标签内,例如:

?
?

3获取好友信息和删除好友

3.1好友列表和好友名片

?

3.2添加好友

?

3.3收到添加好友的请求

?
3.4删除好友

//删除好友,name为好友账号

?

4聊天室

    //初始化聊天室

?
 //创建聊天室成功

?
    

?
    //获取聊天室信息

?
如果房间存在,会调用委托

?
房间不存在,调用委托

?
离开房间

?
XMPPRoomDelegate的其他代理方法

    //离开聊天室

?
    //新人加入群聊

?
    //有人退出群聊

?
    //有人在群里发言

?

5消息回执

这个是XEP-0184协议的内容

协议内容:

发送消息时附加回执请求

?
代码实现

?
收到回执请求的消息,发送回执

?
代码实现

?

6添加AutoPing

为了监听服务器是否有效,增加心跳监听。用XEP-0199协议,在XMPPFrameWork框架下,封装了 XMPPAutoPing 和 XMPPPing两个类都可以使用,因为XMPPAutoPing已经组合进了XMPPPing类,所以XMPPAutoPing使用起来更方便。

?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息