繁体   English   中英

在用户首次打开应用程序时处理登录屏幕的最佳方法是什么?

[英]What's the best way to handle showing a sign in screen the first time a user opens an app?

目前,我正在构建一个iOS应用,并尝试找出呈现必要屏幕的最佳方法。

该应用程序是基于标签的应用程序,但在用户登录后,该标签栏及其子级才应该可见。

当前,在调用application:didFinishLaunchingWithOptions时, application:didFinishLaunchingWithOptions程序委托将tabbarcontroller设置为根视图控制器,然后,如果需要,选项卡栏控制器中的第一个控制器将显示登录视图控制器。

这种方法的问题在于选项卡栏中的第一个视图控制器非常忙。 它向外部API发出一些请求,其中一些请求首先需要有效的会话令牌。

除非有人可以提出更好的解决方案,否则我想做的是检查application:didFinishLaunchingWithOptions是否存在有效的会话ID。 如果存在,则将tabBarController设置为rootViewController;如果没有,则将登录控制器设置为根视图控制器。

有人能看到这个想法有什么陷阱吗?

使用NSUserDefault来存储布尔值,这将是第一次,登录屏幕将与make bool value一起显示为false。 因此不会出现第二个登录屏幕

将此添加到application:didFinishLaunchingWithOptions方法中:

 [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"FirstTime"];
 [[NSUserDefaults standardUserDefaults] synchronize];

现在

 if([[NSUserDefaults standardUserDefaults] boolForKey:@"FirstTime"] == YES)
 {
    [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"FirstTime"];
    [[NSUserDefaults standardUserDefaults] synchronize];
   //login screen
 } 

我已经在我的应用程序中使用了这两种方法,而您所描述的第一种方法是最好的方法,因为您无需弄乱更改视图控制器层次结构。 您确实应该在NSUserDefaults中存储一个布尔值,并在第一个视图控制器中存储另一个布尔值。 检查选项卡的第一个视图控制器的viewDidLoad方法中的userDefault bool值,以查看用户是否已通过身份验证;如果未通过身份验证,则将第一个视图控制器的bool值设置为适当的值,并且不执行您需要通过第三方API执行的操作,进行身份验证,将布尔值设置为适当的值,然后返回第三方API。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM