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

时间:2018-06-20 15:36:12

标签: ios firebase firebase-dynamic-links

我已按照source1source2中提到的指南在我的应用程序中集成了Firebase动态链接。对于默认域,一切都可以在应用程序上正常运行。

但是,当我在Firebase控制台上创建custom subdomain并在iOS设备上使用它时,它无法按预期运行(即使安装了应用程序)。我在我的Xcode项目的 Capabilities => Associated Domains 上的 applinks:example.page.link 上添加了新的子域。

下面是简单的情况:

1)应用已安装在设备上。

2)点击电子邮件上的动态链接(带有自定义子域)https://example.page.link/abcXYZ

3)它直接打开了应用程序,并且我下面的代码中的linkHandled始终为false,并且从未调用过completion函数中的handleUniversalLink

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
  }

但是对于由Firebase创建的默认域(如https://my328.app.goo.gl/abcXYZ可以正常工作,linkHandled始终为真,调用了completion的{​​{1}},我收到了预期的结果handleUniversalLink上的Deep link(在firebase控制台上配置)。

对于Firebase动态链接为何无法在应用程序上使用自定义子域的任何想法?对于自定义子域,我是否需要配置link之外的其他内容?

2 个答案:

答案 0 :(得分:5)

如果自定义域不起作用,而 Google 域不起作用,则需要将 FirebaseDynamicLinksCustomDomains 键添加到<适用于iOS的strong> info.plist

<key>FirebaseDynamicLinksCustomDomains</key>
<array>
  <string>https://custom-domain.com</string>
</array>
  

参考:https://firebase.google.com/docs/dynamic-links/custom-domains

答案 1 :(得分:3)

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

  

我之所以认为我使用最新的FDL库和   无法确定我正在使用旧的FDL库是CocoaPods(a   iOS项目的依赖管理器,read more)无法让我   无论出于何种原因,最新版本的FirebaseDynamicLinks   我喜欢从Pod文件中删除并重新安装FirebaseDynamicLinks   或运行pod update命令。因此,我删除了FirebaseDynamicLinks   从pod文件中并运行命令pod install,它删除了该库   从我的项目中,现在我已经下载了FirebaseDynamicLinks   firebase控制台创建框架并将其手动集成到我的   项目。现在,使用新的FirebaseDynamicLinks SDK,可以动态链接   自定义子域在应用程序中运行正常。