validation程序和制定新的用户逻辑,parse.com

我被困在如何思考何时创build新的匿名用户。 这就是我的应用程序现在安装的方式。

我有三个ViewController。

1) GetPhoneController ,2) VerificationController ,3) ViewController

GetPhoneController:是第一个视图,如果打开应用程序的用户没有用户存储的含义[PFUser currentUser]; 等于NULL,那么这个视图将被运行,否则ViewController将执行(检查在AppDelegate中完成)。 这个视图将只是获得用户的电话号码在UITextField中,并发送到下一个控制器

VerificationController:打开此视图时,将通过validation码向用户发送文本消息。 我正在使用Twilioparsing。 validation码保存在用户对象的自定义字段中,稍后用于匹配代码。(这里的问题你会知道为什么会在后面)。

如果用户input正确的validation码,则检查完成,如果用户确实这样做,那么我想要创build匿名用户并转到下一个控制器。 为什么? 因为如果我在validation之前创build了一个用户,那么在一个场景中,用户可能会closures该应用程序,然后创build一个用户以占用额外的空间。

所以我的问题是,我尝试将validation码保存到不存在的用户,因为我想validation后创build它。

如果您有更好的解决scheme来更好地validation逻辑步骤,那么解决scheme将会非常棒,甚至更好。

另外,我从来没有注销用户,因为我不想让用户在validation完成后login,这也就意味着匿名用户会被删除,是不是很糟糕,或者可以这样使用吗?

谢谢!

如果您不想在validation完成之前在Parse中创build用户,则可以将validation标记保存到NSUserDefaults

在VerificationController中发送validation码的方法…

 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:verificationCode forKey:@"code"]; [defaults synchronize]; 

然后,检查用户何时input代码,然后点击button…

 - (void)userTappedCheckCodeButton:(id)sender { NSString *enteredCode = codeField.text; NSString *storedCode = [[NSUserDefaults standardUserDefaults] objectForKey:@"code"]; if ([enteredCode isEqualToString:storedCode]) { // Code matches. Create your anonymous user as the code has been verified. } else { // No code match. Tell the user, or maybe ask if they want to send the code again. } } 

—用新的信息编辑代码生成发生在服务器端—

如果你真的不想创build一个用户,直到他们被validation,代码生成发生在服务器端,你可以使用在Parse中创build一个新的VerificationToken对象。 您可以通过[[NSUUID UUID] UUIDString]为用户设备生成一个标识符,并存储在NSUserDefaults (这样就不需要使用广告标识符,而且它在应用程序执行过程中是持久的)。 用该UUID发送请求生成代码并发送给用户,并用你的云代码function将其保存在validation对象中。

VerificationController ,只需要用你从NSUserDefaults检索到的UUID发送代码,searchNSUserDefaults匹配的VerificationToken对象,返回成功并创build匿名用户。

最后,如果您担心有成千上万个未完成的VerificationToken对象使Parse混乱,只告诉用户它们只能持续24小时,并创build一个预定的云代码作业,以删除所有createdAtdate早于1天前,并安排任务每天运行。