Using application:willFinishLaunchingWithOptions instead of application:didFinishLaunchingWithOptions:
application:willFinishLaunchingWithOptions:
Tells the delegate that the launch process has begun but that state restoration has not yet occurred.
Vs
application:didFinishLaunchingWithOptions:
Tells the delegate that the launch process is almost done and the app is almost ready to run.
So the difference is clearly visible. For details you can follow UIApplicationDelegate
So application:willFinishLaunchingWithOptions is just the very previous event of application:didFinishLaunchingWithOptions
So after having the event application:willFinishLaunchingWithOptions, the next event application:didFinishLaunchingWithOptions will be fired.
So it will definitely depend on you needs but usually both are almost similar and most of the time you may not need to use both of those.
So in usual case you can use application:didFinishLaunchingWithOptions as its the latest event in the similar category.