簡體   English   中英

Firebase 動態鏈接不會縮短網址

[英]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返回 nil 而我不知道為什么。 我在指南或網上找到的任何東西都沒有引導我走向正確的方向。

我究竟做錯了什么??

我認為是因為以下不正確:

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 並檢查錯誤是否包含一些錯誤,然后您正在打印“短 URL 是:(url)”,這意味着如果short ()成功並且沒有錯誤,您的打印方法將永遠不會被執行。

您需要做的是,首先檢查錯誤是否不包含任何錯誤,而不是調用 print()

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM