Registrierungskonfusion Android GCM

Ich versuche, auf GCM in Android zu migrieren, C2DM jetzt veraltet. Der hier beschriebene Registrierungsprozess unterscheidet sich von der hier beschriebenen Anmeldung. Sind beide gleichermaßen? Können wir Code für GCMRegistrar , um sicher zu wissen?

  • Verwirrt über GCM Token-Aktualisierung
  • Dolch 2 Schwierigkeiten @ Injizieren FirebaseMessagingService
  • Soll ich generieren Android GCM Registrierung ID app spezifisch oder benutzerspezifisch?
  • Brauchen Sie Hilfe Umgang mit einer schwerwiegenden Ausnahme verursacht durch java.lang.IncompatibleClassChangeError
  • Registrierungs-ID wird aus keinem Grund "NotRegistriert"
  • GCM mit benutzerdefinierten Broadcastceceiver
  • Interner Fehler: Wiederholen der Empfängerklasse noch nicht gesetzt
  • Android-Benachrichtigung - Vollständige Nachricht anzeigen
  • 5 Solutions collect form web for “Registrierungskonfusion Android GCM”

    Sie sind eigentlich dasselbe. Die zweite kapselt die erste in einer statischen Methode und registriert einen Rundfunkempfänger. Du kannst die Quelle an die gcm.jar anschließen und selbst sehen. Sie finden Quellcode in ~ / android-sdks / extras / google / gcm / gcm-client / gcm-src.jar

    Ich habe mein C2DM-Projekt erfolgreich auf GCM migriert. Geprüft, es geht gut Die einzigen Änderungen waren:

    • In der Android-App – den Wert des sender bei der Registrierung ändern
    • Auf der Serverseite – den Auth-Header und die URL ändern

    Das war es, soweit die Interaktion mit Google geht. Es gab noch einige Änderungen, die durch die Logik der App diktiert wurden:

    • In der Android-App wurde die Registrierungs-ID in ihren Vorlieben zwischengespeichert. Nach dem Upgrade beseitige ich die Reg-ID aus den Voreinstellungen, um die Neu-Registrierung zu erzwingen, diesmal mit GCM.
    • Die Logik der Übergabe der Reg-ID an den Server bekam einen extra booleschen Parameter – wenn dies eine C2DM oder GCM reg ID ist
    • Die Logik des Sendens von Nachrichten wurde von dem Parameter abhängig.

    Das Auswerfen der C2DM-Logik komplett aus dem Server wäre unklug – nicht jeder aktualisiert ihre Android-Apps. Die alten, C2DM-fähigen Versionen werden in der Wildnis für einige Zeit. Und Google versprach, C2DM kurzfristig laufen zu lassen. So ist das Senden von Nachrichten bedingt – abhängig vom Reg-ID-Typ, sendet es entweder an GCM oder an C2DM.

    EDIT re: bedingte Logik:

     if($RegID_Is_GCM) { $Auth = GCM_Auth(); $URL = $GCM_URL; } else { $Auth = C2DM_AUTH(); $URL = $C2DM_URL; } 

    Das Ding, das ich am meisten in GCM mag, ist die RegID, die wir vom GCM Server bekommen werden, es ist nicht nur eine ID, die eine Adresse dieser Anwendung auf diesem Gerät ist. Also dieses Mal musst du keine Geräte-ID an den Server zusammen mit deiner Registrierungs- ID senden, wie es in C2DM war.

    In C2DM jedes Mal, wenn Sie eine Registrierungs-ID anfordern, erhalten Sie eine neue ID.

    Aber in GCM RegId generiert, indem Sie Ihre Anwendung Paket zusammen mit einigen Geräte-ID, so dass, wenn Sie für Registrierungs- ID immer wieder anfordern, erhalten Sie die gleiche RegId.

    Und wenn du eine Applikation deinstallierst und sie noch einmal installieren wirst, gibt dir der GCM-Server die gleiche Registrierungs-ID.

    So eine Registraion-ID wird keine Notwendigkeit von Device ID, um auf Server zu senden.

    Ich war erfolgreich bei der Migration von C2DM zu GCM. Ich habe auch dokumentiert, wie man GCM bei http://android.amolgupta.in/2012/07/google-cloud-messaging-gcm-tutorial.html implementiert

    GCMRegistrar ist nur ein Helfer, der die Beinarbeit auf der ersten Seite beschrieben hat.

    Sie können die Klasse hier sehen. android-sdk\extras\google\gcm\gcmclient\src\com\google\android\gcm .

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.