-
Notifications
You must be signed in to change notification settings - Fork 472
Understanding the Application Lifecycle
TODO:
- Awaking from Push Notifications
- Awaking from Location Changes
An iOS application can transition between the following states:
- Not running
- Inactive (e.g. there is a phone call)
- Active
- Background
- Suspended
Most of the time, your app reacts to state changes through the application delegate. If you are not using storyboards you will need to set up the window and root view controller of your application in application:didFinishLaunchingWithOptions:
For example:
func application(application: UIApplication,
didFinishLaunchingWithOptions launchOptions:[NSObject: AnyObject]?) -> Bool {
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.rootViewController = ViewController()
self.window?.rootViewController = self.rootViewController
self.window?.makeKeyAndVisible()
return true
}
The AppDelegate is now only responsible for the application lifecycle and setup, since iOS 13. The SceneDelegate will be responsible for what is shown on the screen (Windows or Scenes) handle and manage the way your app is shown.
So, if you are not using storyboards you will need to set up the window and root view controller of your application in scene:willConnectTo:options:
For example:
func scene(_ scene: UIScene,
willConnectTo session: UISceneSession,
options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }
window = UIWindow(windowScene: windowScene)
let rootViewController = ViewController()
window?.rootViewController = rootViewController
window?.makeKeyAndVisible()
}
If you are using a storyboard you simply specify the "main interface" in your project settings. (Remember to also set the initial view controller on the storyboard)