Xcode 11 深度链接似乎有所不同,因为它不会从 AppDelegate 调用该函数



我试图使用 Xcode 11 中的深层链接,发现应用程序没有调用

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
return true
}

当我尝试使用深度链接时,上面的函数就不再了,而是调用下面的函数。

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
}

在这种情况下,这个函数的相关性是什么?

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
return true
}

是否有人曾为 Xcode 11 开发过深度链接或遇到过类似的决策问题?你能指导我解决这个问题吗?

因此,除非您只针对iOS 13,否则您必须在两种方法中处理URL。

这是不正确的。

在任何给定时刻,系统仅考虑AppDelegate.openUrl(...)SceneDelegate.openURLContexts(...)之间的一个或另一个调用。

使用哪个以及何时使用?

最短答案:每当正确配置SceneDelegate(通过向 plist 添加场景引用)时,都会调用SceneDelegate的方法,同时完全忽略(即使你已经实现了)AppDelegate的方法。 否则,将调用AppDelegate方法。

因此,ios12 运行时可以调用SceneDelegate方法,就像 ios13 可以调用AppDelegate方法一样。 这提供了向前和向后兼容性。 没有人会希望App Store中以前工作的应用程序突然停止在iOS 13设备上工作。

在iOS 上调用方法scene(_ scene:, openURLContexts URLContexts:)>= 13。

旧方法application(_ app:, open url:, options:)在 iOS <13 上调用。

因此,除非您只针对iOS 13,否则您必须在两种方法中处理URL。

相关内容

  • 没有找到相关文章

最新更新