Ich bin gespannt, wie WhatsApp Nachrichten empfangen kann, wenn sie nicht verwendet werden.
Ich verstehe, dass WhatsApp über die Internetverbindung und nicht über das Mobilfunknetz funktioniert. Stellen Sie sich vor, ich hätte mein Telefon seit Stunden nicht mehr berührt. In diesem Moment schickt mir ein Freund eine Nachricht auf WhatsApp. Ich verstehe es sofort. Bedeutet das, dass WhatsApp die Internetverbindung jederzeit aufrechterhält? Bedeutet das, dass WhatsApp als Server fungiert und Ports auf dem Telefon öffnet? Oder vielleicht eine lang laufende HTTP-Anfrage?
networking
whatsapp-messenger
Ram Rachum
quelle
quelle
Antworten:
Zuerst dachte ich, dass dies höchstwahrscheinlich eine Instanz der Android-Cloud für Geräte-Messaging ist , aber es kann nicht sein: WhatsApp deklariert nicht die erforderlichen Berechtigungen und funktioniert in Eclair (Android 2.1), während die Cloud für Geräte-Messaging ( und sein Ersatz, Google Cloud Messaging) erfordern mindestens Froyo (Android 2.2).
Es handelt sich jedoch höchstwahrscheinlich um eine Art Push-Benachrichtigungsdienst . Ohne Zugriff auf den Quellcode von WhatsApp ist es unmöglich, genau zu sagen, wie es implementiert ist.
Der Teil darüber, dass Nachrichten empfangen werden können, wenn sie nicht verwendet werden, ist jedoch relativ einfach zu erklären. Die App verfügt mit ziemlicher Sicherheit über einen Dienst , der im Hintergrund ausgeführt wird, um sich regelmäßig beim Server zu melden (oder den Server-Push zu empfangen oder was auch immer). Wenn Sie eine Nachricht erhalten, wird vom Dienst eine Benachrichtigung angezeigt.
Was die Frage betrifft, wie der Server einen Push ausführen kann, gibt es hier eine Möglichkeit (ich kann es auch ohne Quellcode nicht überprüfen):
Damit dies funktioniert, muss die App den Status der Netzwerkverbindung überwachen und den Listening-Socket zurücksetzen / die Registrierungsnachricht bei Bedarf erneut senden (wenn sich beispielsweise die IP-Adresse ändert).
quelle
Ich bin mir sicher, dass WhatsApp KEINE Listening Ports öffnet. Die meisten ISPs blockieren eingehende Anfragen, das würde nicht funktionieren.
WhatsApp hat einen Service. Grundsätzlich bedeutet dies, dass Sie WhatsApp technisch gesehen nie beenden. Die Art und Weise, wie Sie Nachrichten empfangen, während Sie WhatsApp "nicht ausführen", entspricht genau der Art und Weise, wie Sie sie empfangen, wenn Sie WhatsApp ausführen.
Der Client, in diesem Fall WhatsApp, stellt eine Verbindung zum Server her. Der Client behält diese Verbindung bei. Wenn der Server etwas Neues zu sagen hat, sendet er es über diese Verbindung an den Client. Und das ist alles.
Deine erste Vermutung ist richtig.
WhatsApp keinen wahren Protokollmechanismus hat, sieht dies .
quelle
Ihre FAQ deuten darauf hin, dass sie GCM verwenden. Überprüfen Sie die Antwort auf "Dauern Nachrichten immer noch zu lange, um Ihr Telefon zu erreichen?"
quelle
WhatsApp wird wie andere Apps als Dienst ausgeführt. (Sie sind immer verbunden.) An Sie gesendete Nachrichten werden bis zu 30 Tage auf dem WhatsApp-Server gespeichert. In dieser Zeit sollte WhatsApp aktiv sein, um den Empfang der Nachricht zu bestätigen. Einzelne Accounts werden unter der Benutzertelefonnummer @ whatsapp.net gespeichert
quelle
Ich denke es sollte so sein:
Als WhatsApp neu war, hätte es eine PNS-basierte Lösung verwendet. Dieser PNS hat das Gerät nur aufgeweckt und kann nach dem Aufwecken eine Socket-Verbindung zum WhatsApp-Server herstellen.
Wenn WhatsApp jetzt populär ist, werden die meisten Geräte, die als native Anwendung und native Anwendung kommen, nicht getötet. In meinem Samsung S8 kann ich WhatsApp nicht deinstallieren, Energiesparmodus kann es nicht töten
quelle