Progettazione dell'applicazione chat iOS, invio / inoltro del messaggio all'utente finale

3

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?

    
posta AyBayBay 06.02.2014 - 09:01
fonte

4 risposte

2

Altri utenti hanno suggerito l'APNS, ma dovresti sapere che se decidi di trasferire la tua applicazione su Android e / o Windows Phone, sarà più difficile ottenerla se sei legato a un'API push specifica della piattaforma. Esistono diverse alternative che sono adatte per l'uso su tutte e 3 le piattaforme elencate in questa domanda di overflow dello stack: link

    
risposta data 02.02.2015 - 09:26
fonte
0

Suppongo che ci sia una sorta di ID client coinvolto in questa soluzione. Quindi è semplice, il client A invia un messaggio al server con l'ID del cliente B, il server memorizza i messaggi (forse un indicatore che indica che non è stato letto). Ogni volta che il client B si connette, chiede al server se sono presenti messaggi non letti e, in caso affermativo, li interroga.

Nel caso in cui il Cliente B sia connesso mentre il Cliente A invia un messaggio, il server dovrebbe distribuire direttamente il messaggio al Cliente B.

Buona fortuna

    
risposta data 06.02.2014 - 15:04
fonte
0

Ho fatto qualcosa di simile. iOS - (Invia richiesta con messaggio e ID del destinatario) - > Server --- Invia il messaggio al destinatario - > iOS

Tuttavia ho usato le notifiche per eseguire la consegna finale. Ciò significa che il server ha i token per i dispositivi memorizzati, una volta che determina chi è chi invia una richiesta ad APNS.

    
risposta data 06.02.2014 - 16:45
fonte
0

APNS è il modo più ovvio per farlo. Significa che avrai bisogno di un server centrale, e significa anche che ci sarà un po 'di manutenzione, visto che ci si aspetta che pulisca i token scaduti. C'è anche la registrazione con Apple quando si tratta di fare i certificati, ma niente di troppo stressante. Una cosa da prendere in considerazione è il limite di caratteri relativamente basso.

    
risposta data 05.08.2014 - 23:02
fonte

Leggi altre domande sui tag