我正在尝试弄清楚如何使用firebase的动态链接供iOS向我的iOS应用程序发送自定义的deeplinks。但是,该文档没有任何注释,我对中的长片段>创建一个从参数创建长链接的代码有些困惑。连续大约有30行没有任何评论。
guard let linkString = dictionary[.link]?.text else { return }
guard let link = URL(string: linkString) else { return }
guard let domain = dictionary[.domain]?.text else { return }
let components = FIRDynamicLinkComponents(link: link, domain: domain)
let analyticsParams = FIRDynamicLinkGoogleAnalyticsParameters(
source: dictionary[.source]?.text ?? "", medium: dictionary[.medium]?.text ?? "",
campaign: dictionary[.campaign]?.text ?? "")
analyticsParams.term = dictionary[.term]?.text
analyticsParams.content = dictionary[.content]?.text
components.analyticsParameters = analyticsParams
if let bundleID = dictionary[.bundleID]?.text {
let iOSParams = FIRDynamicLinkIOSParameters(bundleID: bundleID)
if let fallbackURL = dictionary[.fallbackURL]?.text {
iOSParams.fallbackURL = URL(string: fallbackURL)
}
iOSParams.minimumAppVersion = dictionary[.minimumAppVersion]?.text
iOSParams.customScheme = dictionary[.customScheme]?.text
iOSParams.iPadBundleID = dictionary[.iPadBundleID]?.text
if let iPadFallbackURL = dictionary[.iPadFallbackURL]?.text {
iOSParams.iPadFallbackURL = URL(string: iPadFallbackURL)
}
iOSParams.appStoreID = dictionary[.appStoreID]?.text
components.iOSParameters = iOSParams
let appStoreParams = FIRDynamicLinkItunesConnectAnalyticsParameters()
appStoreParams.affiliateToken = dictionary[.affiliateToken]?.text
appStoreParams.campaignToken = dictionary[.campaignToken]?.text
appStoreParams.providerToken = dictionary[.providerToken]?.text
components.iTunesConnectParameters = appStoreParams
}
if let packageName = dictionary[.packageName]?.text {
let androidParams = FIRDynamicLinkAndroidParameters(packageName: packageName)
if let androidFallbackURL = dictionary[.androidFallbackURL]?.text {
androidParams.fallbackURL = URL(string: androidFallbackURL)
}
if let minimumVersion = dictionary[.minimumVersion]?.text, let intVersion = Int(minimumVersion) {
androidParams.minimumVersion = intVersion
}
components.androidParameters = androidParams
}
let socialParams = FIRDynamicLinkSocialMetaTagParameters()
socialParams.title = dictionary[.title]?.text
socialParams.descriptionText = dictionary[.descriptionText]?.text
if let imageURL = dictionary[.imageURL]?.text {
socialParams.imageURL = URL(string: imageURL)
}
components.socialMetaTagParameters = socialParams
longLink = components.url
print(longLink?.absoluteString ?? "")
顶部的dictionary
到底是哪里来的?
firebase动态链接文档确实很糟糕。我通过潜入firebase公共API来了解它是如何工作的。
p.s这是整个起动器项目,此摘要是从。
剪切的。重要字段的解释
链接是一个URL对象,其中包含要通过参数通过的链接。观看更多信息。
域是一个包含您动态链接域的字符串,可以在firebase控制台中找到。(这是 app .goo.gl的链接(
BundleId 是您的应用程序捆绑包ID。它可以在您的Xcode项目中找到。
sholdback URLS 仅在未安装应用程序而不是App Store Page时打开自定义URL时才能设置。
最小应用版本来自API文档:
可以打开链接的应用程序的最低版本。如果已安装的应用程序是较旧的版本,则将用户带到AppStore升级应用程序。注意:在收到链接时,打开AppStore是App的开发人员责任声明比当前安装的更高。
自定义方案再次引用API文档:
如果定义为应用程序的捆绑包ID,则目标应用程序的自定义URL方案。
iPad Bundle ID和iPad后备URL 如果您对iPad有不同的应用程序。
所有 AppStoreParams 都应在iTunes Connect页面中找到。
设置 AndroidParams 如果您也有Android App。
此外,该部分在文档中非常含糊:
FIROptions.default().deepLinkURLScheme
应将此字段设置为您在URL类型下的信息部分中的Xcode项目中设置的方案。