2017-04-19 7 views
0

So habe ich meine App läuft und Benachrichtigung funktioniert zunächst gut. Aber nach einer Weile hörte es einfach auf.Firebase-Erfolg, aber keine Benachrichtigung erhalten

Ich habe versucht, Senden über die Firebase-Konsole und es gibt Erfolg zurück, aber keine Benachrichtigung wurde von der Anwendung empfangen. Die Anwendung war im Hintergrund und es funktionierte früher, weder auf der App noch auf der Serverseite wurde ein Code geändert.

Wenn ich die App neu installiere (ein neues Token erhalten), würde die Benachrichtigung auf normal (funktioniert wie vorgesehen) zurückkehren, aber wenn das Token abläuft, sollte die Firebase-Konsole keinen Fehler zurückgeben (Registrierungstokenfehler oder etwas)?

Und es ist nur ein paar Tage her, seit ich die Anwendung verwendet habe, warum sollte der Token ablaufen (Dokumentation besagt, dass Token in 6 Monaten ablaufen würde)? Und ich weiß, dass es ein schlechter Ansatz ist, um jedes Mal, wenn ein Benutzer meine App aufruft, eine Token-Aktualisierung zu erzwingen.

Also habe ich etwas falsch gemacht? Ursache, wenn ich meine App debugge alles funktioniert gut. Habe das Token, habe die Benachrichtigung bekommen.

Und ja, Senden der Benachrichtigung über FCM-Konsole und über Server das gleiche Ergebnis; Erfolg, aber keine Benachrichtigung.

der onTokenRefresh Code looklike dies:

namespace FCMClient 
{ 
    [Service] 
    [IntentFilter(new[] { "com.google.firebase.INSTANCE_ID_EVENT" })] 
    public class MyFirebaseIIDService : FirebaseInstanceIdService 
    { 
     const string TAG = "MyFirebaseIIDService"; 
     public override void OnTokenRefresh() 
     { 
      var refreshedToken = FirebaseInstanceId.Instance.Token; 
      Log.Debug(TAG, "Refreshed token: " + refreshedToken); 
      SendRegistrationToServer(refreshedToken); 
     } 
     void SendRegistrationToServer(string token) 
     { 
      //a post request to my server 

     } 
    } 
} 

Vielen Dank für jede Einsicht.

+0

Hallo Sulaeman onCreate. Es ist schwierig, etwas zu lokalisieren, ohne irgendwelche Codeschnipsel zu sehen (möglicherweise in 'onTokenRefresh()' oder zumindest eine Beispielnutzlast.) Könnten Sie mir auch zeigen, wo in der Dokumentation die "* Dokumentation, in der das Token ablaufen würde 6 Monate * "? –

+0

mein onTokenrefresh ist genau wie die hier: https://developer.xamarin.com/guides/android/application_fundamentals/notifications/remote-notifications-with-fcm/#client_app und die Dokumentation, die ich habe Ich werde es wieder sehen .. auf –

+0

OnTokenRefresh wird selten aufgerufen: Es wird verwendet, um das Token unter den folgenden Umständen zu aktualisieren: Wenn die App installiert oder deinstalliert wird .. Wenn der Benutzer App-Daten löscht. Wenn die App die Instanz-ID löscht: Wenn die Sicherheit des Tokens beeinträchtigt wurde. Gemäß der Instanz-ID-Dokumentation von Google fordert der FCM-Instanz-ID-Dienst an, dass die App das Token regelmäßig aktualisiert (normalerweise alle 6 Monate). das ist nach: https://developer.xamarin.com/guides/android/application_fundamentals/notifications/remote-notifications-with-fcm/ –

Antwort

0

Dies passiert immer mit meinem, es ist eine Art Bug oder etwas, ich muss jedes Mal säubern und neu aufbauen, dies passiert nicht bei der Veröffentlichung, Sie können die Firebase-Instanz löschen und erhalten ein neues Token jedes Mal, wenn Sie die Anwendung ausführen du bist Debuggen.

Sie können dies schreibe auf Sie

Task.Run(() => { 
var instanceid = FirebaseInstanceId.Instance; 
instanceid.DeleteInstanceId(); 
Log.Debug("TAG", "{0} {1}", instanceid.Token, instanceid.GetToken(this.GetString(Resource.String.gcm_defaultSenderId), Firebase.Messaging.FirebaseMessaging.InstanceIdScope)); }); 
Verwandte Themen