您的位置:首页 > 移动开发 > IOS开发

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  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息