XMPPFrameWork IOS 开发(三)登录
2016-06-08 11:56
465 查看
XMPP中常用对象们:
XMPPStream:xmpp基础服务类
XMPPRoster:好友列表类
XMPPRosterCoreDataStorage:好友列表(用户账号)在core data中的操作类
XMPPvCardCoreDataStorage:好友名片(昵称,签名,性别,年龄等信息)在core data中的操作类
XMPPvCardTemp:好友名片实体类,从数据库里取出来的都是它
xmppvCardAvatarModule:好友头像
XMPPReconnect:如果失去连接,自动重连
XMPPRoom:提供多用户聊天支持
XMPPPubSub:发布订阅
第一步 生成xmppstream对象 并且设置委托
[cpp] view
plain copy
print?
-(void)setupStream{
//初始化XMPPStream
xmppStream = [[XMPPStream alloc] init];
[xmppStream addDelegate:self delegateQueue:dispatch_get_current_queue()];
}
第二步 设置登陆帐户名字与服务器名字,并连接
[cpp] view
plain copy
print?
-(BOOL)connect{
[self setupStream];
//从本地取得用户名,密码和服务器地址
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *userId = [defaults stringForKey:USERID];
NSString *pass = [defaults stringForKey:PASS];
NSString *server = [defaults stringForKey:SERVER];
if (![xmppStream isDisconnected]) {
return YES;
}
if (userId == nil || pass == nil) {
return NO;
}
//设置用户
[xmppStream setMyJID:[XMPPJID jidWithString:userId]];
//设置服务器
[xmppStream setHostName:server];
//密码
password = pass;
//连接服务器
NSError *error = nil;
if (![xmppStream connect:&error]) {
NSLog(@"cant connect %@", server);
return NO;
}
return YES;
}
连接服务器
[cpp] view
plain copy
print?
//启动连接操作后,回调函数(委托函数)
- (void)xmppStreamWillConnect:(XMPPStream *)sender将被调用,表示将要连接
- (void)xmppStreamDidConnect:(XMPPStream *)sender//登陆服务器成功
{
NSError *error = nil;
//验证帐户密码
NSString *password = @"test1";
BOOL bRes = [_xmppStream authenticateWithPassword:password error:&error];
}
验证账号
[cpp] view
plain copy
print?
//验证成功的回调函数
- (void)xmppStreamDidAuthenticate:(XMPPStream *)sender
{
XMPPPresence *presence = [XMPPPresencepresence];
//可以加上上线状态,比如忙碌,在线等
[[selfxmppStream] sendElement:presence];//发送上线通知
}
//验证失败的回调
- (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(NSXMLElement *)error
XMPPStream:xmpp基础服务类
XMPPRoster:好友列表类
XMPPRosterCoreDataStorage:好友列表(用户账号)在core data中的操作类
XMPPvCardCoreDataStorage:好友名片(昵称,签名,性别,年龄等信息)在core data中的操作类
XMPPvCardTemp:好友名片实体类,从数据库里取出来的都是它
xmppvCardAvatarModule:好友头像
XMPPReconnect:如果失去连接,自动重连
XMPPRoom:提供多用户聊天支持
XMPPPubSub:发布订阅
第一步 生成xmppstream对象 并且设置委托
[cpp] view
plain copy
print?
-(void)setupStream{
//初始化XMPPStream
xmppStream = [[XMPPStream alloc] init];
[xmppStream addDelegate:self delegateQueue:dispatch_get_current_queue()];
}
第二步 设置登陆帐户名字与服务器名字,并连接
[cpp] view
plain copy
print?
-(BOOL)connect{
[self setupStream];
//从本地取得用户名,密码和服务器地址
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *userId = [defaults stringForKey:USERID];
NSString *pass = [defaults stringForKey:PASS];
NSString *server = [defaults stringForKey:SERVER];
if (![xmppStream isDisconnected]) {
return YES;
}
if (userId == nil || pass == nil) {
return NO;
}
//设置用户
[xmppStream setMyJID:[XMPPJID jidWithString:userId]];
//设置服务器
[xmppStream setHostName:server];
//密码
password = pass;
//连接服务器
NSError *error = nil;
if (![xmppStream connect:&error]) {
NSLog(@"cant connect %@", server);
return NO;
}
return YES;
}
连接服务器
[cpp] view
plain copy
print?
//启动连接操作后,回调函数(委托函数)
- (void)xmppStreamWillConnect:(XMPPStream *)sender将被调用,表示将要连接
- (void)xmppStreamDidConnect:(XMPPStream *)sender//登陆服务器成功
{
NSError *error = nil;
//验证帐户密码
NSString *password = @"test1";
BOOL bRes = [_xmppStream authenticateWithPassword:password error:&error];
}
验证账号
[cpp] view
plain copy
print?
//验证成功的回调函数
- (void)xmppStreamDidAuthenticate:(XMPPStream *)sender
{
XMPPPresence *presence = [XMPPPresencepresence];
//可以加上上线状态,比如忙碌,在线等
[[selfxmppStream] sendElement:presence];//发送上线通知
}
//验证失败的回调
- (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(NSXMLElement *)error
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- Android Native 绘图方法
- Python动态类型的学习---引用的理解
- 数据库链接字符串查询网站
- [原创]java局域网聊天系统
- DB2实例管理
- DB2实例管理
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- 第三章 数据库备份和还原
- 创建一个空的IBM DB2 ECO数据库的方法
- 土人系列AS入门教程 -- 对象篇
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- CentOS下DB2数据库安装过程详解
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页
- C#托管堆对象实例包含内容分析
- sql2008 还原数据库解决方案