iOS 自动登录,登录过程中一直显示加载页

原创 2015年07月09日 11:39:00

iOS开发中 如果客户端做的人性化一点肯定会考虑自动登录

其实原理很简单,就是再首次登录成功之后将用户名和密码存入userdefault 下次登录的时候判断usedefault中有没有存储用户名密码,如果有的话就绕过登录界面直接登录

但是在做的过程中遇到了一个问题 现在做一整理,供大家学习,指正


一般实现自动登录都是在加载页中去实现,

但是登录一般都需要与服务器通信,是异步的,而加载页在主线程中,这样就无法控制加载页在登录完成(也就是服务器返回信息之后)之后再消失


我遇到的问题就是登录还没有完成,加载页已经完成。就会跳出一个空白页面,等自动登录完成之后才会跳转首页

解决办法就是,自己做一个viewControl 界面和加载页一模一样,一般情况下加载页都是一张图片比如微信加载页面就是




我们自己见里的 viewcontroller 只需要设置一个全屏图片,讲加载页图片放上去。

然后再appdelegate 中判断 如果是自动登录 就直接将

rootViewController

设置为我们自己新建的viewcontroller

 然后再登录完成之后做跳转就行


上代码


首先是我自己新建的viewcontroller  只需要加载一张图片即可

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    UIImageView *imageView=[[UIImageView alloc]initWithFrame:SCREEN_FRAME];
    imageView.image=[UIImage imageNamed:@"HelpSecond"];
    [self.view addSubview:imageView];

}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end



第一次登录成功之后  将用户信息存入

     NSUserDefaults *userD=[NSUserDefaults standardUserDefaults];
        [userD setValue:loginUserinfo forKey:@"loginuserinfo"];

我的做法是将用户名 密码(md5加密过的,这样可以直接拉过来用) 存入字典,然后再将字典存入userdefault



下来在appdelegate 中判断是否usedefault中有用户名 密码 有的话 开始自动登录


 NSUserDefaults *userD=[NSUserDefaults standardUserDefaults];

 NSDictionary *loginUserinfoDic=[userD valueForKey:@"loginuserinfo"];
        
            if (loginUserinfoDic!=NULL) {
                
                [userD setValue:@"autologin" forKey:@"isautologin"];
                ViewController *vc=[[ViewController alloc]init];
                _window.rootViewController=vc;
                
                LoginViewController *loginVC=[[LoginViewController alloc]init];
                [loginVC login:loginUserinfoDic];
            }


判断如果是 自动登录  首先讲 rootviewcontroller 设置为我们自己创建的viewcontroller

然后再调用自动登录方法 

在自动登录完成之后重新设置rootviewcontreler即可


-(void)loginSuccess
{
    
    HomeViewController *homeVC=[[HomeViewController alloc]init];
    ExploreViewController *exploreVC=[[ExploreViewController alloc]init];
    EnjoyViewController *enjoyVC=[[EnjoyViewController alloc]init];
    UserInfoViewController *userInfoVC=[[UserInfoViewController alloc]init];
    
    UITabBarController *tabBarC=[[UITabBarController alloc]init];
    tabBarC.viewControllers=@[homeVC,enjoyVC,exploreVC,userInfoVC];
    //注意默认情况下UITabBarController在加载子视图时是懒加载的,所以这里调用一次contactController,否则在第一次展示时只有第一个控制器tab图标,contactController的tab图标不会显示
    for (UIViewController *controller in tabBarC.viewControllers) {
        UIViewController *view= controller.view;
    }
    [UIApplication sharedApplication].keyWindow.rootViewController=tabBarC;

}

ok  如果有问题欢迎加qq讨论




苹果开发群 :414319235  欢迎加入  欢迎讨论问题





iOS中自动登录的设计

1.//这是登录控制器页面 - (void)viewDidLoad {     [super viewDidLoad];       //lt.iSNextAutoLo...

移动端APP第一次登录和自动登录流程

App登陆保存数据流程 App因为要实现自动登陆功能,所以必然要保存一些凭据,所以比较复杂。  App登陆要实现的功能:  密码不会明文存储,并且不能反编绎解密; 在服务器端可以...

iOS 记住密码\自动登录

定义了宏 #define AccountKey @"account" #define PwdKey @"pwd" #define RmbPwdKey @"rmb_pwd" #define AutoLo...

iOS App 自动登录的安全性分析

转自http://bobao.360.cn/learning/detail/324.html 引子 Cookie 有时也用其复数形式Cookies, 指某些网站为了...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

APP首次启动引导界面和启动界面设置——iOS开发

APP首次启动引导界面和启动界面设置——iOS开发。及NSUserDefaults的使用

为Vue2集成UIkit

Vue只是为我们提供了一个很优秀的前端组件式开发框架,但单纯依靠Vue是做不出一个漂亮的网页应用的,甚至连“不难看”这个标准都达不到。这个时候借助界面框架UIkit能够很好地解决这一问题。 本文出自...

从git中永久删除文件以节省空间

 在使用版本管理工具的过程中我们会碰到这样的问题:不小心把一个不该加入版本管理的文件加进去了,有时候这个文件很大,也许我们整个版本库才几百K,但加进去这个没用的文件却有好几百M,我可不想因为这么个破烂...

加载过程中显示的动画

  • 2016年06月08日 15:12
  • 1.73MB
  • 下载

Android Universal Image Loader加载 ListView 滑动过程中图片显示重复错位闪烁问题

项目使用uil加载listview图片时,出现过一次头像加载错了的问题, 之后在一篇博客上看到一种解决方案,可以借鉴 http://www.trinea.cn/android/android-list...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS 自动登录,登录过程中一直显示加载页
举报原因:
原因补充:

(最多只允许输入30个字)