Come costruire un'applicazione di messaggistica passo dopo passo per Android
Ho già provato a sviluppare un'applicazione di messaggistica ed è stato un fallimento ogni volta, quindi lasciatemi condividere le mie esperienze.
Beh, per app di messaggistica immagino tu intenda un'applicazione di messaggistica istantanea piuttosto che un'app di messaggistica sms.
Superando un'idea di hackathon che abbiamo vinto, abbiamo deciso di fare un'applicazione di messaggistica per persone della stessa località per chattare. Sono uno sviluppatore abbastanza ingenuo a quel tempo e la messaggistica istantanea è una bestia. Anche dopo circa 1 anno di esperienza nello sviluppo di applicazioni Android, pensare di sviluppare un Instant Messenger è un incubo per me. Tuttavia ho sviluppato l'applicazione e ho scelto il percorso più semplice disponibile in quel momento, cioè Parse.
Parse aveva un api facile da usare per iniziare con le notifiche push e permetteva un milione di notifiche push gratis al mese, che è più che sufficiente per me. Così ho iniziato con Parse e ho sviluppato l'applicazione. Ha avuto alcuni problemi come la latenza più alta alcune volte, ecc. ma mi va bene perché non volevo detronizzare whatsapp con la mia velocità, volevo solo sviluppare un'applicazione che mi permettesse di chattare con altre persone che hanno la stessa app. L'applicazione non è mai stata un successo (che è una storia completamente diversa), ma è stata una grande esperienza di apprendimento per me e ho avuto una sensazione di orgoglio che ho potuto sviluppare un'applicazione che aveva alcune delle funzionalità di una grande applicazione come Whatsapp tutto da me.
L'applicazione continua ad essere sul playstore, ma in un giorno di buon auspicio Parse annuncia che stanno per chiudere Parse dopo essere stato acquisito da Facebook entro pochi mesi. Non avevo intenzione di spostare l'app su un altro servizio perché comunque non aveva utenti. Io avevo rinunciato, ma il mio partner no (partner non tecnico). Così guardandolo ho deciso: ok, fammi dare un'altra occhiata. Ora non sarò nemmeno in grado di capire ciò che il mostro ha codificato in quel momento, ma sono pronto ad affrontarlo. Per due giorni sarei rimasto sbalordito dal casino che avevo fatto ma lentamente avrei ripreso e migliorato.
Così ho iniziato a cercare delle opzioni. La prima cosa che mi è venuta in mente è GCM/FCM (Google Cloud Messaging/Firebase Cloud Messaging). Anche mentre usavo Parse ho cercato di usare GCM. C'era un modulo di registrazione a quel tempo per essere in grado di utilizzare GCM e non ho mai ricevuto una risposta da Google che mi permettesse di usarlo. Tuttavia ho provato a guardare la loro documentazione. È un puro orrore per me, dato che non avevo idea del protocollo HTTP o XMPP e quindi non potevo dare un senso a tutto questo. Recentemente ci sono tornato, ma ora sono equipaggiato con la conoscenza di HTTP, quindi passare attraverso la parte HTTP della documentazione è stato un gioco da ragazzi per me. E non c'è nessun modulo di registrazione e si può ottenere direttamente l'accesso alle credenziali GCM. Sono in grado di ottenere una notifica push sull'app per Android. Ora volevo provare a usare XMPP ma mi ci sono voluti ancora circa 2-3 giorni per capire cosa significa GCM con XMPP.
A questo punto potresti essere confuso su cosa sia HTTP e cosa sia XMPP
- HTTP:- È il protocollo che alimenta il web standard e quindi il protocollo più popolare. Può essere usato insieme a GCM per inviare notifiche push. Il processo è questo, si implementa un server web utilizzando qualsiasi framework di vostra scelta Node.js/Django/Ruby on Rails/Laravel ecc. Ogni dispositivo Android ottiene un gcm_id unico che può essere memorizzato sul server. Se il server invia una richiesta HTTP all'url GCM con l'id di registrazione del tuo dispositivo, riceverai una notifica. Il processo è molto semplice da implementare. Sul lato server ho usato python-gcm (supporta solo GCM HTTP) insieme a Django per gestire le richieste HTTP.
- XMPP :- È il protocollo utilizzato principalmente per applicazioni di messaggistica e quindi non è così popolare come HTTP. La sua latenza è considerata minore rispetto all'uso di GCM con HTTP e quindi è usato in applicazioni critiche per la velocità come la messaggistica istantanea. XMPP con GCM supporta sia la messaggistica a valle, cioè l'invio di notifiche push dal server all'app Android, sia la messaggistica a monte, cioè l'invio di messaggi dall'app Android al server e c'è un server Google nel mezzo che funge da intermediario. Per implementare XMPP con GCM è necessario creare una connessione XMPP con l'endpoint di Google. Quindi bisogna avviare un client XMPP e collegarlo all'endpoint di Google nel loro server. La connessione con il server di Google deve essere sempre attiva. Ora, ogni volta che la tua app Android invia un messaggio all'endpoint di Google, il tuo server lo riceverà e viceversa.
Per molti giorni sono stato confuso con questo server e client XMPP e cosa deve essere implementato per l'utilizzo con GCM. Ho provato molte volte, ma siccome Google è pieno di molte discussioni, ho sempre dovuto rinunciare, perché dopo un po' di tempo non ho mai saputo cosa sto facendo. Quindi lasciatemi spiegare le differenze tra server XMPP e client qui
- XMPP Server :- Se non volete usare GCM per inviare messaggi potete creare un vostro server XMPP. Sono ancora ingenuo in questa parte e sto iniziando, quindi non posso dire molte cose al riguardo. Attualmente sto leggendo questo libro XMPP: The Definitive Guide Book per iniziare ad implementare un server XMPP. La tua app per Android apre una connessione a questo server XMPP e può usarlo per la messaggistica. Uno svantaggio è che devi sempre mantenere una connessione con il server per essere in grado di ricevere messaggi, il che potrebbe scaricare la batteria.
- XMPP Client :- Questa è la parte che viene utilizzata in GCM. I client HTTP sono molto diffusi ma i client XMPP sono pochi. Per Java il preferito è Smack e per python fortunatamente ne ho trovato uno in xmpppy. Ora supponiamo che vogliate inviare un messaggio da un telefono Android ad un altro, il percorso è come questo telefono Android 1 -> Google -> client XMPP mantenuto nel vostro server -> Google -> dispositivo Android 2.
Ora potreste chiedere qual è il bisogno di un server XMPP quando GCM da solo può gestire la parte di messaggistica. Anche se GCM è abbastanza buono il più delle volte non è considerato affidabile. Ci sono molti sviluppatori che si sono lamentati che l'app non ha ricevuto la notifica GCM poche volte. Quindi tutti i grandi giocatori come Whatsapp fanno così. Non usano GCM come servizio principale per il loro instant messenger. Invece ospitano il proprio server XMPP per l'invio di messaggi. Ogni volta che l'app Android viene uccisa e quindi la connessione XMPP viene uccisa, ora se il server ha bisogno di inviare un messaggio al dispositivo offline, usano GCM per inviare una notifica push. Ora, quando l'utente fa clic su una notifica push, l'app viene aperta e crea una connessione al server XMPP e recupera tutti i messaggi in sospeso. Quindi usano GCM solo per sincronizzare i messaggi ma non per i servizi di messaggistica tradizionali.
XMPP non è l'unica opzione per la messaggistica istantanea. Molte persone hanno usato anche i socket, ma io non li ho mai usati, quindi mi astengo dal commentarli.
Articoli simili
- Qual è un processo passo dopo passo per ottenere 1000 download sul mio gioco Android?
- Come dovrei imparare gli algoritmi e risolvere i problemi su CodeChef, SPOJ passo dopo passo?
- È una buona idea costruire un'app di messaggistica istantanea quando ci sono già le migliori app di messaggistica nel negozio?
- Sono un codificatore Android e ho 10 giorni per costruire un'applicazione mobile di messaggistica istantanea Android nativa. Com'è il piano?