Wollte man die grundlegenden Gründe für Push-Benachrichtigungen wie Google Cloud Messaging (früher Google Cloud to Device Messaging genannt), die batteriefreundlicher sind, für Cloud < -> Gerätekommunikation verstehen?Warum und wie ist eine Push-Notification (wie GCM) Batterie effizient?
Meiner Ansicht nach beinhalten die alternativen Technologien "Polling" (über TCP/IP), während die Verbindung im CONNECTED-Zustand bleibt und Keep-Alive verwendet wird. Oder gibt es etwas Besseres?
Mein begrenztes Verständnis von GCM ist, dass es auch TCP/IP und Keepalives verwendet, aber der Client fragt nie den Server für den Status ab. Stattdessen informiert der Server den Client über eine eingehende Nachricht, und Anwendungen, die bestimmte Nachrichtentypen abonnieren, werden über die Nachricht asynchron benachrichtigt. Auch die gemeinsame GCM-Verbindung wird von mehreren Anwendungen gemeinsam genutzt, so dass die Geräteelektronik zu "koordinierten" Zeiten schlafen/schlafen kann, ohne dass mehrere Anwendungen die Elektronik mehr "EIN" (elektrisch aktiv) halten, als sie benötigen. Ist das das richtige Verständnis? Oder ist da mehr dran?
Schließlich, wie genau ist das im Vergleich zu MQTT über TCP/IP mit Keepalives? Was sind die Gründe dafür, dass MQTT (anscheinend) weniger Batterie-effizient ist als GCM?
Ein weiterer Grund, warum GCM insbesondere Batterie spart, ist die Kombination der Meldeparameter "collapse_key" und "delay_while_idle". Wenn nur die letzte Nachricht in einer Folge von Nachrichten von Bedeutung ist (z. B. Punktebenachrichtigungen von einem Fußballspiel), empfangen untätige Geräte nicht die unnötigen Nachrichten, nur die neuesten, wenn das Gerät aufwacht. Ältere Nachrichten werden durch die neueren im GCM-Server ersetzt und nur das neueste wird ausgeliefert, was zu einem geringeren Batterieverbrauch führt. – Piovezan