美文网首页
XMPPFramework(一)登录与注册

XMPPFramework(一)登录与注册

作者: O乞力马扎罗的雪O | 来源:发表于2018-06-13 15:25 被阅读0次

    登录

    image

    登录流程分三个步骤:

    1.配置服务器信息

    2.连接服务器

    3.验证密码(注册时,这一步就是开始注册,全面都一样)

    代码

    • 配置服务器信息
    
            self.stream = [[XMPPStream alloc] init];
            //openfire服务器地址
            self.stream.hostName = KHostName;
            //openfire端口号
            self.stream.hostPort = KHostPort;
            //为xmppSream添加代理
            [self.stream addDelegate:self delegateQueue:dispatch_get_main_queue()];
    
    
    • 连接服务器
    
    /*
    (完整的Jid包括 Username@Domain/resource
     Username:用户名,Domain登陆的XMPP服务器域名(这个最好设置一下,后面做群组的时候要用到)。
    Resource:资源/来源,用于区别客户端来源.
    xmpp协议设计为可多客户端同时登陆,resource就是用于区分同一用户不同端登陆。)
    */
    
    //配置用户信息
        self.stream.myJID =  [XMPP JIDjidWithUser:userName domain:KDomin resource:kResource];
    
     //若有连接,先断开,然后重新建立链接
        if ([self.stream isConnected] || [self.stream isConnecting]) {
            //断开
            NSLog(@"断开");
            [self offline];
        }
        NSError*error =nil;
        [self.stream connectWithTimeout:30.0f error:&error];  //请求三十秒
        if (error !=nil) {
            NSLog(@"请求失败 %s | error = %@", __FUNCTION__, error);
        }
    
    
    • 验证密码
    
    //连接服务器成功
    
    - (void)xmppStreamDidConnect:(XMPPStream*)sender{
    
        NSLog(@"连接成功");
    
        //验证密码
    
        [senderauthenticateWithPassword:self.loginPassword error:nil];
    
    }
    
    #### 其它代码
    
    #pragma mark --上线
    
    - (void)online
    
    {
    
        //发送上线状态
    
        XMPPPresence *presence = [XMPPPresence presenceWithType:@"available"];
    
        [self.streamsendElement:presence];
    
    }
    
    #pragma mark --下线
    
    - (void)offline
    
    {
    
        //发送下线状态
    
        XMPPPresence *presence = [XMPPPresence presenceWithType:@"unavailable"];
    
        [self.streamsendElement:presence];
    
        [self.stream disconnect];
    
    }
    
    

    xmppStreamDelegate

    
    //连接服务器成功
    
    - (void)xmppStreamDidConnect:(XMPPStream*)sender{
    
        //在这里发送密码验证
    
        [senderauthenticateWithPassword:self.loginPassword error:nil];
    
        //或者注册
    
        [senderregisterWithPassword:@"123456" error:&error];
    
    }
    
    //连接服务器超时
    
    - (void)xmppStreamConnectDidTimeout:(XMPPStream*)sender{
    
    }
    
    //验证密码成功
    
    - (void)xmppStreamDidAuthenticate:(XMPPStream*)sender{
    
        //在这里发送一个上线状态
    
        [self online];
    
    }
    
    //验证密码失败
    
    - (void)xmppStream:(XMPPStream*)sender didNotAuthenticate:(DDXMLElement*)error{
    
    }
    
    //注册成功
    
    -(void)xmppStreamDidRegister:(XMPPStream*)sender{
    
    }
    
    //注册失败
    
    -(void)xmppStream:(XMPPStream*)sender didNotRegister:(DDXMLElement*)error{
    
    }
    
    //断开连接
    
    - (void)xmppStreamDidDisconnect:(XMPPStream*)sender withError:(NSError*)error{
    
    }
    

    相关文章

      网友评论

          本文标题:XMPPFramework(一)登录与注册

          本文链接:https://www.haomeiwen.com/subject/imbjeftx.html