Firebase 存储警告:不推荐使用 downloadURL():使用 'StorageReference.downloadURLWithCompletion()



我刚刚将我的项目更新到最新版本的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)
    }
}

相关内容

  • 没有找到相关文章

最新更新