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