iOS低耦合实现游客登陆

demo中包含两个功能,1.用户登陆;2.查看用户订单;
未登录时点击OrderList需要先登陆,成功登录后无需额外操作可直接进入订单列表;已登录用户点击OrderList可以直接进入订单列表;
流程图如下


流程图

外部使用代码

[JKVisterChecker addToDoThingsAfterLogin:^{
        //这里添加登录后需要做的事情
        JKListViewController *vc = [[JKListViewController alloc] init];
        [self.navigationController pushViewController:vc animated:YES];
 }];

//addToDoThingsAfterLogin内部的实现
+ (void)addToDoThingsAfterLogin:(void (^)(void))afterLogin{
    //1.获取用户信息,根据自己的需求来
    JKUser *user = [[JKUserManager sharedUserManager] currentUser];
    if (!user) {
        //2-1-1 需要登陆的情况
        JKLoginViewController *vc = [[JKLoginViewController alloc] init];
        vc.modalPresentationStyle = UIModalPresentationFullScreen;
        vc.loginCallback = ^(BOOL loginSuccess) {
            if (loginSuccess) {
                //2-1-2 成功登录后调用afterLogin(),外部继续登录后需要做的事情,例如进入OrderList
                if (afterLogin) {
                    afterLogin();
                }
            }
        };
        UIWindow *window = [[UIApplication sharedApplication].windows firstObject];
        [window.rootViewController presentViewController:vc animated:YES completion:NULL];
    }else{
        //2-2-1 用户已经登陆,外部直接执行后续任务
        if (afterLogin) {
            afterLogin();
        }
    }
}

整个流程个人认为设计的是比较巧妙的,哈哈,自恋一下,demo在这里https://gitee.com/Jack_1993/vistor-demo

你可能感兴趣的:(iOS低耦合实现游客登陆)