关闭

XMPPFramework iOS开发(四)注册登录

标签: ios注册登录
439人阅读 评论(0) 收藏 举报
分类:

XMPPFramework iOS开发(四)注册登录

一、程序目标

新建Login.storyboard,并把项目的Main Interface设置为Login。

注册登录界面

帐号密码运行前就写好是为了方便调试,登录成功后跳转到Main.storyboard。如果之前就已经登录成功,则下次程序运行时不需要登录就直接跳转到Main.storyboard。

二、用户登录

2.1 点击登录按钮

- (IBAction)loginBtnClick {

    if (self.accountField.text.length == 0 || self.pwdField.text.length ==0) {
        ZHLog(@"请输入用户名和密码");

        return;
    }

    [MBProgressHUD showMessage:@"正在登录……"];

    [WCUser shareUser].loginAccount = self.accountField.text;
    [WCUser shareUser].loginPwd = self.pwdField.text;

    // 调用 AppDelegate 的用户登录方法
    [WCXMPPTool sharedWCXMPPTool].registerOperation = NO;
    __weak typeof(self) selfVc = self;
    [[WCXMPPTool sharedWCXMPPTool] xmppLogin:^(XMPPResultType resultType) {

        [selfVc handleXMPPResultType:resultType];

    }];
}

解释一下上面代码中的三个点:
1. 使用weak关键字,是因为登录成功跳转到Main.storyboard后,Login界面不应该继续存在;
2. MBProgressHUD是常见的用于提示信息的第三方类库;
3. 要记得把registerOperation设置为NO,不然先注册再登录会报错。

2.2 处理登录结果

- (void)handleXMPPResultType:(XMPPResultType)resultType
{
    //有关UI的操作切换到主线程执行
    dispatch_async(dispatch_get_main_queue(), ^{

        [MBProgressHUD hideHUD];

        if (resultType == XMPPResultTypeLoginSuccess) {
            ZHLog(@"%s, 登录成功", __func__);
            [UIStoryboard showInitialVCWithName:@"Main"];

            [WCUser shareUser].login = YES;

            [[WCUser shareUser] saveToSandBox];

        }else {
            ZHLog(@"%s, 登录失败",__func__);
            [MBProgressHUD showError:@"帐号或密码错误"];
        }
    });

}

- (void)dealloc
{
    ZHLog(@"%s", __func__);
}

上面 [UIStoryboard showInitialVCWithName:@”Main”] 是通过分类实现的,实现方法很简单:

+(void)showInitialVCWithName:(NSString *)name{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:name bundle:nil];
    [UIApplication sharedApplication].keyWindow.rootViewController = storyboard.instantiateInitialViewController;
}

三、注册

实现的方法和登录几乎一样

- (IBAction)registerBtnClick:(id)sender {

    [WCUser shareUser].registerAccount = self.accountField.text;
    [WCUser shareUser].registerPwd = self.pwdField.text;

    [MBProgressHUD showMessage:@"正在注册中……"];

    [WCXMPPTool sharedWCXMPPTool].registerOperation = YES;
    __weak typeof(self) selfVc = self;
    [[WCXMPPTool sharedWCXMPPTool] xmppRegister:^(XMPPResultType resultType) {
        [selfVc handleXMPPResultType:resultType];
    }];
}

/**
 *  处理注册结果
 */
- (void)handleXMPPResultType:(XMPPResultType)resultType
{
    //有关UI的操作切换到主线程执行
    dispatch_async(dispatch_get_main_queue(), ^{

        [MBProgressHUD hideHUD];

        if (resultType == XMPPResultTypeRegisterSuccess) {
            [MBProgressHUD showSuccess:@"恭喜注册成功!返回登录界面……"];

            [self.navigationController popToRootViewControllerAnimated:YES];
        }else {
            [MBProgressHUD showError:@"用户名重复"];
        }
    });

}

四、注销

注销的按钮放在Main.storyboard个人信息右边的BarButtonItem,实现方法也很简单:

- (IBAction)logoutBtnClick:(id)sender {
    //注销登录
    [[WCXMPPTool sharedWCXMPPTool] xmppLogout];

    //把沙盒自动登录状态设置为NO
    [WCUser shareUser].login = NO;
    [[WCUser shareUser] saveToSandBox];

    //返回登录界面
    [UIStoryboard showInitialVCWithName:@"Login"];
}

五、小结

注册登录思维导图


用户登录流程图


登录细节


用户注销流程图


用户注册流程图

以上。

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:33841次
    • 积分:1165
    • 等级:
    • 排名:千里之外
    • 原创:86篇
    • 转载:0篇
    • 译文:0篇
    • 评论:6条
    最新评论