Firebase 动态链接未缩短 URL

Firebase Dynamic Links not shortening URL

我正在尝试使用以下代码获取动态链接以缩短我的 URL:

guard let link = URL(string: "https://myapp.com") else { return }
let dynamicLinksDomainURIPrefix = "https://app.myapp.com/link"
let linkBuilder = DynamicLinkComponents(link: link, domainURIPrefix: dynamicLinksDomainURIPrefix)
linkBuilder?.iOSParameters = DynamicLinkIOSParameters(bundleID: "com.myapp.ios")

guard let longDynamicLink = linkBuilder?.url else { return }
print("The long URL is: \(longDynamicLink)")

let options = DynamicLinkComponentsOptions()
options.pathLength = .short
linkBuilder?.options = options
linkBuilder?.shorten() { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

打印长 URL 正常,但下面的行(简称 URL)从未被调用:

print("The short URL is: \(url)")

因为url returns 没有而且我不知道为什么。我在指南或网上找到的任何内容都没有引导我走向正确的方向。

我做错了什么??

我认为是因为以下内容不正确:

guard let url = url, error != nil else { return }

你是说确保有一个非零 URL 并确保有一个错误。

我认为 Firebase 文档是错误的。相反,你想要:

guard let url = url, error == nil else { return }

你在这里做了什么:

linkBuilder?.shorten() { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

你是在展开 url 并检查错误是否包含一些错误,那么你正在打印 'The short URL is: (url)' 这意味着如果 shorten() 成功并且没有错误你的打印方法将永远不会被执行。

你要做的是,首先检查错误是否不包含任何错误然后调用 print()

linkBuilder?.shorten() { url, warnings, error in
  guard error == nil else { return }
  if let shortUrl = url {
      print("The short url is \(shortUrl)")
  }
}