XMPPFramework(一)登录与注册

2018-06-13  本文已影响0人  O乞力马扎罗的雪O

登录

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{

}
上一篇下一篇

猜你喜欢

热点阅读