Da mehrere Anwendungen GCM verwenden, die eine einzige Socket-Verbindung zur Google-Cloud verwenden, sollte die Verwendung von GCM für Benachrichtigungen keine Auswirkungen auf die Akkulaufzeit haben, da nur eine vorhandene Verbindung verwendet wird. Auf der anderen Seite, was immer Sie mit websockets erstellen, wird die Batterie nur auf GCM hinzugefügt werden.
Wenn Sie Ihre Verbindung aufrechterhalten müssen, auch wenn die Anwendung nicht im Vordergrund ist, müssen Sie Ihre Anwendung als Vordergrunddienst erstellen. GCM erledigt dies für Sie.
aktualisieren
Ein Gerät, das ein sehr seltener Fall, da viele wichtige Anwendungen wie gmail Verwendung GCM keine anderen Anwendungen mit GCM ist hat. Ich habe keine genauen Zahlen über die Batterieverbrauch von GCM. Aber die Batterieverwendung von C2DM (GCM-Vorgänger, die das gleiche zugrundeliegende Kommunikationsmodell verwendet) wird in this video ca. 4 Minuten in erwähnt. Ich hatte tatsächlich eine ähnliche Frage über die Batterie-Nutzung einer dauerhaften Socket-Verbindung zu einem externen Server (Android persistent socket connection rules). Obwohl es kein Websocket ist, würde ich den Akkuverbrauch ähnlich sehen. Aber da GCM auf einer viel niedrigeren Ebene des Betriebssystems integriert ist, würde ich sagen, dass es besser optimiert ist als eine benutzerdefinierte Lösung.
Sofern Sie keine Firmenrichtlinie gegen die Verwendung eines Drittanbieterservers oder einige sehr spezifische Spezifikationen haben, würde ich GCM empfehlen. Ich würde auch ermutigen, das gesamte Video über C2DM sowie this video for GCM zu sehen.
Sie sollten wahrscheinlich die Antwort unten als die richtige wählen. – npgall
@HippopotamusMan Ich habe die gleiche Anfrage, aus dem gleichen Grund. Kannst du nochmal darauf reinspringen? Verwenden Sie noch benutzerdefinierte WebSockets oder verwenden Sie FCM/GCM? Wir testen unsere APP und es verwendet eine Menge Batterie. Nicht sicher, ob dies für die WebSockets ist, aber wir denken es. –