简介:
xmppFramework是一个基于RFC-3920的实现。支持多线程和线程保护(用了GCD),同时通用于所有的ios开发设备的通信框架。
介绍:
该框架主要分为两部分----The xmpp core和The extensions (roster, XEP's,etc)
xmppcore是RFC-3920的实现。
xmppcore介绍:
这部分中包含:
XMPPStream
XMPPParser
XMPPJID
XMPPElement
XMPPIQ
XMPPMessage
XMPPPresence
XMPPModule
XMPPLogging
XMPPInternal
这些类。
xmppstream类是开发者主要打交道的类,这个中包含了连接服务器,用户跟服务器的通信。
XMPPParser这个是一个内部类。主要用于解析。
XMPPJID这个用来标记用户。其中包含用户名和域名。
XMPPElement是XMPPIQ,XMPPMessage&XMPPPresence的基类。数据返回以后的处理。主要扩展实现了NSXMLElement,因此能查询到所有xml的元素。
XMPPModule提供了可插拔的扩展。
Elements: IQ, Message, & Presence
这个是XMPPElement的扩展:
XMPPIQ -> XMPPElement -> NSXMLElement -> NSXMLNode -> NSObject
XMPPMessage -> XMPPElement -> NSXMLElement -> NSXMLNode -> NSObject
XMPPPresence -> XMPPElement -> NSXMLElement -> NSXMLNode -> NSObject
另外NSXMLElement+XMPP提供了一些策略方法,方便对这些信息进行处理,如提取消息中得某变量:[elementattributeIntValueForName:@"age"];
配置连接(以google邮件为例):
第一步:配置用户的JID:
xmppStream.myJID=[XMPPJIDjidWithString:@"user@gmail.com"];
第二步:配置需要连接的服务器:
xmppStream.hostName=@"myCompany.com";也可以是ip地址:
xmppStream.hostName=@"192.168.2.27";xmpp会设置一个默认端口。(这步要是没
有,xmpp自动 连接myjid的域名)。
添加代理:
xmpp使用的是多播代理:
添加代理:[xmppStreamaddDelegate:selfdelegateQueue:dispatch_get_main_queue()];
删除代理:[xmppStreamremoveDelegate:self];
添加模式
这个实现了插拔扩展。如连接断了以后重连模式:
xmppReconnect=[[XMPPReconnect alloc]init];
[xmppReconnect activate:xmppStream];
xmppReconnectaddDelegate:selfdelegateQueue:dispatch_get_main_queue()];
网络连接
NSError*error=nil;
if(![xmppStreamconnect:&error])
{
NSLog(@"Oops, I probably forgot something: %@",error);
}
认证
-(void)xmppStreamDidConnect:(XMPPStream*)sender
{
[xmppStreamauthenticateWithPassword:passworderror:NULL];
}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。