App/View 的条件启动
Posted
技术标签:
【中文标题】App/View 的条件启动【英文标题】:Conditional start of App / View 【发布时间】:2013-07-18 09:16:56 【问题描述】:(首先,如果这是一个非常琐碎的问题,请允许我道歉。我刚开始使用 ios 和 Objective-C)
我正在开发一个需要经过验证的用户帐户才能运行的 iOS 6 应用。注册分为两个阶段:用户首先必须注册他/她的姓名和电话号码,然后应用程序将联系后端服务,该服务将通过短信向用户发送验证码。然后,用户必须通过将该代码输入应用程序来继续。完成所有这些后,用户终于可以开始使用该应用了。
那么我的问题是:由于注册是一次性的过程,设计视图的流程的最佳方式是什么?我当前的解决方案基于“启动视图”,它确定用户在注册过程中的位置(未创建、未验证或完成),然后加载正确的视图。然而,这确实感觉有点麻烦,因为我真的在创建一个视图,之后我会立即将其关闭。
编辑:作为后续问题:如果我当前的解决方案可行,那么放置逻辑的最佳位置是什么方法?截至目前,它位于 viewDidLoad。
【问题讨论】:
对于您的编辑,这完全取决于您想要实现的应用程序和功能。有关详细信息,请参阅 Apple 文档或此:***.com/questions/1579550/… 也检查一下:- ***.com/questions/5630649/… @Piyush 感谢您提供这些链接,我会看看。 【参考方案1】:你可以这样移动。
制作 Root View Controller 就像闪屏一样。在根视图 控制器,只需检查应用程序是第一次运行还是 第n次(成功注册后)。如果应用程序正在运行 第一次,将用户导航到注册页面,如果用户有 注册成功,将用户导航到主屏幕(或您的 所需的屏幕)。
要检查应用程序是否第一次运行,您可以使用NSUserDefault
。
【讨论】:
感谢您的回复。你有这方面的任何消息来源还是来自个人经验?如果其他人回复不同的解决方案,我会稍作接受。 嗯,这是我自己的逻辑,我在我开发的许多应用程序中都使用过。我见过人们使用相同的。而且我坚持接受接受不会有任何问题。 好的,太好了。再次感谢。【参考方案2】:您可以使用 NSUserDefault 来检查您的应用程序是否第一次运行.. 如果是第一次获取值,请保存并移至下一个视图。
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (![defaults objectForKey:@"firstRun"])
[defaults setObject:[NSDate date] forKey:@"firstRun"];
[[NSUserDefaults standardUserDefaults] synchronize];
礼貌:-https://***.com/a/1664275/1865424
我想这会对你有所帮助。
【讨论】:
谢谢。我正在寻求这个解决方案(昨天提交了类似的答案,所以“接受”在那里)。 @KGChristensen 没关系..如果您需要任何帮助,请进一步联系我。【参考方案3】:我正在使用以下代码获取当前状态,然后加载所需的视图,检查是否有帮助:
-(NSString *)get_provision_status
NSString *status;
NSUserDefaults *prefrences = [NSUserDefaults standardUserDefaults];
status=[prefrences stringForKey:@"PROVISION_STATUS"];
if ([status isEqualToString:@"(null)"] || [status rangeOfString:@"(null)"].location!=NSNotFound)
status=[NSString stringWithFormat:@""];
return status;
else
return status;
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
/*Process for check current provision status*/
current_status=[self get_provision_status];
if ([current_status isEqualToString:@""] || [current_status rangeOfString:@"(null)"].location!=NSNotFound)
NSLog(@"First Time View");
else if ([current_status isEqualToString:@"PROVISION-COMPLETED"])
NSLog(@"Home Screen Or view When provision completed");
else
NSLog(@"Handle any other conditions if you have");
self.window.rootViewController = self.navController;
[self.window makeKeyAndVisible];
return YES;
【讨论】:
以上是关于App/View 的条件启动的主要内容,如果未能解决你的问题,请参考以下文章
WiX:有条件地注册应用程序以在 Windows 启动时启动
重新启动集群时出错:重新启动 kube-proxy:等待 kube-proxy 启动以进行 configmap 更新:等待条件超时