XAPP的使用
2016-02-25 20:52
330 查看
1.XMPP和XAMPP区别
XMPP是一个协议,有四个特点:点对点 及时性 协议 基于XML数据结构
XAMPP(集成软件,开源框架组成,具有很好的自定义和扩展性)
X (Linux+Window +MacOSX)
Apache
Mysql
Php(脚本语言)
Perl(脚本语言)
XMPP的管理类的使用
1.环境的配置
第一步:引入libresolv.tbd和libxml2.tbd系统类库,一般只要是xml的数据结构,就需要引入这两个,同时需要配置 Header Search Paths 为 /usr/include/libxml2
第二步:在XMPP的第三方引入库的Core文件夹下的XMPP.h文件中引入 #import <UIKit/UIKit.h>
第三步:将最后错误处的代码注释掉,因为这处的代码是重复定义的
2.管理类的创建
.h文件
#import <Foundation/Foundation.h>
#import "XMPPFramework.h"
@interface XMPPManager : NSObject
@property (nonatomic,strong)XMPPStream *xmppStream;
+(instancetype)shareInstance;
-(void)registerWithUserName:(NSString *)name
passWord:(NSString *)passWord;
-(void)loginWithUserName:(NSString *)name
passWord:(NSString *)passWord;
@end
.m文件
#import "XMPPManager.h"
typedef enum : NSUInteger {
ConnectPurposeRegister,
ConnectPurposeLogin,
} ConnectPurpose;
@interface XMPPManager ()<XMPPStreamDelegate>
@property (nonatomic,strong)NSString *registerPassWord;
@property (nonatomic,strong)NSString *loginPassWord;
@property (nonatomic)ConnectPurpose connectPurpose;
@end
static XMPPManager *manager = nil;
@implementation XMPPManager
+(instancetype)shareInstance{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
manager = [XMPPManager new];
});
return manager;
}
-(instancetype)init{
self = [super init];
if (self) {
_xmppStream = [[XMPPStream alloc] init];
_xmppStream.hostName = kHostName;
_xmppStream.hostPort = kHostPort;
[_xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];
}
return self;
}
-(void)connectServer{
if ([self.xmppStream isConnected]) {
[self.xmppStream disconnect];
}
NSError *error = nil;
[self.xmppStream connectWithTimeout:20.f error:&error];
NSLog(@"%@",error);
}
-(void)registerWithUserName:(NSString *)name
passWord:(NSString *)passWord{
self.registerPassWord = passWord;
self.connectPurpose = ConnectPurposeRegister;
XMPPJID *jid =[XMPPJID jidWithUser:name domain:kDomin resource:kResource];
self.xmppStream.myJID= jid;
[self connectServer];
}
-(void)loginWithUserName:(NSString *)name
passWord:(NSString *)passWord{
self.loginPassWord = passWord;
self.connectPurpose = ConnectPurposeLogin;
XMPPJID *jid =[XMPPJID jidWithUser:name domain:kDomin resource:kResource];
self.xmppStream.myJID= jid;
[self connectServer];
}
-(void)xmppStreamDidConnect:(XMPPStream *)sender{
if (self.connectPurpose==ConnectPurposeRegister) {
NSError *error = nil;
[self.xmppStream registerWithPassword:self.registerPassWord error:&error];
}
if (self.connectPurpose==ConnectPurposeLogin) {
NSError *error = nil;
[self.xmppStream authenticateWithPassword:self.loginPassWord error:&error];
}
}
-(void)xmppStreamDidAuthenticate:(XMPPStream *)sender{
XMPPPresence *presence = [XMPPPresence presenceWithType:@"available"];
[self.xmppStream sendElement:presence];
}
@end
注意:以下是各个代理的方法
#pragma mark XMPPStreamDelegate
#pragma mark 连接成功
-(void)xmppStreamDidConnect:(XMPPStream *)sender{
}
#pragma mark 连接超时
-(void)xmppStreamConnectDidTimeout:(XMPPStream *)sender{
}
#pragma mark 连接丢失
-(void)xmppStreamDidDisconnect:(XMPPStream *)sender withError:(NSError *)error{
}
#pragma mark 注册成功
-(void)xmppStreamDidRegister:(XMPPStream *)sender{
}
#pragma mark 注册失败
-(void)xmppStream:(XMPPStream *)sender didNotRegister:(DDXMLElement *)error{
}
#pragma mark 验证成功
-(void)xmppStreamDidAuthenticate:(XMPPStream *)sender{
}
#pragma mark 验证失败
-(void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(DDXMLElement *)error{
}
XMPP是一个协议,有四个特点:点对点 及时性 协议 基于XML数据结构
XAMPP(集成软件,开源框架组成,具有很好的自定义和扩展性)
X (Linux+Window +MacOSX)
Apache
Mysql
Php(脚本语言)
Perl(脚本语言)
XMPP的管理类的使用
1.环境的配置
第一步:引入libresolv.tbd和libxml2.tbd系统类库,一般只要是xml的数据结构,就需要引入这两个,同时需要配置 Header Search Paths 为 /usr/include/libxml2
第二步:在XMPP的第三方引入库的Core文件夹下的XMPP.h文件中引入 #import <UIKit/UIKit.h>
第三步:将最后错误处的代码注释掉,因为这处的代码是重复定义的
2.管理类的创建
.h文件
#import <Foundation/Foundation.h>
#import "XMPPFramework.h"
@interface XMPPManager : NSObject
@property (nonatomic,strong)XMPPStream *xmppStream;
+(instancetype)shareInstance;
-(void)registerWithUserName:(NSString *)name
passWord:(NSString *)passWord;
-(void)loginWithUserName:(NSString *)name
passWord:(NSString *)passWord;
@end
.m文件
#import "XMPPManager.h"
typedef enum : NSUInteger {
ConnectPurposeRegister,
ConnectPurposeLogin,
} ConnectPurpose;
@interface XMPPManager ()<XMPPStreamDelegate>
@property (nonatomic,strong)NSString *registerPassWord;
@property (nonatomic,strong)NSString *loginPassWord;
@property (nonatomic)ConnectPurpose connectPurpose;
@end
static XMPPManager *manager = nil;
@implementation XMPPManager
+(instancetype)shareInstance{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
manager = [XMPPManager new];
});
return manager;
}
-(instancetype)init{
self = [super init];
if (self) {
_xmppStream = [[XMPPStream alloc] init];
_xmppStream.hostName = kHostName;
_xmppStream.hostPort = kHostPort;
[_xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];
}
return self;
}
-(void)connectServer{
if ([self.xmppStream isConnected]) {
[self.xmppStream disconnect];
}
NSError *error = nil;
[self.xmppStream connectWithTimeout:20.f error:&error];
NSLog(@"%@",error);
}
-(void)registerWithUserName:(NSString *)name
passWord:(NSString *)passWord{
self.registerPassWord = passWord;
self.connectPurpose = ConnectPurposeRegister;
XMPPJID *jid =[XMPPJID jidWithUser:name domain:kDomin resource:kResource];
self.xmppStream.myJID= jid;
[self connectServer];
}
-(void)loginWithUserName:(NSString *)name
passWord:(NSString *)passWord{
self.loginPassWord = passWord;
self.connectPurpose = ConnectPurposeLogin;
XMPPJID *jid =[XMPPJID jidWithUser:name domain:kDomin resource:kResource];
self.xmppStream.myJID= jid;
[self connectServer];
}
-(void)xmppStreamDidConnect:(XMPPStream *)sender{
if (self.connectPurpose==ConnectPurposeRegister) {
NSError *error = nil;
[self.xmppStream registerWithPassword:self.registerPassWord error:&error];
}
if (self.connectPurpose==ConnectPurposeLogin) {
NSError *error = nil;
[self.xmppStream authenticateWithPassword:self.loginPassWord error:&error];
}
}
-(void)xmppStreamDidAuthenticate:(XMPPStream *)sender{
XMPPPresence *presence = [XMPPPresence presenceWithType:@"available"];
[self.xmppStream sendElement:presence];
}
@end
注意:以下是各个代理的方法
#pragma mark XMPPStreamDelegate
#pragma mark 连接成功
-(void)xmppStreamDidConnect:(XMPPStream *)sender{
}
#pragma mark 连接超时
-(void)xmppStreamConnectDidTimeout:(XMPPStream *)sender{
}
#pragma mark 连接丢失
-(void)xmppStreamDidDisconnect:(XMPPStream *)sender withError:(NSError *)error{
}
#pragma mark 注册成功
-(void)xmppStreamDidRegister:(XMPPStream *)sender{
}
#pragma mark 注册失败
-(void)xmppStream:(XMPPStream *)sender didNotRegister:(DDXMLElement *)error{
}
#pragma mark 验证成功
-(void)xmppStreamDidAuthenticate:(XMPPStream *)sender{
}
#pragma mark 验证失败
-(void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(DDXMLElement *)error{
}
相关文章推荐
- android中MVP的理解和实例
- iOS XMPP开发环境的初步搭建
- IOS-APP主流UI框架结构
- Js中apply()的用法
- cocos2dx给DrawNode的shader传递Texture2D
- 【Android】自定义View —— 数字加减
- Android项目编码的批量修改(GBK转UTF-8)
- [造轮子]Android动态加载框架总结
- ios调用dismissViewController的一个小陷阱
- Android Studio 第一次提交代码到Git上
- IOS-上架APP之启动页设置(新手必看!)
- iOS基础动画教程
- 项目记录23--unity-tolua框架MediatorManager
- IOS-上架APP之启动页设置(新手必看!)
- Android Studio 安装教程
- 微信浏览器禁止页面下拉查看网址
- cocos2dx实现经典飞机大战
- APP的缓存文件到底应该存在哪?看完这篇文章你应该就自己清楚了
- 程序人生 - 开源库
- 【转】Android自定义Adapter的ListView的思路及代码