[英]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.