登录
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{
}
网友评论