【发布时间】:2018-06-20 15:36:12
【问题描述】:
我已按照source1、source2 中提到的指南在我的应用中集成了 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
}
但是对于像https://my328.app.goo.gl/abcXYZ 这样由firebase 创建的默认域工作正常,linkHandled 总是正确的,来自handleUniversalLink 的completion 被调用并且我收到了预期的Deep link(配置在firebase 控制台)在completion。
对于为什么 Firebase 动态链接无法在自定义子域的应用上运行有任何想法吗?除了link 中提到的自定义子域之外,我是否需要配置任何其他内容?
【问题讨论】:
-
您安装了哪个版本的 FDL 库?我想知道旧客户端库是否无法处理自定义子域。
-
@ToddKerpelman 我正在使用 FirebaseDynamicLinks 1.4.0,我的项目的 swift 版本是 3.2。当我从 Pod 文件中删除并重新安装 FirebaseDynamicLinks 时,它仍然只给我 1.4.0,所以我相信我正在使用最新的 FDL 库。仅供参考,我正在使用 Firebase (3.17.0)、FirebaseAnalytics (3.9.0)、FirebaseCore (3.6.0)、FirebaseInstanceID (1.0.10)、FirebaseMessaging (1.2.3)。
-
@ToddKerpelman 你有什么线索吗?
-
是的,那已经很老了。 FDL 库的最新版本是 3.0.1,您可以从 Firebase 5.3.0 获得。您可能想要进行完整的 pod 更新,但请记住,这将包括许多重大更改,因此请确保备份您的 podfile.lock 以备不时之需。
-
@ToddKerpelman 谢谢。出于某种原因,可可豆荚无法让我获得最新版本的 FirebaseDynamicLinks,无论我喜欢从 Pod 文件中删除并重新安装 FirebaseDynamicLinks 或运行 pod update 命令。因此,我从 pod 文件中删除了 FirebaseDynamicLinks 并运行了命令 pod install,它从我的项目中删除了该库,现在我已经从 firebase 控制台下载了 FirebaseDynamicLinks 框架并将其手动集成到我的项目中。现在有了新的 FirebaseDynamicLinks SDK,带有自定义子域的动态链接在应用程序中运行良好 :) 谢谢!
标签: ios firebase firebase-dynamic-links