通用链接似乎没有调用任何AppDelegate函数来进一步处理Deeplink

问题描述 投票:0回答:1

我在我的应用程序中成功实现了通用链接(例如,它使用 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 swift swiftui deep-linking ios-universal-links
1个回答
0
投票

基于场景的 iOS 应用程序不会调用应用程序委托的上述方法。

如果您的应用程序选择了Scenes,并且您的应用程序未运行,系统会在启动后将通用链接传递到scene(_:willConnectTo:options:)委托方法,并传递到scene(_:continue) :) 当您的应用程序在内存中运行或暂停时点击通用链接时。

请参阅 Apple 的文章 在应用程序中支持通用链接

如果您的应用程序还没有 UISceneDelegate,有多种方法可以添加。 Apple 在链接的

UISceneDelegate
文档中描述了它们。

对于简单的情况,您还可以将 onOpenURL 方法与 SwiftUI 结合使用。

© www.soinside.com 2019 - 2024. All rights reserved.