GCM-Registrierung mit zwei verschiedenen Arbeitsregistrierungs-IDs

8

Ich habe ein kleines Problem mit der Verwaltung der Geräteregistrierung auf meinem Client / Server für Push-Benachrichtigungen.

Problem

Das Problem, das ich habe, ist, dass, wenn ich die Anwendung deinstalliere und neu installiere, die Anwendung eine leere Zeichenfolge für die Registrierungs-ID ( GCMRegistrar.getRegistrationId(this) ) zurückgibt, die ich das Gerät mit meinem Server neu registriere. Das Problem ist, dass ich eine neue, andere Registrierungs-ID bekomme (manchmal) und BEIDE ARBEIT! Also ich weiß nicht wie serverseitig zu wissen ist ob es für das selbe Gerät ist. Ich sollte auch beachten, dass ich die Anwendungsversion nicht ändere. Führen Änderungen am Manifest zur Auslösung einer neuen Registrierungs-ID?

Auf der Android-Seite mache ich Folgendes:

%Vor%

In meinem GCMIntentService.java mache ich folgendes:

%Vor%

In meinem RegistrationReceiver.java habe ich folgendes:

%Vor%

Auch hier ist das Problem, dass ich zwei oder mehr Registrierungs-IDs habe, die alle funktionieren (es wäre kein Problem, wenn ich das alte einfach nicht funktioniere, wenn ich versuche, eine Nachricht vom Server zu posten, wie ich kann) einfach das aufräumen).

    
vincentjames501 09.04.2013, 17:45
quelle

1 Antwort

11

Manchmal ändert Google die Registrierungs-ID und Sie erhalten mehrere IDs zugeordnet. Der Server, der die Benachrichtigung sendet (Ihr Server), muss die Datenbank mit der neuen ID aktualisieren.

Weitere Informationen finden Sie in diesem Dokument:

Ссылка

Das sagt:

  

Auf der Serverseite sollte, solange sich die Anwendung gut verhält, alles normal funktionieren. Wenn jedoch ein Fehler in der Anwendung mehrere Registrierungen für dasselbe Gerät auslöst, kann es schwierig sein, den Status zu vereinbaren, und Sie können möglicherweise doppelte Nachrichten erhalten.

     

GCM bietet eine Funktion namens "canonical registration IDs", um sich leicht von diesen Situationen zu erholen. Eine kanonische Registrierungs-ID ist definiert als die ID der letzten von Ihrer Anwendung angeforderten Registrierung. Dies ist die ID, die der Server verwenden sollte, wenn er Nachrichten an das Gerät sendet.

     

Wenn Sie später versuchen, eine Nachricht mit einer anderen Registrierungs-ID zu senden, verarbeitet GCM die Anfrage wie gewohnt, aber die kanonische Registrierungs-ID wird in das Feld registration_id der Antwort aufgenommen. Stellen Sie sicher, dass Sie die Registrierungs-ID, die auf Ihrem Server gespeichert ist, durch diese kanonische ID ersetzen, da die von Ihnen verwendete ID schließlich nicht mehr funktioniert.

    
nunofmendes 09.04.2013, 18:23
quelle