当动态链接具有自定义子域时,Firebase 动态链接在 iOS 上不起作用

Ash*_*hok 10 ios firebase firebase-dynamic-links

我在我的应用程序集成火力动态链接按中提到的准则来源1源2。对于默认域,应用程序上的一切都按预期工作。

但是,当我在 firebase 控制台上创建自定义子域并在 iOS 设备上使用它时,它无法按预期工作(即使安装了应用程序)。我已经加入像新的子applinks:example.page.link能力=>相关网域在我的Xcode项目。

下面是直接场景:

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
  }
Run Code Online (Sandbox Code Playgroud)

但是对于由 firebase 创建的默认域,如https://my328.app.goo.gl/abcXYZ工作正常,linkHandled总是正确的,completionfromhandleUniversalLink被调用,我Deep linkcompletion.

关于为什么 Firebase 动态链接不适用于自定义子域的应用的任何想法?除了自定义子域的链接中提到的之外,我是否需要配置任何其他内容?

Dar*_*ech 14

如果自定义域不起作用而Google域起作用,那么您需要将FirebaseDynamicLinksCustomDomains键添加到iOS的info.plist

<key>FirebaseDynamicLinksCustomDomains</key>
<array>
  <string>https://custom-domain.com</string>
</array>
Run Code Online (Sandbox Code Playgroud)

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


Ash*_*hok 4

这是因为我使用的是旧的 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,具有自定义子域的动态链接可以在应用程序中正常工作。