2016-05-31 9 views
5

Ich verwende:Firebase Speicher FirebaseApiNotAvailableException wiederholt im Protokoll, wenn offline

compile "com.google.firebase:firebase-core:9.0.1" 
compile "com.google.firebase:firebase-storage:9.0.1" 

Und das ist der Code, den ich dieses offline (kein Internet) mit dem Gerät auszuführen:

StorageReference mStorageRef = FirebaseStorage.getInstance().getReferenceFromUrl([MY_URL]); 
mStorageRef.child("my_file.json").getBytes(Long.MAX_VALUE) 
.addOnSuccessListener(bla bla bla).addOnFailureListener(more bla bla) 

Ich bekomme diese Nachricht wiederholt in meinem Protokoll jede Sekunde:

W/ExponenentialBackoff: network unavailable, sleeping. 
E/StorageUtil: error getting token java.util.concurrent.ExecutionException: com.google.firebase.FirebaseApiNotAvailableException: firebase-auth is not linked, please fall back to unauthenticated mode. 

Ist dies ein Fehler oder erwartetes Verhalten? Ich weiß, wenn ich offline bin, bekomme ich die Remote-Datei nicht, aber warum versucht der Firebase-Code jede Sekunde zu pollen?

Hinweis: Wenn ich wieder online gehe, führt es den Erfolgs-/Fehler-Listener aus und beendet die Abfrage.

Antwort

5

Entschuldigung für die Protokollüberlastung. Der erste (W/ExponenentialBackoff) muss etwas verkleinert werden (wir planen in Zukunft eine bessere Client-seitige Protokollierung), während der zweite (E/StorageUtil) durch Verknüpfung der Firebase-Authentifizierung bereinigt werden kann: compile "com.google.firebase:firebase-auth:9.0.1".

+2

Wenn Sie "Verknüpfung der Firebase-Authentifizierung" sagen, bedeutet dies, dass nur die Abhängigkeit in der Gradle-Datei hinzugefügt wird oder muss ich noch etwas anderes tun? Meine gespeicherte Firebase-Datei enthält Regeln zum Lesen von öffentlichem Zugriff (keine Schreibberechtigungen). Danke für die Antwort! –

+3

Alles, was Sie tun müssen, ist, die Abhängigkeit zu verknüpfen, damit der Fehler verschwindet, obwohl Sie richtig sind, wenn Sie alles öffentliche Lesen/Schreiben haben, brauchen Sie keine Authentifizierung. In Zukunft werden wir das aus den Protokollen entfernen. –

+0

@MikeMcDonald Ich habe genau das gleiche Problem mit dem OP, und die Auth-Abhängigkeit hat das nicht behoben. Der onFailure() - Listener wird nicht aufgerufen, wenn der Benutzer nicht mit dem Internet verbunden ist. Wie werden wir dieses Ereignis also abfangen? – MScott

0

Google Play-Dienste aktualisiert auf 9.0.2 Die Version 9.0.2 der Google Play-Dienste ist jetzt verfügbar. Diese Version behebt ein bekanntes Problem mit der Firebase-Authentifizierung, bei dem auf einigen Geräten die FirebaseAuthApi nicht verfügbar ist. Ein FirebaseApiNotAvailableException Fehler tritt auf, wenn diese Geräte versuchen, Authentifizierungs-APIs zu verwenden.