iOS动态链接构建器说明?

时间:2017-04-30 02:49:10

标签: firebase firebase-dynamic-links

我试图弄清楚如何使用Firebase's Dynamic Links for iOS向iOS应用程序中的人发送自定义深层链接。但是,文档没有任何评论,我对从参数创建长链接下提供的长代码有何疑惑。没有一条评论,连续约有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究竟来自哪里以及其他部分完成了什么?

1 个答案:

答案 0 :(得分:10)

Firebase动态链接文档非常糟糕。通过深入了解Firebase公共API,我了解它是如何工作的。

P.S here是整个启动项目,此片段是从中剪切的。

重要字段的说明

  • 链接是一个网址对象,其中包含您要通过参数传递的链接。 Watch了解更多信息。

  • 是一个字符串,其中包含可在firebase控制台中找到的动态链接域。 (它是 app .goo.gl的链接)

  • bundleID 是您应用的捆绑ID。它可以在您的Xcode项目中找到。

  • 后备网址仅在您未安装应用而不是应用商店页面时才能打开自定义网址时设置。

  • 最低应用版本来自API文档:

      

    可以打开链接的应用的最低版本。如果安装的应用程序是旧版本,则会将用户带到AppStore以升级应用程序。注意:当收到的链接声明比当前安装的更高的minimunAppVersion更高时,应用程序的开发人员负责打开AppStore。

  • 自定义方案再次引用API文档:

      

    目标应用的自定义网址方案,如果被定义为应用程序的软件包ID以外的其他方式。

  • 如果你有不同的iPad应用程序,则设置
  • iPad套装ID和iPad后备网址

  • 所有 appStoreParams 都应该在你的itunes连接页面中找到。

  • 如果您还有Android应用,请设置 androidParams

此外,这部分在文档中非常模糊:

FIROptions.default().deepLinkURLScheme 

此字段应设置为您在URL类型下的信息部分中的Xcode项目中设置的方案。