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

时间:2019-02-26 22:05:14

标签: swift appdelegate 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
    }

当我们的应用程序先前在后台运行并且点击了通用链接时,这对我们来说非常合适。

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

我尝试获取application(didFinishLaunchingWithOptions:)application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:])中的URL,但似乎都没有被调用。

有人对此有任何想法吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

application(didFinishLaunchingWithOptions:)上,URL位于选项内。 请再次测试。

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

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

答案 1 :(得分:0)

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 }
    }