当用户点击发送给他们的链接时,我正在使用Firebase的深度链接来尝试在我的应用程序中提供特定的功能。在Firebase web门户上正确设置了深度链接。
单击发送给用户的链接确实会打开我的应用程序,但不会触发我的应用程序委托中的continue userActivity方法,因为其中包含的任何代码都不会被执行。
我已经尝试了this StackOverflow post中建议的解决方案,但没有成功,那就是在方法声明中将UIUserActivityRestoring切换为Any。
在Xcode中,我设置了相关联的域,以匹配我在Firebase上设置的值:applinks:myappname.page.link;我使用角色编辑器添加了一个带有标识符"Bundle ID“的"URL type”和URL方案ca.mycompany.myappname。
当然,所有这些都是在设备上运行的,因为我不希望这在模拟器中工作。
这是我的应用委托中的方法,它应该被调用,但是没有被调用。
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
print ("The link worked")
}我确保didFinishLaunchingWithOptions总是返回true。
我期望在调试控制台中实际打印出"The link worked“,但它并没有。断点表示该方法根本没有被调用,因为断点从未到达过。
发布于 2020-02-03 01:39:47
有一个很好的变化是,面对这个问题的人也可以处理iOS13 / SwiftUI。就像我一样。
我找到了这个article,它解决了我所有的问题。
基本上,你必须意识到,来自新SceneDelegate的一些方法替换了iOS 13之前的AppDelegate中的调用。此外,似乎在一些边缘情况下,仍然需要来自AppDelegate的方法来处理深度链接处理。
发布于 2019-08-19 22:56:33
对于任何需要它的人:
你需要使用下面的代码来处理从链接到已经安装的应用程序的深层链接(其他函数应用程序用于不同的功能)
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { let handled = DynamicLinks.dynamicLinks().handleUniversalLink(userActivity.webpageURL!) { (dynamiclink, error) in // ... } return handled }
https://firebase.google.com/docs/dynamic-links/ios/receive #6
发布于 2021-04-12 04:55:12
对于场景应用程序,尝试将您的逻辑添加为
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
let handled = DynamicLinks.dynamicLinks().handleUniversalLink(userActivity.webpageURL!) { (dynamiclink, error) in
//...
}
}https://stackoverflow.com/questions/57290911
复制相似问题