John Doe
John Doe

Reputation: 1025

Check for user in session in AppDelegate and trigger UIViewController if not

I have a Swift application, and what I'd like to do is that every time the app becomes active, I'd like to check for a user in session. If not found, I'd like to show a login view controller that I designed in my Storyboard. If found, I need everything to just resume as usual.

Where is the best way to trigger this check? Is AppDelegate's applicationDidBecomeActive the right place for this?

If yes, how do I actually instantiate the login view controller and show it? I have another home view controller, which is set to be my initial view controller. How do I manage this controller if and when I do end up successfully pushing the login view controller from the app delegate in case there is no user found in session? I don't want the home view controller to show up if a user is not found.

Any advise is greatly appreciated!

Upvotes: 1

Views: 2552

Answers (2)

Dasoga
Dasoga

Reputation: 5695

Hope this answer can help! Put this in your AppDelegate.swift file. With the if you can check the value saved in local memory.

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    var userLoggedIn: Bool = NSUserDefaults.standardUserDefaults().boolForKey("isUserLoggedIn")
    if (userLoggedIn){
        let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        var homeViewController = mainStoryboard.instantiateViewControllerWithIdentifier("HomeViewController") as!
        HomeViewController
        window!.rootViewController = homeViewController
    }
    return true
}

Upvotes: 2

Laurenswuyts
Laurenswuyts

Reputation: 2142

If let's say you store a token in your usersession, we go look if there is a token set or not. If it's already set (so not null) then we go to your other viewcontroller

let prefs = NSUserDefaults.standardUserDefaults()
let checkfortoken = prefs.stringForKey("token")
if(checkfortoken != ""){
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("identifierofyourview") as UIViewController
self.presentViewController(vc, animated: true, completion: nil)
}

Now you want to check this when you start your app so we gonna put the code into appdelegate in the first function (didFinishLaunchingWithOptions):

func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {
        UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)

        //so here ...
        return true
    }

Upvotes: 1

Related Questions