关闭

XMPP学习记录三:关于连接服务器

1034人阅读 评论(0) 收藏 举报
分类:

XMPP中常用对象们:

XMPPStreamxmpp基础服务类

XMPPRoster好友列表类

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

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

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

xmppvCardAvatarModule好友头像

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

XMPPRoom提供多用户聊天支持

XMPPPubSub发布订阅


第一步 生成xmppstream对象 并且设置委托

  1.    
  2. -(void)setupStream{    
  3.         
  4.     //初始化XMPPStream    
  5.     xmppStream = [[XMPPStream alloc] init];    
  6.     [xmppStream addDelegate:self delegateQueue:dispatch_get_current_queue()];    
  7.         
  8. }  


第二步 设置登陆帐户名字与服务器名字,并连接

  1. -(BOOL)connect{    
  2.         
  3.     [self setupStream];    
  4.         
  5.     //从本地取得用户名,密码和服务器地址    
  6.     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];    
  7.         
  8.     NSString *userId = [defaults stringForKey:USERID];    
  9.     NSString *pass = [defaults stringForKey:PASS];    
  10.     NSString *server = [defaults stringForKey:SERVER];    
  11.         
  12.     if (![xmppStream isDisconnected]) {    
  13.         return YES;    
  14.     }    
  15.         
  16.     if (userId == nil || pass == nil) {    
  17.         return NO;    
  18.     }    
  19.         
  20.     //设置用户    
  21.     [xmppStream setMyJID:[XMPPJID jidWithString:userId]];    
  22.     //设置服务器    
  23.     [xmppStream setHostName:server];    
  24.     //密码    
  25.     password = pass;    
  26.         
  27.     //连接服务器    
  28.     NSError *error = nil;    
  29.     if (![xmppStream connect:&error]) {    
  30.         NSLog(@"cant connect %@", server);    
  31.         return NO;    
  32.     }    
  33.         
  34.     return YES;    
  35.     
  36. }    

连接服务器

  1. //启动连接操作后,回调函数(委托函数)  
  2.   
  3. - (void)xmppStreamWillConnect:(XMPPStream *)sender将被调用,表示将要连接  
  4.   
  5. - (void)xmppStreamDidConnect:(XMPPStream *)sender//登陆服务器成功  
  6.   
  7. {  
  8.   
  9.     NSError *error = nil;  
  10.   
  11.     //验证帐户密码  
  12.   
  13.     NSString *password = @"test1";  
  14.   
  15.     BOOL bRes =  [_xmppStream authenticateWithPassword:password error:&error];  
  16.   
  17. }  


验证账号
  1. //验证成功的回调函数  
  2.   
  3. - (void)xmppStreamDidAuthenticate:(XMPPStream *)sender  
  4.   
  5. {  
  6.   
  7.     XMPPPresence *presence = [XMPPPresencepresence];  
  8.     //可以加上上线状态,比如忙碌,在线等  
  9.     [[selfxmppStream] sendElement:presence];//发送上线通知  
  10.   
  11. }  
  12.   
  13. //验证失败的回调  
  14.   
  15. - (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(NSXMLElement *)error  
0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:208436次
    • 积分:3786
    • 等级:
    • 排名:第8413名
    • 原创:171篇
    • 转载:14篇
    • 译文:1篇
    • 评论:33条
    文章分类
    最新评论