swift - 如何以编程方式在 Firebase 中创建动态链接?迅速
问题描述
我想创建一个火力基地动态,但我不能得到错误components.shorten
操作无法完成。长链接不可解析。
我正在关注 firebase 文档,但我可以获得预期的结果。
@IBAction func createGroupAction(_ sender: Any) {
let dynamicLinkDomain = "https://a5481.app.goo.gl/"
let appBundleID = "com.vividapartments.myStr.com"
let params:[String : String] = [
"ibi": appBundleID,
"isi": "1222420082",
"efr":"1",
"groupID":"-LDSfWKKbWjyrXiFljT3",
"chatID":"-LDSfWKMbm9mSE2a6EIe"
]
// general link params
let urlParams = params.flatMap ({ (key,value) -> String in
return "\(key)=\(value)"
}).joined(separator: "&")
guard let deepLink = URL(string:"https://www.mystr.com/groups?\(urlParams)") else {return}
print("deepLink is \(deepLink)")
//prints:
//deepLink is https://www.mystr.com/groups?isi=1222420082&chatID=-LDSfWKMbm9mSE2a6EIe&efr=1&ibi=com.vividapartments.myStr.com&groupID=-LDSfWKKbWjyrXiFljT3
let components = DynamicLinkComponents(link: deepLink, domain: dynamicLinkDomain)
let iOSParams = DynamicLinkIOSParameters(bundleID: appBundleID)
iOSParams.minimumAppVersion = "1.5"
components.iOSParameters = iOSParams
//1. Build the dynamic long link
let longlLink = components.url
print("The long link is \(longlLink!)")
//prints:
//The long link is https://https://a5481.app.goo.gl//?link=https%3A%2F%2Fwww%2Emystr%2Ecom%2Fgroups%3Fisi%3D1222420082%26chatID%3D%2DLDSfWKMbm9mSE2a6EIe%26efr%3D1%26ibi%3Dcom%2Evividapartments%2EmyStr%2Ecom%26groupID%3D%2DLDSfWKKbWjyrXiFljT3&ibi=com%2Evividapartments%2EmyStr%2Ecom&imv=1%2E5
//Set the length of a short Dynamic Link
let options = DynamicLinkComponentsOptions()
options.pathLength = .unguessable
components.options = options
//2. Or create a shortened dynamic link
components.shorten { (shortURL, warnings, error) in
if let error = error {
print("error is \(error.localizedDescription)")
//prints:
//error is The operation couldn’t be completed. Long link is not parsable: https://https://a5481.app.goo.gl//?link=https%3A%2F%2Fwww%2Emystr%2Ecom%2Fgroups%3Fisi%3D1222420082%26chatID%3D%2DLDSfWKMbm9mSE2a6EIe%26efr%3D1%26ibi%3Dcom%2Evividapartments%2EmyStr%2Ecom%26groupID%3D%2DLDSfWKKbWjyrXiFljT3&ibi=com%2Evividapartments%2EmyStr%2Ecom&imv=1%2E5
return
}
// TODO: Handle shortURL.
print("shortURL is \(String(describing: shortURL))")
}
}
解决方案
感谢您在评论中包含输出,这样可以很容易地发现错误。
- 只包含动态链接域中的域,例如
let dynamicLinkDomain = "a5481.app.goo.gl"
- 进一步测试:您可以通过在长链接的末尾添加“&d = 1”并将其粘贴到浏览器中来调试长链接。
推荐阅读
- javascript - symfony - 键为“0,1,2,3,4,5,6”的数组的键“id”不存在
- python - Python:忽略用户的输入
- python - 为什么“使用 python 与操作系统交互”的第 1 周 Qwiklabs 评估:使用 Python 代码无法正常工作
- ios - UIKit 和 Cocoa Touch 有什么区别?
- python - 如何使用可变参数测试 Pandas 函数
- magento - 如何以编程方式将 youtube 或 vimeo 视频分配给 magento 2 中的产品?
- node.js - 不能将 $inc 与 bulkWrite 有效负载映射一起使用?
- python - 你能帮我解决这个 Python 代码的时间复杂度吗?
- amazon-web-services - 亚马逊 AWS Polly:TTS 确切持续时间
- ios - iOS自定义导航栏后退按钮标题在点击时消失