在初始登录到 Backendless 后保留用户

Persisting the user after initial login to Backendless

我正在努力做到这一点,即使应用程序关闭,用户也可以保持登录状态。我似乎无法让我的功能正常工作。我有一个让用户登录的功能,当按下按钮时它可以工作,但我似乎无法在正确的位置调用该功能以使其仅在用户第一次登录然后关闭后加载该应用程序,但没有注销。这是我的视图控制器代码:

视图控制器

import UIKit
import FBSDKCoreKit
import FBSDKLoginKit

class ViewController: UIViewController {


let APP_ID = "i have it"
let SECRET_KEY = "i have it"
let VERSION_NUM = "v1"

var backendless = Backendless.sharedInstance()




@IBOutlet weak var userEmail: UITextField!


@IBOutlet weak var password: UITextField!


func displayAlert(title: String, message: String) {

    let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert)
    alert.addAction((UIAlertAction(title: "OK", style: .Default, handler: { (action) -> Void in

        self.dismissViewControllerAnimated(true, completion: nil)

    })))

    self.presentViewController(alert, animated: true, completion: nil)


}







@IBAction func signUp(sender: AnyObject) {

    let user = BackendlessUser()
    user.email = self.userEmail.text
    user.password = self.password.text


    if userEmail.text == "" || password.text == ""{

        displayAlert("Error in form", message: "Please enter a email adress and password")

    } else{

    backendless.userService.registering(user,
                                        response: { (registeredUser : BackendlessUser!) -> () in
                                            print("User has been registered (ASYNC): \(registeredUser)")
        },
                                        error: { ( fault : Fault!) -> () in
                                            print("Server reported an error: \(fault)")
        } 
    )
    }

}




@IBAction func logIn(sender: AnyObject) {


    if userEmail.text == "" || password.text == ""{

        displayAlert("Error in form", message: "Please enter a email adress and password")

    }else{





 loginUserAsync()


        let appDelegate = UIApplication.sharedApplication().delegate! as! AppDelegate

        var initialViewController = self.storyboard!.instantiateViewControllerWithIdentifier("myTabbarControllerID") as! UIViewController
        appDelegate.window?.rootViewController = initialViewController
        appDelegate.window?.makeKeyAndVisible()



    }
}


func loginUserAsync() {

    let user = BackendlessUser()
    user.email = self.userEmail.text
    user.password = self.password.text

    backendless.userService.login(

        self.userEmail.text, password:self.password.text,

        response: { ( user : BackendlessUser!) -> () in

            self.backendless.userService.setPersistentUser()

            self.backendless.userService.setStayLoggedIn( true )

            self.backendless.userService.getPersistentUser()

            let user = self.backendless.userService.currentUser

            if (user != nil) {

                // get user's email (i.e. mandatory/predefined property)

                let userEmail = user.email
                let password = user.password



                let appDelegate = UIApplication.sharedApplication().delegate! as! AppDelegate

                var initialViewController = self.storyboard!.instantiateViewControllerWithIdentifier("myTabbarControllerID") as! UIViewController
                appDelegate.window?.rootViewController = initialViewController
                appDelegate.window?.makeKeyAndVisible()
            }

            else if (user == nil) {

                print("User hasn't been logged")

            }

        },

        error: { ( fault : Fault!) -> () in

            print("Server reported an error: \(fault)")

        }

    )

}

func validUserTokenAsync() {
    backendless.userService.isValidUserToken(
        { (var result : AnyObject!) -> () in
            print("isValidUserToken (ASYNC): \(result.boolValue)")
        },
        error: { (var fault : Fault!) -> () in
            print("Server reported an error (ASYNC): \(fault)")
        } 
    ) 
}


override func viewDidLoad() {
    super.viewDidLoad()



    let loginButton = FBSDKLoginButton()
    loginButton.center = self.view.center
    self.view.addSubview(loginButton)



}


override func viewDidAppear(animated: Bool) {
    loginUserAsync()
}


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}









}

确保调用以下函数:

self.backendless.userService.setStayLoggedIn( true )

在 "backendless.userService.login" 之前,而不是在登录响应处理程序中。