如何在我的 Cocoa Touch 应用程序中实施 "first time user registration" 工作流程?

How can I implement a "first time user registration" workflow in my Cocoa Touch app?

我正在我的应用程序中实现 "new user registration"

用户第一次登录时,我想让他们完成 4 个步骤的注册过程,以创建他们的用户名、设置他们的个人资料照片等。每个步骤都会出现不同的屏幕。

这一切只需要完成一次。我在想 -

  1. 这 4 个屏幕的最佳设置是什么?它们应该是 UINavigationController 以便作为 "stack" 实现吗?即用户可以返回到之前的屏幕?

  2. 如何保存注册状态?我想知道用户在中途离开时执行了哪一步,或者通常知道我是否应该显示注册(即,如果这是他们第一次)。有没有一种方法可以存储已完成的步骤数,这样如果 numStepsCompleted == 0 我知道他们还没有开始,如果 numStepsCompleted < 4 我知道他们已经开始但没有完成?

一般来说,如果网上有任何代码示例可以实现类似的功能,那么看看就好了。

谢谢!

在 NSUserDefaults 中保存一个值,以了解用户最后完成的步骤。正如你所说,制作一个 UINavigation 来设置四个注册步骤。当应用程序打开时,用户默认知道注册是否完成。

我将从您的根视图控制器模态地呈现一个 UINavigationController。用户完成后,您可以做两件事:

  1. 在 NSUserDefaults 中保存用户已经完成注册过程的事实。如果用户删除应用程序,此标志将随之删除。
  2. 将用户名和密码等个人信息保存在钥匙串中,它们将在应用程序删除后保留事件,这对静默登录过程很有用,并且它们是加密的。

对于第一点可以做类似的事情

+ (BOOL)isFirstTime{
    static BOOL flag = NO;
    static BOOL result;
    if(!flag){
        if ([[NSUserDefaults standardUserDefaults] boolForKey:@"hasBeenLaunchedOnce"])
        {
            result = NO;
        }
        else
        {
            [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"hasBeenLaunchedOnce"];
            [[NSUserDefaults standardUserDefaults] synchronize];
            result = YES;
        }

        flag = YES;
    }
    return result;
}

如果这是第一次启动,显示 registration/login 过程,如果不是,则从钥匙串中获取用户名和密码。

有几种不同的方法可以实现这一点:
1. 使用 UINavigationController
2. 使用 UIPageViewController(我更喜欢)
3. 使用一个UITableView,一屏包含所有信息

要跟踪注册信息,您应该实施 RegistraionInfo class(或 Swift 中的结构)。由于它应该只有一个实例,因此您可以创建一个单例并从任何地方访问它 - RegistrationInfo.sharedInstance()

您也可以在第一个 ViewController 中创建一个实例,然后将其传递给 prepareForSegue: 中的下一个实例。

最后一部分是确定用户是否已经完成注册过程。如果您使用的是 Username/Password 模型,那么您应该将该信息保存在钥匙串中并在启动时获取它。
否则你可以在 NSUserDefaults.

中保留一个值