【问题标题】:how to keep current user session active using parse?如何使用解析保持当前用户会话处于活动状态?
【发布时间】:2015-07-07 04:57:54
【问题描述】:

我正在尝试保持当前用户会话处于活动状态,直到用户决定退出。我应该实现什么代码?究竟应该在哪里实施?根视图的 viewDidLoad 或 viewWillAppear 函数?我曾尝试在我的根视图中使用此代码:

override func viewDidAppear(animated: Bool) {
        let vc = ViewController()
        var loggedIn = false

        if PFUser.currentUser() != nil {
            loggedIn = true
        } else {
            presentViewController(vc, animated: true, completion: nil)
        }
    }

但是每当我停止模拟器并再次运行它时,我都必须重新登录。什么是最好的解决方案?保留在我的“ViewController”中是我的主视图,其中包含我的登录/注册字段。所以我基本上想要一种方式来说明当前用户会话是否存在,继续,否则,显示初始视图。

【问题讨论】:

    标签: ios swift parse-platform xcode6 usersession


    【解决方案1】:

    在您的应用委托中试试这个...

    -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    ...
    
    PFUser *currentUser = [PFUser currentUser];
    
    if (currentUser) {
      // there is a user logged in go to the main screen
        UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
        MainViewController *mainViewController = (MainViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"Main"];
    
        //set the root controller to it
        self.window.rootViewController = mainViewController;
    } else {
    // Log in!
        UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Login" bundle: nil];
        LoginViewController *loginViewController = (LoginViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"Login"];
    
        //set the root controller to it
        self.window.rootViewController = loginViewController;
    }
    
    ...
    

    【讨论】:

    • 我标记了 swift,而不是 obj .. 如果你可以使用 swift 语法,我绝对可以试试这个
    • @MikeStrong 很抱歉使用了 Objective-c,this can help you。只是以编程方式加载视图控制器
    • 这确实有效,但是它必须放在初始视图的 viewDidLoad 函数中,而不是应用程序委托中。因此,如果您调整答案,我可以接受!谢谢
    • @MikeStrong,documentation 指的是:在显示之前调用您的应用程序委托来配置初始视图控制器,在我的情况下,我使用 .xib用于启动屏幕。如果存在用户会话,我不相信加载其他 vc 的 vc 加载是有效的。谢谢!
    【解决方案2】:

    当您使用 signUpInBackgroundWithBlock 正确注册用户时,Parse 会为您处理此问题(目标 -c)。

    PFUser.currentUser() 应该一直可用,直到您主动注销。

    也许你尝试注册 -> 失败 -> 还是转到下一个 VC -> 重新启动应用程序而不实际注册?

    【讨论】:

    • 我不明白你的建议。
    • 在您注册后立即检查 PFUser.currentUser() - 当您“知道”已注册时查看您是否得到它。
    【解决方案3】:

    Parse 为开发人员提供了 Sessions(用于会话管理)。如需进一步帮助,请参阅以下链接中的会话部分... https://parse.com/docs/ios/guide

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 2018-11-26
      • 1970-01-01
      • 2019-11-07
      • 1970-01-01
      • 2020-04-09
      • 2019-08-24
      相关资源
      最近更新 更多