我已经设置了应用程序来处理通用链接。我们处理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,但似乎都没有被调用。
有人对此有任何想法吗?
谢谢!
答案 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 }
}