React-Native: Télécharger Image from Firebase Storage

Pré-Informations:

J'ai encore un projet Firebase ouvert et j'utilise toujours la base de données Firebase ( donc, le firebase.initializeApp(config) fonctionne ). J'ai téléchargé plusieurs images dans mon stockage Firebase dans le dossier " / Images / " et les ai nommé image1.jpg , image2.jpg , ..

React-Native: 0.31.0, Firebase: 3.3.0

Ce que je veux:

Je souhaite obtenir l'image à partir du stockage Firebase et les mettre dans un <Image>

Ce que j'ai effectivement fait:

 var storageRef = firebase.storage().ref('Images/image1.jpg'); //1. Try: storageRef.getDownloadURL().then(function(url) { console.log(url); )} //2. Try: var sampleImage = storageRef.getDownloadURL().then(function(url) { console.log(url); )} //3. Try: var sampleImage = storageRef.getDownloadURL(); 

Informations sur le code:

  1. Le code n'atteint pas le point console.log(url)

    2.1. Essayé d'utiliser le sampleImage comme source dans un objet <Image> : Image vide

    2.2. Essayé de log l' sampleImage : undefined

    2.3. Essayé d' log l' url : n'a pas atteint ce point

    3.1. Essayé d'utiliser le sampleImage comme source dans un objet <Image> : Image vide

    3.2. Essayé de log l' sampleImage : { F: 0, ka: undefined, o: { F: 0, ... } }

Toutes les tentatives ont renvoyé le même code d'erreur après 2 ou 3 minutes.

Stockage Firebase: le temps de réessayer pour l'opération est dépassé, réessayez.

Merci beaucoup d'avance pour votre aide.

Votre premier semble juste en fonction des documents. Je crois que vous obtenez une erreur, puis renvoyez un rappel d'erreur aussi:

 storageRef.getDownloadURL().then(function(url) { console.log(url); }, function(error){ console.log(error); }); 

Voir: https://firebase.google.com/docs/reference/js/firebase.storage.Reference#getDownloadURL

Mettre à jour

J'ai signalé ce problème au support de Firebase et j'ai eu la réponse suivante:

Nos ingénieurs ont réussi et il semble que ce soit un problème spécifique à l'Android (fonctionne sur iOS) […] Nous travaillons actuellement à ce sujet, mais quant à la chronologie, nous ne pourrions rien partager à partir du moment

Recherche

Il semble qu'il s'agisse d'un bug réel causé par le XMLHttpRequest de reactive native. En essayant le getDownloadURL () de la même manière que vous décrivez, la même chose se produit (c.-à-d. Le temps de réveil maximal atteint).

Cependant, lors de la réactivité, le polyfill de XMLHttpRequest réagit-native, tel que décrit dans ce thread de débordement de pile getDownloadURL () finit normalement et renvoie une URL valide.

Nous utilisons reactive-native v0.33.0, Firebase v3.4.1

Solution de contournement

Nous avons utilisé cette solution de contournement entre-temps; Contournement de l'API Firebase:

 var bucket = firebase.storage().ref().bucket; var firebaseUrl = "https://firebasestorage.googleapis.com/v0/b/" + bucket + "/o/"; var finalUrl = firebaseUrl + 'path%2Fto%2Fresource'; firebase.auth().currentUser.getToken() .then((token) => { fetch(finalUrl, {headers: {'Authorization' : 'Firebase ' + token}}) .then((response) => response.json()) .then((responseJson) => { var downloadURL = finalUrl + "?alt=media&token=" + responseJson.downloadTokens}) }) }); 

C'est un problème qui semble affecter une petite quantité d'utilisateurs puisque je n'ai vu que le problème soulevé autrement ici . Cependant, cela semble être un bogue réel et il est très débilitant lorsqu'il se produit, de sorte que toute autre entrée serait grandement appréciée.