Best Practices zur Implementierung der C2DM-Registrierung

8

Ich entwickle eine Anwendung, die C2DM verwendet, um Push-Benachrichtigungen zu erhalten. Ich habe die gesamte C2DM-Schaltung (sowohl Client als auch Server) implementiert und es funktioniert gut.

Momentan hat meine Anwendung eine Schaltfläche, um die C2DM-Registrierung zu starten. Wenn ich das Registrierungs-ID-Token von Google erhalte, rufe ich einen Webservice auf meinem App-Server auf, um das Gerät mit der Registrierungs-ID zu verknüpfen.

Ich werde die Authentifizierung in meiner Anwendung implementieren und habe ein paar Fragen bezüglich der Handhabung der C2DM-Registrierung.

  1. Die Client-Anwendung (dh die Android-Anwendung) wird einen Anmeldebildschirm als ersten Bildschirm haben, damit der Benutzer die Anmeldeinformationen eingeben kann. Sobald die Zugangsdaten validiert sind, habe ich vor, die C2DM-Registrierung aufzurufen, damit der Benutzer mit einem Registrierungs-ID-Token verbunden wird. Ist das ok? In späteren Ausführungen der Anwendung werde ich wahrscheinlich die Anmeldeinformationen oder eine Art von Token speichern, so dass der Benutzer die Anmeldeinformationen nicht erneut eingeben muss. Sollte ich die C2DM-Registrierung auch auslösen, wenn die Anwendung gestartet wird?
  2. Ich bin mir bewusst, dass Google möglicherweise die Registrierungs-ID aktualisieren wird. Ist es eine gute Vorgehensweise, die Registrierungs-ID regelmäßig zu aktualisieren? Wenn ja, wann sollte es angemessen sein? Läuft das Registrierungs-ID-Token ab?
  3. Was passiert im seltenen Fall einer Desynchronisation der Registrierungs-ID zwischen dem Client und dem Server (zB kommt eine neue Registrierungs-ID beim Client an, in der Mitte wird ein neues Ereignis auf dem Server mit der alten Registrierung ausgelöst ID, dann kommt die Registrierungs-ID auf dem Server an)? Wird Google diese Fälle behandeln? Sollte mein App-Server diese Fälle behandeln?
  4. Was passiert, wenn der Server nicht erreichbar ist, wenn eine neue Registrierungs-ID von Google eingeht? Sollte ich zurückschalten und einen Alarm planen, um es erneut zu versuchen?
  5. Können Sie sich damit irgendwelche anderen Fallen vorstellen?
aromero 03.05.2011, 02:52
quelle

2 Antworten

6

1) Ich würde die C2DM-Registrierung so schnell wie möglich auslösen. Nichts Besonderes, aber da die Anfrage asynchron ist, hilft es mir, die ID früher zu bekommen. Es ist jedoch nicht erforderlich, die Registrierung jedes Mal zu starten, wenn die App gestartet wird. Einmal ist ausreichend.

2) Immer wenn Google beschließt, die reg-ID zu aktualisieren, wird sie an das Gerät gesendet und Sie müssen die gleichen Schritte ausführen, die Sie beim erstmaligen Erhalt der reg-ID ausgeführt haben, dh sie an den Server übermitteln.

>

3 & amp; 4) Sie können diese Dokumentation durchsuchen. Es betont die Tatsache, dass Sie sicherstellen müssen, dass Sie die Registrierungs-ID an Ihren Server senden und weiter versuchen. Ich gehe hier davon aus, dass, wenn die reg-ID aktualisiert wird und Ihr Server immer noch die alte ID hat, er keine Nachrichten an das Gerät senden kann. Es wird eine 200OK mit einem Fehlercode der ungültigen Registrierung erhalten, der eine (fehlende oder) schlechte Registrierungs-ID bedeutet.

5) Kann nicht viel kommentieren - würde sagen, dass es auf das Design Ihrer Anwendung ankommt. Aber eine Sache ist bemerkenswert, dass C2DM noch in der Beta ist, also erwarten, dass die Dinge auf lange Sicht anders sind.

    
advantej 03.05.2011, 05:07
quelle
0
  1. Versuchen Sie, dem Benutzer eine Auswahl von Google-Konten zu geben, die bereits auf dem Telefon sind. Das Ссылка zeigt dies. Sehen Sie sich SetupActivity.java für getGoogleAccounts () usw. an.
Alex Grande 16.09.2011 02:04
quelle