Ho una domanda sul design. Supponiamo che tu abbia avuto il compito di creare un'applicazione di chat, in particolare per iOS (iOS Chat Application). Per semplicità, diciamo che puoi chattare solo con una persona alla volta (nessuna funzionalità di chat di gruppo).
In che modo puoi ottenere l'invio di un messaggio direttamente a un utente finale dal telefono A al telefono B?
Ovviamente c'è un livello di servizio web con alcune chiamate API. Una delle chiamate API disponibili sarà startChat()
. Dopo aver avviato una chat, quando invii un messaggio, fai un'altra chiamata asincrona, chiamiamola sendMessage()
e passa una stringa con il tuo messaggio. Una volta che si passa al livello del servizio Web, il messaggio viene memorizzato in un database.
Qui è dove sono attualmente bloccato. Dopo che il messaggio è stato inviato al livello del servizio Web, come possiamo ottenere l'invio / inoltro del messaggio all'utente finale? Se il server web invia un messaggio all'utente finale e lo notifica, o ogni client deve chiamare periodicamente un metodo receiveMessage()
, e se il server ha alcune informazioni per loro può rispondere con tali informazioni?
Infine, come possiamo gestire il caso in cui l'utente a cui stai tentando di inviare un messaggio sia offline? Come possiamo assicurarci che l'utente finale riceva il pacchetto quando torna in un'area con un segnale?