zoukankan      html  css  js  c++  java
  • iOS开发之使用XMPPFramework实现即时通信(三)

      你看今天是(三)对吧,前面肯定有(一)和(二),在发表完iOS开发之使用XMPPFramework实现即时通信(一)iOS开发之使用XMPPFramework实现即时通信(二)后有好多的小伙伴加我Q或者评论留言提出一些问题,比如:“楼主,在哪注册?”,“楼主,你的登录用户名和密码是多少?”之类的问题。在之前的博客中使用的账号和密码,为了方便,是用spark客户端注册的,在今天的博客中将会详细的介绍如何使用代码注册我们新用户,还有在这感谢关注我的小伙伴们,谢谢你们的支持!

      好了,废话少说,说道到注册新的用户其实还是蛮简单的,之前在使用xmppframework的时候是直接连接后就直接认证。今天的博客的大体思路是让用户输入用户名和密码,我们拿着用户名取连接我们的openfire服务器(即使用户没有注册,拼接出的jid也能连接服务器)。连接完以后这不同的是去注册密码而不是去认证,注册成功后,然后再认证。

      一,运行效果图展示

        还是那句话,为了直观,是少不了图的,运行的部分截图如下:

      二.代码展示

        1.为了提示,我把AlterView进行了简单封装,便于使用,代码如下:

    1 //提示框
    2 -(void)alterWithTip:(NSString *) tip
    3 {
    4     UIAlertView *alter = [[UIAlertView alloc] initWithTitle:@"提示" message:tip delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
    5     [alter show];
    6 }

        2.开始今天的主题,首先在我们的Controller里获取xmppSteam. 并注册委托回调

    1 - (void)viewDidLoad {
    2     [super viewDidLoad];
    3 
    4     UIApplication *application = [UIApplication sharedApplication];
    5     id delegate = [application delegate];
    6     _xmppStream = [delegate xmppStream];
    7     //在主线程中注册回调
    8     [self.xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];
    9 }

        3.点击注册按钮,然后调取连接方法,连接方法中用到的用户名是用户自己输入的

     1 //用用户输入的用户名来创建连接
     2 -(void) xmppConnect
     3 {
     4     NSString *userName = self.userNameTextField.text;
     5     
     6     //创建JID
     7     XMPPJID *jid = [XMPPJID jidWithUser:userName domain:MYDOMAIN resource:@"iPhone"];
     8     
     9     //把Jid添加到流
    10     [self.xmppStream setMyJID:jid];
    11     
    12     //连接服务器
    13     NSError *error = nil;
    14     [self.xmppStream connectWithTimeout:10 error:&error];
    15     if (error) {
    16         NSLog(@"连接错误%@",[error localizedDescription]);
    17     }
    18 }

        4.实现连接成功后回调的方法,在本方法中注册我们的用户密码,代码如下:

     1 //连接成功后,注册用户
     2 -(void)xmppStreamDidConnect:(XMPPStream *)sender
     3 {
     4     
     5     [self alterWithTip:@"openfire服务器已连接"];
     6     
     7     NSString *password = self.passwordTextField.text;
     8     
     9     NSError *error = nil;
    10     [self.xmppStream registerWithPassword:password error:&error];
    11     if (error) {
    12         NSLog(@"注册错误%@",[error localizedDescription]);
    13     }
    14 }

        5.实现注册成功后的回调方法,注册成功后,认证密码:

     1 //注册成功后,认证用户密码
     2 -(void)xmppStreamDidRegister:(XMPPStream *)sender
     3 {
     4     [self alterWithTip:@"用户注册成功"];
     5     
     6     //注册成功后认证用户名和密码
     7     NSError *error = nil;
     8     [self.xmppStream authenticateWithPassword:self.passwordTextField.text error:&error];
     9     if (error) {
    10         NSLog(@"认证错误%@",[error localizedDescription]);
    11     }
    12 }

        6.实现认证成功后的回调

    1 //认证成功后的回调
    2 -(void)xmppStreamDidAuthenticate:(XMPPStream *)sender
    3 {
    4     [self alterWithTip:@"登陆成功"];
    5 }

        7.实现认证失败后的回调

    1 //认证失败的回调
    2 -(void)xmppStream:sender didNotAuthenticate:(DDXMLElement *)error
    3 {
    4     [self alterWithTip:@"用户名和密码错误"];
    5 }

      三、注意问题

        如果你输入的账号是已经注册过的账号,会提示注册失败。

      今天的博客先到这儿,欢迎批评指正~

  • 相关阅读:
    Step by step Dynamics CRM 2013安装
    SQL Server 2012 Managed Service Account
    Step by step SQL Server 2012的安装
    Step by step 活动目录中添加一个子域
    Step by step 如何创建一个新森林
    向活动目录中添加一个子域
    活动目录的信任关系
    RAID 概述
    DNS 正向查找与反向查找
    Microsoft Dynamics CRM 2013 and 2011 Update Rollups and Service Packs
  • 原文地址:https://www.cnblogs.com/ludashi/p/4045177.html
Copyright © 2011-2022 走看看