UIApplicationDelegate 3 个类似的 openURL 方法

UIApplicationDelegate 3 similar openURL methods

@protocol UIApplicationDelegate<NSObject>

...
- (BOOL)application:(UIApplication *)application 
handleOpenURL:(NSURL *)url 
NS_DEPRECATED_IOS(2_0, 9_0, "Please use application:openURL:options:") __TVOS_PROHIBITED;

- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation 
NS_DEPRECATED_IOS(4_2, 9_0, "Please use application:openURL:options:") __TVOS_PROHIBITED;

- (BOOL)application:(UIApplication *)app
openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options 
NS_AVAILABLE_IOS(9_0); // no equiv. notification. return NO if the application can't open for some reason
...

UIApplicationDelegate协议中,有3个类似的openURL回调方法,如何在你的应用中使用它们以获得最佳兼容性?

前两个是在iOS < 9 中处理URL-方案的旧委托。在iOS 9 中,它们已合并到最后一个以统一两个委托并使用 UIApplicationOpenURLOptionsKey 类型使选项更易于配置。

注意:如果您仍然以 iOS < 9 为目标,它们也可以共存以保持向后兼容性。只要您 iOS 将检测每个 iOS 版本的正确委托实施它们。