我已按照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
}
但是对于由Firebase创建的默认域(如https://my328.app.goo.gl/abcXYZ可以正常工作,linkHandled
始终为真,调用了completion
的{{1}},我收到了预期的结果handleUniversalLink
上的Deep link
(在firebase控制台上配置)。
对于Firebase动态链接为何无法在应用程序上使用自定义子域的任何想法?对于自定义子域,我是否需要配置link之外的其他内容?
答案 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,可以动态链接 自定义子域在应用程序中运行正常。