web-dev-qa-db-fra.com

Avertissement de stockage Firebase: downloadURL () 'est obsolète: utilisez `StorageReference.downloadURLLithAvance ()

Je viens de mettre à jour mon projet avec la dernière version de Firebase Storage et un message d'avertissement s'affiche maintenant:.

J'ai consulté la documentation de téléchargement d'images Firebase, mais celle-ci fait toujours référence à l'utilisation de downloadURL(), qui est maintenant amorti. Dans le code ci-dessous, l'URL de téléchargement de l'image apparaît sous forme de chaîne. Le code fonctionne mais doit maintenant être mis à jour car downloadURL() est amorti

uploadProfilePicTask.observe(.success) { snapshot in

  guard let profilePicStringURL = snapshot.metadata?.downloadURL()?.absoluteString else { return }
  ...

Voici ma tentative mise à jour. J'ai essayé le code ci-dessous avec la nouvelle downloadURLWithCompletion() mais quelque chose dans snapshot.metadata?.storageReference? renvoie nil et je ne peux donc pas récupérer l'URL String. Est-ce que quelqu'un sait comment utiliser la nouvelle downloadURLWithCompletion() de manière appropriée ci-dessous?

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

En gros, n'utilisez pas les métadonnées mais récupérez simplement l'URL après le succès de votre événement d'observation. Comme c'est réussi et que vous savez que c'est là, vous pouvez télécharger l'URL. C'est là dans leur docs à 'Générer une URL de téléchargement'. Ci-dessous, je suppose que votre référence de stockage est 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
                    }
           })
7
kelsheikh

J'ai eu le même problème, mais je l'ai corrigé avec ce code:

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

}
0
Wake App LTD