java android firebase firebase-storage

java - ¿Cómo obtener la url de descarga desde Firebase Storage?



android firebase-storage (1)

Quiero obtener la URL de descarga desde el método uploadTask.addOnProgressListener de Firebase. ¿Cómo puedo obtener la URL de descarga usando el siguiente código?

UploadTask uploadTask = storageRef.putBytes(data); uploadTask.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() { @Override public void onProgress(UploadTask.TaskSnapshot taskSnapshot) { Log.d("aaaaasessin",""+taskSnapshot.getTask().getResult()); } });

Utilicé taskSnapshot.getTask().getResult() pero eso no está funcionando.


Para obtener la url de descarga, necesita usar addOnSuccessListener , como en las siguientes líneas de código:

uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { @Override public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { storageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() { @Override public void onSuccess(Uri uri) { String url = uri.toString(); //Do what you need to do with url } }); } });

Como en las notas de lanzamiento de Firebase del 23 de mayo de 2018, se menciona que:

Cloud Storage versión 16.0.1

Se eliminaron los métodos StorageMetadata.getDownloadUrl () y UploadTask.TaskSnapshot.getDownloadUrl () en desuso. Para obtener una URL de descarga actual, use StorageReference.getDownloadUr ().

Así que ahora, al llamar a getDownloadUrl() en un objeto StorageReference , devuelve un objeto Task y ya no un objeto Uri.

Además, recuerde que no se llamará al oyente de éxito ni al que escucha la falla (si tiene intención de usarlo) si su dispositivo no puede acceder al servidor de Firebase Storage. Los escuchas de éxito / fracaso solo serán llamados una vez que los datos sean confirmados o rechazados por los servidores Firebase.