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

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

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

我尝试了this StackOverflow 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 时也不会调用它...
  • 你发现了吗?我也有同样的问题...

标签: ios swift firebase appdelegate firebase-dynamic-links


【解决方案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
        //...
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-08-30
      • 2016-05-10
      • 2018-02-12
      • 2020-07-23
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 2017-11-16
      • 1970-01-01
      相关资源
      最近更新 更多