When I open the App from my Today Extension with this method :
open func open(_ URL: URL, completionHandler: ((Bool) -> Void)? = nil)
My app's life cycle goes this way :
- didFinishLaunchingWithOptions
- viewDidLoad (initial ViewController)
- openURL
This annoys me because I want to set my launchState variable to widget and do custom logic in my initial ViewController which I can't if the openURL method is the last one triggered.
How can I handle this scenario ?
EDIT:
The user can open the App from the Today Extension, or the Classic launch.
In the viewDidLoad of the rootViewController I am doing this :
fileprivate func prepareCityToLaunch() {
switch launchState {
case .widget:
launchCity.getWidgetCity()
case .classic:
launchCity.getLaunchCity()
}
}
Which is an enum, by default it is set to .classic, and I am setting it to .widget in the openURL method.
This methods return the appropriate City object to request for thank to delegation.
I can't wait for the Notification from openURL because in this viewController I don't know yet if the App is open from Widget or from Classic launch and because the launchState is set to classic by default, it will always get the city as if the App is launched in the classic way.
That is why I wanted to set the launchState first in the openURL method, then in my viewDidLoad everything would have been set correctly.
Is it understandable ?
