2017-08-23 3 views
2

Ich weiß, dass es ein paar andere ähnliche Posts gibt, aber ich habe die Liste der Lösungen ohne Ergebnisse durchlaufen. Meine Android-App verfügt über eine sehr einfache Firebase-Implementierung, die das Token beim Start abrufen und über Callback an die Hauptaktivität zur späteren Verwendung weitergeben soll. Ich habe gehört, dass der Token beim Start generiert werden soll, aber während der ersten App-Installation bekomme ich ihn nie und meine App stürzt ab. Wenn ich meine App erneut installiere (ohne sie vorher zu entfernen), funktioniert alles normal und ich bekomme meinen Token.onTokenRefresh() wird nie bei der ersten App-Installation aufgerufen

Ich habe versucht:

  • Aktualisierung und meine Feuerbasis zu konsolidieren Abhängigkeiten der build.gradle Datei app
  • bestätigen, dass mein Manifest die richtigen Feuerbasis Dienste/Internet Berechtigungen
  • löschen meine Instanz-ID verwendet mit FirebaseInstanceId.getInstance(). deleteInstanceId() vor getToken()
  • Prüfung auf mehrere Entwickler manuell aufrufen gefriert

an meinem logcat während ersten Blick installieren, ich diese beiden Feuerbasis Fehlermeldungen erhalten:

E/FA: Discarding data. Failed to send app launch 
E/FA: Failed to get app instance id 

Mein InstanceIdService:

public class InstanceIDService extends FirebaseInstanceIdService { 

    TokenCallback callback; 

    public void initInstanceIDService(TokenCallback cb) { 
     this.callback = cb; 
    } 

    @Override 
    public void onTokenRefresh() { 
     super.onTokenRefresh(); 

     // Get updated token. 
     String refreshedToken = FirebaseInstanceId.getInstance().getToken(); 

     if (refreshedToken != null) { 
      callback.onTokenReceived(refreshedToken); 
     } 
     //pass token to manager for use during authentication 
     Log.d("Firebase", "Refreshed token: " + refreshedToken); 
    } 

    public interface TokenCallback { 

     void onTokenReceived(String token); 
    } 
} 

Mein Manifest:

/<!-- FCM --> 
     <service 
      android:name="com.traitware.Authentication.Prime.twshell.network.MessagingService"> 
      <intent-filter> 
       <action android:name="com.google.firebase.MESSAGING_EVENT" /> 
      </intent-filter> 
     </service> 
     <service 
      android:name="com.traitware.Authentication.Prime.twshell.network.InstanceIDService"> 
      <intent-filter> 
       <action android:name="com.google.firebase.INSTANCE_ID_EVENT" /> 
      </intent-filter> 
     </service> 

Meine Gradel Abhängigkeiten:

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 

    compile 'com.google.firebase:firebase-core:11.0.4' 
    compile 'com.google.firebase:firebase-messaging:11.0.4' 
    compile 'com.android.support:appcompat-v7:+' 
    compile project(path: ':twlibrary') 
} 

apply plugin: 'com.getkeepsafe.dexcount' 
apply plugin: 'com.google.gms.google-services' 

Ich teste auf physischen Geräten und alle geben das gleiche Verhalten zurück.

Wenn jemand Erfahrung mit diesem Problem hatte, würden alle Vorschläge oder Lösungen sehr geschätzt werden.

+0

Ein paar andere Beiträge, zum Beispiel [this one] (https://Stackoverflow.com/q/45054620/4815718), zeigen die gleichen Fehlermeldungen, anscheinend verursacht durch das Laufen auf einem Gerät, das eine alte Version von hat Google Play-Dienste Enthält Ihr Logcat eine Nachricht für veraltete Google Play-Dienste? –

+0

Mögliches Duplikat von [Firebase FCM force onTokenRefresh() aufgerufen werden] (https://stackoverflow.com/questions/37454501/firebase-fcm-force-ontokennefresh-to-be-) – Yoni

+0

@Bob Snyder - Ich überprüft und Das war das Problem. Ich habe meine Firebase-Abhängigkeiten herabgestuft und das Problem wurde behoben. Wenn Sie Ihren Kommentar als Antwort posten, nehme ich ihn gerne an. Danke für Ihre Hilfe! – deMouser

Antwort

1

Dieses Problem kann auftreten, wenn auf dem Gerät oder Emulator eine alte Version der Google Play-Dienste ausgeführt wird, die nicht mit der Version der verwendeten Firebase-Bibliotheken kompatibel ist. Wenn diese Bedingung vorhanden ist, wird die logcat diese Warnmeldung enthalten:

W/GooglePlayServicesUtil: Google Play services out of date. Requires XXXXXXXX but found XXXXXXXX 

Die Lösung zu aktualisieren ist Dienstleistungen Google Play oder die Version von Firebase degradieren.

Da für die Firebase-APIs eine kompatible Version der Google Play-Dienste erforderlich ist, empfiehlt es sich, das Vorhandensein einer kompatiblen Version während der App-Initialisierung unter Verwendung von GoogleApiAvailability zu bestätigen.

Verwandte Themen