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

Posted

技术标签:

【中文标题】尽管 Firebase 深层链接成功打开应用程序,但未调用“继续 userActivity”方法【英文标题】:"continue userActivity" method not called, despite Firebase deep link successfully opening app 【发布时间】:2019-07-31 12:37:04 【问题描述】:

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

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

我尝试了this *** post 中建议的解决方案,但没有成功,即在方法声明中将 [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")


我确保 didFinishLaunchingWithOptions 也总是返回 true。

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

【问题讨论】:

你能检查一下你是否在链接点击应用程序上调用了这个方法:openURL:options: ??还有你点击的链接是什么? @m1sh0 ,我点击的链接是 myappname.page.link 后跟应该指示我的应用程序执行操作的链接部分,这将打开我的应用程序。我没有那个方法,但是在我的应用程序中实现它时,当我单击 URL 时也不会调用它... 你发现了吗?我也有同样的问题... 【参考方案1】:

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

我发现这个article 解决了我所有的问题。

基本上,您必须注意,新 SceneDelegate 中的某些方法替换了 iOS 13 之前 AppDelegate 中调用的方法。此外,似乎在某些极端情况下仍可能需要来自 AppDelegate 的方法来处理深度链接处理。

【讨论】:

【参考方案2】:

对于任何需要它的人:

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

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

【讨论】:

嗨,山姆,感谢您的回复。我已经在方法声明中使用 [UIUserActivityRestoring] 和 [Any] 进行了尝试,同样的问题,如原始帖子中所述。您是否确认它适用于最新的 iOS 13 测试版?干杯。【参考方案3】:

对于场景应用程序,请尝试将您的逻辑添加为

func scene(_ scene: UIScene, continue userActivity: NSUserActivity) 
  let handled = DynamicLinks.dynamicLinks().handleUniversalLink(userActivity.webpageURL!)  (dynamiclink, error) in
    //...
  

【讨论】:

以上是关于尽管 Firebase 深层链接成功打开应用程序,但未调用“继续 userActivity”方法的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 上下载应用后,Firebase 深层链接不跟踪链接(延迟深层链接)

Firebase 动态深层链接在安装后到达 nil

Firebase 动态链接未打开应用

在 iOS 上配置 Firebase 应用后,Branch.io 深层链接停止工作

从深层链接启动应用程序时未调用 AppDelegate ContinueUserActivity,应归咎于 Firebase SDK

如何区分 Firebase 动态链接的启动和安装?