来自封闭应用程序的通用链接不起作用

Log*_*gan 5 appdelegate swift ios-universal-links

我有我的应用程序设置来处理通用链接。我们处理 URL 的检索,以及在此函数中给定 URL 的导航:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
        guard NSUserActivityTypeBrowsingWeb == userActivity.activityType, let url = userActivity.webpageURL else {
            return false
        }
        // Do navigation to correct page based on URL
        return true
    }
Run Code Online (Sandbox Code Playgroud)

当我们的应用程序之前在后台运行时,这对我们来说非常有效,并且点击了一个通用链接。

但是,当我完全终止应用程序并单击通用链接时,此功能似乎没有运行,因此它根本不处理通用链接,它只是将用户带到主页选项卡。

我试过抓取其中的 URL application(didFinishLaunchingWithOptions:)application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:])但似乎也没有调用它们。

有没有人对此有任何想法?

谢谢!

小智 13

Swift 5 IOS 14当应用程序终止时使用

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        // Get URL components from the incoming user activity.
        guard let userActivity = connectionOptions.userActivities.first,
              userActivity.activityType == NSUserActivityTypeBrowsingWeb,
              let incomingURL = userActivity.webpageURL
        else { return }
        DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
            LinkHandler.sharedInstance.handleLink(url: incomingURL)
        }
        guard let _ = (scene as? UIWindowScene) else { return }
    }
Run Code Online (Sandbox Code Playgroud)


小智 1

url位于application(didFinishLaunchingWithOptions:)选项内。请再测试一下。

Apple 文档:launchOptions 指示应用程序启动原因的字典(如果有)。在用户直接启动应用程序的情况下,该字典的内容可能为空。有关此字典中可能的键以及如何处理它们的信息,请参阅启动选项键。

https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1622921-application