首页 文章

当动态链接具有自定义子域时,Firebase动态链接无法在iOS上运行

提问于
浏览
2

我已根据source1source2中提到的指南在我的应用中集成了firebase动态链接 . 一切都在默认域的应用程序上按预期工作 .

但是当我在firebase控制台上创建一个custom subdomain并在iOS设备上使用它时,它没有按预期工作(即使安装了应用程序) . 我在我的Xcode项目的 Capabilities=>Associated Domains 上添加了像 applinks:example.page.link 这样的新子域 .

以下是直线情景:

1)应用程序安装在设备上 .

2)在电子邮件上点击动态链接(使用自定义子域名)https://example.page.link/abcXYZ .

3)它直接打开应用程序和 linkHandled 在我的下面的代码总是 falsecompletionhandleUniversalLink 函数永远不会被调用 .

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

    if let incomingURL = userActivity.webpageURL {
      let linkHandled = FIRDynamicLinks.dynamicLinks()?.handleUniversalLink(incomingURL, completion: { (dynamiclink, error) in
        if let dynamiclink = dynamiclink, let _ =  dynamiclink.url {
          self.handleIncomingDynamicLink(dynamiclink: dynamiclink)
        }
      })

      return linkHandled
    }

    return false
  }

但是对于像https://my328.app.goo.gl/abcXYZ这样的firebase创建的默认域工作正常, linkHandled 始终为真, handleUniversalLinkhandleUniversalLink 被调用,我在 completion 上收到了预期的 Deep link (在firebase控制台上配置) .

有关为什么Firebase动态链接无法在自定义子域的应用程序上运行的任何想法?我是否需要为link配置除自定义子域名之外的其他内容?

1 回答

  • 3

    这是因为我使用的FirebaseDynamicLinks 1.4.0已经过时了 . 当我更新到FDL库3.0.1时,带有自定义子域的动态链接在应用程序中正常工作 .

    我之所以认为我使用最新的FDL库并且无法确定我使用旧的FDL库是因为CocoaPods(iOS项目的依赖管理器,阅读更多)无法获得最新版本的FirebaseDynamicLinks出于某种原因,无论我喜欢从Pod文件中删除并重新安装FirebaseDynamicLinks或运行pod update命令 . 因此,我从pod文件中删除了FirebaseDynamicLinks并运行命令pod install,它从我的项目中删除了该库,现在我从firebase控制台下载了FirebaseDynamicLinks框架并将其手动集成到我的项目中 . 现在有了新的FirebaseDynamicLinks SDK,带有自定义子域的动态链接在应用程序中运行良好 .

相关问题