I think that you are supposed to handle the url in: application:openURL:sourceApplication:annotation:
as it can be called while you application is running and so application:didFinishLaunchingWithOptions:
would not get called. It only passes it into the didFinishLaunching... method so that you can know the reason you are being launched and if you want you can prepare, knowing that you are going to open the url.
At least, this is how I have handled this in the past.
Hope this helps.