iOS学习之XMPP登录与注销
2015-08-31 19:14
495 查看
坚持 成长 每日一篇
1.初始化XMPPStream
2.创建一个XMPPJID对象,并连接服务器(这里只是链接并没有登录)如果链接成功会回调-(void)xmppStreamDidConnect:(XMPPStream *)sender的代理方法;
3.连接到服务成功后,再发送密码授权,告诉服务器开始登录
sendPwdToHost在-(void)xmppStreamDidConnect:(XMPPStream *)sender回调函数里调用
授权成功回调-(void)xmppStreamDidAuthenticate:(XMPPStream *)sender函数
授权失败回调-(void)xmppStream:(XMPPStream )sender didNotAuthenticate:(DDXMLElement )error函数
4.授权成功后,发送”在线” 消息,告诉服务器刷新用户在线状态
XMPP的登陆
使用xmpp实现登陆的步骤如下1.初始化XMPPStream
-(void)setupXMPPStream{ _xmppStream = [[XMPPStream alloc] init]; //设置代理 [_xmppStream addDelegate:self delegateQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)]; }
2.创建一个XMPPJID对象,并连接服务器(这里只是链接并没有登录)如果链接成功会回调-(void)xmppStreamDidConnect:(XMPPStream *)sender的代理方法;
-(void)connectToHost{ NSLog(@"开始连接到服务器"); if (!_xmppStream) { [self setupXMPPStream]; } // 设置将要登录用户的JID //resource 标识用户登录的客户端是什么类型的如 iphone android,domain可以传nil则使用服务器域名 XMPPJID *myJID = [XMPPJID jidWithUser:@"wangwu" domain:@"teacher.local" resource:@"iphone" ]; _xmppStream.myJID = myJID; // 设置服务器域名 _xmppStream.hostName = @"teacher.local";//不仅可以是域名,还可是IP地址 // 设置端口 如果服务器端口是5222,可以省略 _xmppStream.hostPort = 5222; // 连接 NSError *err = nil; if(![_xmppStream connectWithTimeout:XMPPStreamTimeoutNone error:&err]){ NSLog(@"%@",err); } }
3.连接到服务成功后,再发送密码授权,告诉服务器开始登录
-(void)sendPwdToHost{ NSLog(@"送密码授权"); NSError *err = nil; [_xmppStream authenticateWithPassword:@"123456" error:&err]; if (err) { NSLog(@"%@",err); } }
sendPwdToHost在-(void)xmppStreamDidConnect:(XMPPStream *)sender回调函数里调用
-(void)xmppStreamDidConnect:(XMPPStream *)sender{ NSLog(@"与主机连接成功"); // 主机连接成功后,发送密码进行授权 [self sendPwdToHost]; }
授权成功回调-(void)xmppStreamDidAuthenticate:(XMPPStream *)sender函数
授权失败回调-(void)xmppStream:(XMPPStream )sender didNotAuthenticate:(DDXMLElement )error函数
4.授权成功后,发送”在线” 消息,告诉服务器刷新用户在线状态
-(void)xmppStreamDidAuthenticate:(XMPPStream *)sender{ NSLog(@"授权成功"); //想服务器发送登录消息 [self sendOnlineToHost]; }
-(void)sendOnlineToHost{ NSLog(@"发送 在线 消息"); XMPPPresence *presence = [XMPPPresence presence]; NSLog(@"%@",presence); [_xmppStream sendElement:presence]; }
XMPP用户注销
用户注销步骤相对简单只需发送离线消息并断开连接,方便下一个用户登录-(void)sendOffLineToHost{ // 1." 发送 "离线" 消息",不设置type的默认是available XMPPPresence *offline = [XMPPPresence presenceWithType:@"unavailable"]; [_xmppStream sendElement:offline]; // 2. 与服务器断开连接 [_xmppStream disconnect]; }
相关文章推荐
- iOS极光推送
- IOS开发Block代码块基本语法使用-从基础到高级
- iOS保存model数据(自定义Model 可以存放到本地)
- iOS7 CookBook精彩瞬间(二)NSSet、通过Subscript访问类成员等
- iOS7 CookBook精彩瞬间(二)NSSet、通过Subscript访问类成员等
- JS判断客户端是否是iOS或者Android
- IOS 点击空白处隐藏键盘的几种方法
- iOS OC与js的交互
- IOS第16天(1,Quartz2D基本图像绘制)
- iOS开发 - 使用相册、照相机和录像
- iOS Ad-Hoc测试发布版本应用
- ios多线程 GCD使用
- iOS 官方文档翻译地址已经迁移到github上了
- 使用正则提取url(iOS)
- iOS开发日记12-广告轮播collectionView
- iOS navigationBar背景透明
- IOS学习笔记 ---- 15/08/31
- iOS —— MagicalRecord的使用
- 转-iOS开发系列--地图与定位
- iOS开发-归档与数据恢复