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.
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
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! –
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