我在我的应用程序中成功实现了通用链接(例如,它使用 URL 链接而不是 Safari 打开应用程序)。不过,我正在尝试将其扩展到 Deeplink。 Afaik,我应该能够在这个函数中做到这一点:
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool
但是,这个函数甚至没有被我调用。我用一堆从未被调用的打印和日志语句验证了这一点。我曾多次尝试修改通用链接的实现,但似乎找不到问题。希望有任何见解。
我尝试实施
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool
但是打开 URL 时甚至不会调用该函数
基于场景的 iOS 应用程序不会调用应用程序委托的上述方法。
如果您的应用程序选择了Scenes,并且您的应用程序未运行,系统会在启动后将通用链接传递到scene(_:willConnectTo:options:)委托方法,并传递到scene(_:continue) :) 当您的应用程序在内存中运行或暂停时点击通用链接时。
请参阅 Apple 的文章 在应用程序中支持通用链接
如果您的应用程序还没有 UISceneDelegate,有多种方法可以添加。 Apple 在链接的
UISceneDelegate
文档中描述了它们。
对于简单的情况,您还可以将 onOpenURL 方法与 SwiftUI 结合使用。