WhatsApp usa GCM per scambiare messaggi?
All'inizio, ho pensato che questo fosse molto probabilmente un caso di messaggistica da nuvola a dispositivo di Android, ma non può essere: WhatsApp non dichiara i permessi necessari, e funziona in Eclair (Android 2.1), mentre la messaggistica cloud to device (e la sua sostituzione, Google Cloud Messaging) richiede almeno Froyo (Android 2.2).
Comunque, è molto probabilmente una sorta di servizio di notifica push. È impossibile dire esattamente come è implementato senza accedere al codice sorgente di WhatsApp.
La parte relativa alla capacità di ricevere messaggi quando non è in uso è relativamente facile da spiegare, però. L'app ha quasi certamente un servizio che funziona in background per fare il check-in con il server periodicamente (o ricevere il push del server, o qualsiasi cosa faccia). Quando si riceve un messaggio, il servizio fa apparire una notifica.
Per quanto riguarda la domanda su come il server potrebbe fare un push, ecco una possibilità (di nuovo, non posso verificare senza codice sorgente):
- WhatsApp inizia e apre due socket: Uno per ascoltare e uno per inviare un messaggio al server.
- WhatsApps inizia ad ascoltare sul primo socket.
- WhatsApp invia un messaggio contenente il tuo numero di telefono e la porta del socket in ascolto al server e aspetta una conferma.
- Il server registra i numeri di telefono e di porta nel messaggio e l'indirizzo IP da cui proviene il messaggio.
- Il server invia un riscontro all'app.
- L'app riceve il riscontro e chiude il socket del messaggio.
- Un messaggio con il tuo numero di telefono come destinazione arriva al server.
- Il server usa l'indirizzo IP e il numero di porta che ha associato al tuo numero di telefono e usa queste informazioni per inviare il messaggio al tuo telefono.
Perché questo funzioni, l'app dovrebbe monitorare lo stato della connessione di rete e resettare il socket di ascolto / reinviare il messaggio di registrazione quando necessario (se l'indirizzo IP cambia, per esempio)
Articoli simili
- Vale la pena scambiare la PS3 al GameStop per 150 dollari per una nuova PS4?
- Dovrei scambiare la mia PS4 e comprare giochi per Switch?
- Hai intenzione di scambiare il tuo OnePlus 6, 6T, 5T, 5 per il OnePlus 7 Pro?
- Attualmente ho un iPhone 11 Pro Max, dovrei scambiare per ottenere l'iPhone 12 Pro Max quando esce?