XMPPFrameWork IOS 开发(三)登录

来源:互联网 发布:飞控算法程序自学 编辑:程序博客网 时间:2024/05/16 08:33

原始地址:XMPPFrameWork IOS 开发(三)

XMPP中常用对象们:

XMPPStreamxmpp基础服务类

XMPPRoster好友列表类

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

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

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

xmppvCardAvatarModule好友头像

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

XMPPRoom提供多用户聊天支持

XMPPPubSub发布订阅


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

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


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

[cpp] view plaincopyprint?
  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. }    

连接服务器

[cpp] view plaincopyprint?
  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. }  


验证账号
[cpp] view plaincopyprint?
  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
原创粉丝点击