你看今天是(三)对吧,前面肯定有(一)和(二),在发表完iOS开发之使用XMPPFramework实现即时通信(一)和iOS开发之使用XMPPFramework实现即时通信(二)后有好多的小伙伴加我Q或者评论留言提出一些问题,比如:“楼主,在哪注册?”,“楼主,你的登录用户名和密码是多少?”之类的问题。在之前的博客中使用的账号和密码,为了方便,是用spark客户端注册的,在今天的博客中将会详细的介绍如何使用代码注册我们新用户,还有在这感谢关注我的小伙伴们,谢谢你们的支持!
好了,废话少说,说道到注册新的用户其实还是蛮简单的,之前在使用xmppframework的时候是直接连接后就直接认证。今天的博客的大体思路是让用户输入用户名和密码,我们拿着用户名取连接我们的openfire服务器(即使用户没有注册,拼接出的jid也能连接服务器)。连接完以后这不同的是去注册密码而不是去认证,注册成功后,然后再认证。
一,运行效果图展示
还是那句话,为了直观,是少不了图的,运行的部分截图如下:
二.代码展示
1.为了提示,我把AlterView进行了简单封装,便于使用,代码如下:
1//提示框2-(void)alterWithTip:(NSString *) tip3{4UIAlertView *alter = [[UIAlertView alloc] initWithTitle:@"提示"message:tipdelegate:nil cancelButtonTitle:@"OK"otherButtonTitles: nil];5[alter show];6}
2.开始今天的主题,首先在我们的Controller里获取xmppSteam. 并注册委托回调
1- (void)viewDidLoad {2[super viewDidLoad];34UIapplication*application =[UIApplication sharedApplication];5iddelegate= [applicationdelegate];6_xmppStream = [delegatexmppStream];7//在主线程中注册回调8[self.xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];9}
3.点击注册按钮,然后调取连接方法,连接方法中用到的用户名是用户自己输入的
1//用用户输入的用户名来创建连接2-(void) xmppConnect3{4NSString *userName =self.userNameTextField.text;56//创建JID7XMPPJID *jid = [XMPPJID jidWithUser:userName domain:MYDOMAIN resource:@"iPhone"];89//把Jid添加到流10[self.xmppStream setMyJID:jid];1112//连接服务器13NSError *error =nil;14[self.xmppStream connectWithTimeout:10error:&error];15if(error) {16NSLog(@"连接错误%@",[error localizedDescription]);17}18}
4.实现连接成功后回调的方法,在本方法中注册我们的用户密码,代码如下:
1//连接成功后,注册用户2-(void)xmppStreamDidConnect:(XMPPStream *)sender3{45[self alterWithTip:@"openfire服务器已连接"];67NSString *passWord=self.passwordTextField.text;89NSError *error =nil;10[self.xmppStream registerWithPassword:password error:&error];11if(error) {12NSLog(@"注册错误%@",[error localizedDescription]);13}14}
5.实现注册成功后的回调方法,注册成功后,认证密码:
1//注册成功后,认证用户密码2-(void)xmppStreamDidRegister:(XMPPStream *)sender3{4[self alterWithTip:@"用户注册成功"];56//注册成功后认证用户名和密码7NSError *error =nil;8[self.xmppStream authenticateWithPassword:self.passwordTextField.text error:&error];9if(error) {10NSLog(@"认证错误%@",[error localizedDescription]);11}12}
6.实现认证成功后的回调
1//认证成功后的回调2-(void)xmppStreamDidAuthenticate:(XMPPStream *)sender3{4[self alterWithTip:@"登陆成功"];5}
7.实现认证失败后的回调
1//认证失败的回调2-(void)xmppStream:sender didNotAuthenticate:(DDxmlElement *)error3{4[self alterWithTip:@"用户名和密码错误"];5}
三、注意问题
如果你输入的账号是已经注册过的账号,会提示注册失败。
今天的博客先到这儿,欢迎批评指正~