Wie hat Google die Push-Benachrichtigungsfunktion implementiert? Funktioniert es durch Abfragen, die von einem Dienst ausgeführt werden, der im Hintergrund oder auf andere Weise ausgeführt wird?
android
push-notification
polling
Khawar Raza
quelle
quelle
Antworten:
Nach dem, was ich während einer Android-Entwicklerkonferenz in Israel gehört habe:
Auf einem Cloud-Google-Server wartet einfach ein TCP-Socket im Akzeptanzmodus . Die TCP-Verbindung wurde von der Google Play-Anwendung initiiert. Aus diesem Grund muss Google Play auf dem Gerät installiert sein, damit Google Cloud Messaging (GCM) (ehemals C2DM (Android Cloud to Device Messaging Service )) funktioniert.
Wenn dieser TCP-Client-Socket eine Nachricht empfängt, enthält die Nachricht Informationen wie den Paketnamen der Anwendung, an die er adressiert werden soll, und natürlich die Daten selbst. Diese Daten werden analysiert und in eine Absicht gepackt , die gesendet und schließlich von der Anwendung empfangen wird.
Der TCP-Socket bleibt geöffnet, auch wenn der Funkstatus des Geräts in den "Leerlauf" -Modus wechselt. Anwendungen müssen nicht ausgeführt werden, um die Absichten zu erhalten.
Weitere Informationen finden Sie unter http://developer.android.com/google/gcm/gcm.html
quelle
Android behält eine aktive Verbindung zu den Servern von Google bei, verbraucht jedoch nicht viel Strom oder Daten, da kein Datenverkehr gesendet wird, bis eine GCM-Nachricht (Google Cloud Messaging) an eine App auf Ihrem Telefon gesendet wird. Es gibt nur eine Verbindung auf dem Telefon, die von allen Apps verwendet wird: Durch die Installation einer neuen App, die GCM verwendet, wird keine zusätzliche Last hinzugefügt.
Der erste Schritt in GCM besteht darin, dass ein Server eines Drittanbieters (z. B. ein E-Mail-Server) eine Anfrage an den GCM-Server von Google sendet. Dieser Server sendet dann die Nachricht über diese offene Verbindung an Ihr Gerät. Das Android-System überprüft die Nachricht, um festzustellen, für welche App sie bestimmt ist, und startet diese App. Die App muss sich bei Android registriert haben, um GCM verwenden zu können, und sie muss über die entsprechende Berechtigung verfügen. Wenn die App gestartet wird, wird möglicherweise sofort eine Benachrichtigung mit den Daten aus der Nachricht erstellt. Die Größe von GCM-Nachrichten ist sehr begrenzt, sodass die App möglicherweise stattdessen eine normale Verbindung zum Server eines Drittanbieters herstellt, um weitere Informationen zu erhalten (z. B. das Herunterladen der Header neuer E-Mails).
Der Vorteil der Verwendung von Push-Benachrichtigungen besteht darin, dass Apps nicht in regelmäßigen Abständen ausgeführt werden müssen, um nach neuen Daten zu suchen. Dies spart sowohl Strom als auch Daten. Der Vorteil eines zentralisierten Mechanismus wie GCM besteht darin, dass das Gerät nur eine offene Netzwerkverbindung benötigt und das Android GCM-System das einzige ist, das weiter ausgeführt werden muss, anstatt dass jede App im Hintergrund ausgeführt werden muss, um ihr eigenes Netzwerk aufrechtzuerhalten Verbindung zu einem eigenen Server.
Entnommen aus: Quelle Siehe auch hier .
quelle
Sie können die Push-Benachrichtigung auf Android selbst mit einer langen Abfrage-TCP-Verbindung implementieren. Dies würde jedoch die Aufrechterhaltung einer zusätzlichen Steckdose => Batterieentladung beinhalten. Oder Sie können in regelmäßigen Abständen eine Verbindung mit dem Alarm Manager herstellen.
Google öffnet wahrscheinlich eine Steckdose für alle C2DM-Push-Benachrichtigungen, wodurch die Batterie effizienter wird.
quelle
https://firebase.google.com/docs/cloud-messaging/
quelle
Ja, du hast Recht. Google hatte einen Dienst (GTalk-Dienst) und dieser Dienst fragte Google-Server in bestimmten Zeiträumen.
quelle
Wenn Sie auf Android-Geräten Push-Benachrichtigungen erhalten, werden das Bild der Absenderanwendung und eine Meldung in der Statusleiste angezeigt. Genau wenn der Kunde auf die Benachrichtigung tippt, landet er auf der Anwendung.
quelle