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

时间:2018-04-11 01:35:21

标签: ios swift firebase firebase-storage

我刚刚将我的项目更新到最新版本的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字符串。有谁知道如何在下面适当地使用新的downloadURLWithCompletion()

uploadProfilePicTask.observe(.success) { snapshot in
  snapshot.metadata?.storageReference?.downloadURL { URL, error in
    if let urlString = URL?.absoluteString {
      // Do something
    } else {
      return
    }
  }

2 个答案:

答案 0 :(得分:7)

基本上不使用元数据,而只是在您的observe事件成功后获取URL。由于它是成功的,你知道它在那里,你可以下载URL。它们在docs到'生成下载网址'中。下面,我假设您的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
                    }
           })

答案 1 :(得分:0)

我遇到了同样的问题,但是我使用以下代码修复了该问题:

    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)
    }

}
相关问题