我刚刚将我的项目更新到最新版本的Firebase存储,现在我收到一条警告:不推荐使用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 String。有谁知道如何在下面适当使用新的downloadURLWithCompletion()
?
uploadProfilePicTask.observe(.success) { snapshot in
snapshot.metadata?.storageReference?.downloadURL { URL, error in
if let urlString = URL?.absoluteString {
// Do something
} else {
return
}
}
基本上不使用元数据,而只是在您的observe事件成功后获取URL。由于它是成功的,你知道它在那里,你可以下载URL。在他们的docs中有'生成下载URL'。下面,我假设您的StorageReference是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)
}
}