2016-06-01 6 views
0

Ich versuche GCM in meiner App zu implementieren. Die App besteht aus einer Benutzeroberfläche und einem Dienst, der im Hintergrund ausgeführt wird. Der Dienst wird von einem Boot-Broadcast-Empfänger gestartet oder wenn die App gestartet wird.Wo, wann und wie oft registriere ich mich für Google Cloud Messaging

Ich folgte dem bereitgestellten Codebeispiel von Google und bis jetzt funktioniert es. Google gibt an, dass Sie in Ihrer Aktivität nach Play-Services in onCreate() und onResume() suchen sollten.

Sollte ich auch in meinem Dienst nach Abspieldiensten suchen (wenn die App gestartet wird, prüfen Sie, ob die Abspieldienste fehlschlagen, der Benutzer startet das Gerät neu und mein Dienst wird per Broadcast gestartet)?

Auch muss ich wirklich das Einchecken onCreate() hinzufügen, da onResume() sowieso aufgerufen wird, wenn die App gestartet wird?

--- --- Aktualisierung

Okay, vielleicht habe ich mich nicht klar genug. Ich verzehre nur GCM. Der Empfänger ist natürlich ein Rundfunkempfänger, der in meinem Manifest veröffentlicht wird.

Wenn eine Nachricht kommt, sage ich meinem Dienst, etwas zu tun. Ich fragte, ob ich in meinem Dienst nach Play-Diensten suchen sollte, damit ich sicherstellen kann, dass der Benutzer weiß, dass einige Dinge möglicherweise nicht funktionieren, wenn die Play-Dienste nicht aktiviert sind.

Antwort

0

Sollte ich auch in meinem Dienst nach Abspieldiensten suchen (falls die App gestartet wird, nach Spieldiensten suchen fehlschlägt, startet der Benutzer das Gerät neu und mein Dienst wird per Broadcast gestartet)?

Ich habe nicht versucht, einen Boot BroadcastReceiver vor, damit ich nicht vertraut bin, weshalb ich nicht eine Gesamtantwort kommentieren werde.


tun auch wirklich da onResume() ich den Scheck in onCreate() aufgerufen wird sowieso hinzufügen müssen, wenn die App gestartet wird?

Apps, die auf dem Play Services SDK verlassen sollte das Gerät immer für eine kompatible Google APK Play-Dienste überprüfen:

Der Grund, warum sie darauf hindeutet, dies zu tun, kann auch in der docs finden bevor Sie auf die Google Play-Dienste zugreifen. Es wird empfohlen, dies an zwei Stellen durchzuführen: in der Methode der Hauptaktivität onCreate() und in der Methode onResume(). Der Check-in onCreate() stellt sicher, dass die App nicht ohne eine erfolgreiche Prüfung verwendet werden kann. Der Check-in onResume() stellt sicher, dass, wenn der Benutzer auf andere Weise, z. B. über die Zurück-Schaltfläche, zur laufenden App zurückkehrt, die Überprüfung weiterhin ausgeführt wird.


IF denken Sie, dass die Überprüfung der Play-Dienste erforderlich ist, bevor Sie etwas in Ihrem Service beginnen, dann denke ich, es ist ein guter Schritt ist.

Hoffe, das hilft irgendwie. Prost!

PS: Übrigens, falls Sie es noch nicht ausgecheckt haben, GCM hat jetzt eine neuere Version . Schau es dir an.: Hier D

Site: https://firebase.google.com/docs/cloud-messaging/

+0

Ich glaube, ich habe diese Passage der Dokumentation falsch interpretiert. Jetzt, wo ich darüber nachdenke, bedeutet das, dass wenn ich ohne Play Services nicht mit meiner App arbeiten würde, ich onCreate() einchecken und die Aktivität beenden sollte, falls sie fehlschlägt. Wenn es, wie in meinem Fall, schön ist, Play Services zu haben, aber ich verlasse mich nicht auf sie, geht es mir gut, wenn ich nur onResume() einchecke? – xxtesaxx

+0

Wenn Sie sicher sind, dass Ihre App nicht vollständig von den Play-Diensten abhängig ist, denke ich, dass es in Ordnung ist. ** ABER **, ich bin mir nicht ganz sicher, ob es gegen das Best Practice ist. Prost! –

+1

Ich wählte diese Antwort als die beste einmal, da es mir am meisten geholfen hat. Nachdem ich mehr über mein Problem nachgedacht hatte, kam ich zu folgendem Schluss: Ich werde in onResume() UND in meinem BootBroadcastReceiver nach dem Play Service suchen. Der Grund, warum ich dies tue (und nicht in onCreate()) ist, dass die Fähigkeit, einen bestimmten GCM-Nachrichtentyp zu empfangen, meine App nicht nutzlos macht. Es funktioniert immer noch und sendet niemals GCM. Daher nutze ich die Checks als freundliche Erinnerung, dass der Nutzer die Play Services aktivieren sollte. Ich könnte sogar eine Einstellung hinzufügen, um GCM vollständig zu deaktivieren, wenn sich jemand um seine Privatsphäre sorgt – xxtesaxx

0

Im Fall von FCM (vorher GCM) sollten Sie überprüfen, für Google Play-Dienste, wenn Sie sind zur Verwendung des Google-Services-APIs spielen. Wenn Ihr Dienst über eine Neustart-Übertragung gestartet werden kann und Ihr Dienst FCM verwendet, sollten Sie dort nach Wiedergabediensten suchen. Wenn Ihre Aktivität den Dienst startet, müssen Sie daher in der Aktivität nicht nach Google Play-Diensten suchen. FCM sollte Ihre App nicht beeinträchtigen, wenn Google Play-Dienste fehlen, aber das Gerät keine Nachrichten empfängt oder sogar ein Registrierungs-Token erhält.

Verwandte Themen