Instance Method


Tells the delegate that the launch process has begun but that state restoration has not yet occurred.


- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary<UIApplicationLaunchOptionsKey, id> *)launchOptions;



The singleton app object.


A dictionary indicating the reason the app was launched (if any). The contents of this dictionary may be empty in situations where the user launched the app directly. For information about the possible keys in this dictionary and how to handle them, see Launch Options Keys.

Return Value

NO if the app cannot handle the URL resource or continue a user activity, or if the app should not perform the application:performActionForShortcutItem:completionHandler: method because you’re handling the invocation of a Home screen quick action in this method; otherwise return YES. The return value is ignored if the app is launched as a result of a remote notification.


Use this method (and the corresponding application:didFinishLaunchingWithOptions: method) to initialize your app and prepare it to run. This method is called after your app has been launched and its main storyboard or nib file has been loaded, but before your app’s state has been restored. At the time this method is called, your app is in the inactive state.

If your app was launched by the system for a specific reason, the launchOptions dictionary contains data indicating the reason for the launch. For some launch reasons, the system may call additional methods of your app delegate. For example, if your app was launched to open a URL, the system calls the application:openURL:options: method after your app finishes initializing itself. The presence of the launch keys gives you the opportunity to plan for that behavior. In the case of a URL to open, you might want to prevent state restoration if the URL represents a document that the user wanted to open.

When asked to open a URL, the return result from this method is combined with the return result from the application:didFinishLaunchingWithOptions: method to determine if a URL should be handled. If either method returns NO, the system does not call the application:openURL:options: method. If you do not implement one of the methods, only the return value of the implemented method is considered.

In some cases, the user launches your app with a Home screen quick action. To ensure you handle this launch case correctly, read the discussion in the application:performActionForShortcutItem:completionHandler: method.

See Also

Initializing the App

- application:didFinishLaunchingWithOptions:

Tells the delegate that the launch process is almost done and the app is almost ready to run.


Keys used to access values in the launch options dictionary passed to your app at initialization time.

- applicationDidFinishLaunching:

Tells the delegate when the app has finished launching. Don’t use. Instead, use application:didFinishLaunchingWithOptions:.


Posted immediately after the app finishes launching.