我刚刚将我的项目更新到最新版本的Firebase Storage,现在收到警告:downloadURL(( 已弃用:使用 StorageReference.downloadURLWithCompletion(( 获取当前下载 URL。
我查看了Firebase图片上传文档,但它仍然引用了现在已弃用的downloadURL()
。在下面的代码中,我以字符串形式获取图像的下载 URL。代码有效,但现在要更新,因为downloadURL()
已弃用
uploadProfilePicTask.observe(.success) { snapshot in
guard let profilePicStringURL = snapshot.metadata?.downloadURL()?.absoluteString else { return }
...
这是我尝试更新的。我用新downloadURLWithCompletion()
尝试了下面的代码,但snapshot.metadata?.storageReference?
中的某些内容返回 nil,所以我无法检索 url 字符串。有谁知道如何在下面正确使用新downloadURLWithCompletion()
?
uploadProfilePicTask.observe(.success) { snapshot in
snapshot.metadata?.storageReference?.downloadURL { URL, error in
if let urlString = URL?.absoluteString {
// Do something
} else {
return
}
}
基本上不使用元数据,而只是在观察事件成功后获取 URL。由于它很成功并且您知道它在那里,因此您可以下载 URL。他们的文档中有"生成下载 URL"的内容。 下面,我假设您的存储引用是uploadProfilePicTask。
uploadProfilePicTask.downloadURL(completion: { (url, error) in
if (error == nil) {
if let downloadUrl = url {
// Make you download string
let downloadString = downloadUrl.absoluteString
}
} else {
// Do something if error
}
})
遇到了同样的问题,但我用这段代码修复了它:
uploadTask.observe(.success) { snapshot in
guard let imageURL = snapshot.metadata?.storageReference?.downloadURL(completion: { (url, error) in if error != nil {
print(error as Any)
} else { //add all you want
}
}) else { return }
let imageStr = String(describing: imageURL)
DBService.manager.updatePhoto(profileImageUrl: imageStr)
AuthService.manager.updatePhoto(urlString: imageStr)
}
}