尽管 Firebase 深层链接成功打开应用程序,但未调用“继续 userActivity”方法

m17*_*179 6 ios firebase appdelegate swift firebase-dynamic-links

我正在使用 Firebase 的深层链接来尝试在用户点击发送给他们的链接时在我的应用程序中提供特定功能。深层链接已在 Firebase 门户网站上正确设置。

单击发送给用户的链接确实会打开我的应用程序,但不会触发continue userActivity我的应用程序委托中的方法,因为其中包含的代码都没有被执行。

我已经尝试了此 StackOverflow 帖子中建议的解决方案,但没有成功,即将方法声明中的 [UIUserActivityRestoring] 切换为 [Any]。

在 Xcode 中,我设置了关联的域以匹配我在 Firebase 上设置的内容applinks:myappname.page.link:我添加了一个带有标识符“Bundle ID”的“URL 类型”,以及ca.mycompany.myappname带有角色编辑器的 URL 方案。

当然,所有这些都在设备上运行,因为我不希望这在模拟器中起作用。

这是我的应用程序委托中应该调用的方法,但实际上没有。

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
print ("The link worked")

}
Run Code Online (Sandbox Code Playgroud)

我也确保didFinishLaunchingWithOptions始终返回 true。

我希望“链接有效”实际打印在调试控制台中,但事实并非如此。断点表明该方法根本没有被调用,因为永远不会到达断点。

Hel*_*imo 6

这是一个很好的变化,面临这个问题的人也处理 iOS13 / SwiftUI。就像我。

我发现这篇文章解决了我所有的问题。

基本上,您必须意识到新 SceneDelegate 中的某些方法取代了 iOS 13 之前 AppDelegate 中调用的方法。此外,似乎仍然存在一些边缘情况,可能仍然需要 AppDelegate 中的方法来处理深度链接处理。


Sam*_*Sam 1

对于任何需要它的人:

您需要使用下面的代码来处理从链接到已安装的应用程序的深层链接(其他功能应用程序用于不同的事情)

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