In questo tutorial costruiremo un client Jabber per iOS. L'applicazione sviluppata in questa serie consentirà agli utenti di accedere, aggiungere amici e inviare messaggi. Nel processo di creazione di questa app, descriveremo come installare e configurare un server jabber, creare account e interagire con il server da un'applicazione iOS. Per simulare un ambiente di chat costruiremo uno scenario con due utenti: un utente chatterà da un'app per iPhone e l'altro utilizzerà iChat.
Jabber non è uno strumento ma una comunità che costruisce e mantiene XMPP. XMPP è l'acronimo di eXtensible Messaging e Presence Protocol. Tale protocollo è open standard e orientato allo scambio di messaggi. Il nome originale del protocollo era Jabber, quindi i termini sono spesso usati in modo intercambiabile. Lo scambio di messaggi avviene in tempo reale, quindi è un'infrastruttura ideale per creare applicazioni di tipo chat. Il protocollo implementa anche un meccanismo per la notifica delle informazioni sulla presenza (se un utente è online o meno) e il mantenimento di un elenco di contatti. XMPP è un protocollo completo, che è stato adottato anche da grandi aziende come Google per creare il proprio servizio di messaggistica istantanea.
Il protocollo XMPP è basato su XML (Extensible Markup Language), quindi ogni tipo di messaggio (ad es. Login, invio di messaggi, ecc.) È codificato in questo formato. Ad esempio, supponiamo che il presidente Obama invii un messaggio a Hillary. Il formato del messaggio sarebbe simile a questo:
Ciao
Per completezza dovremmo menzionare che XMPP è un servizio decentralizzato, proprio come l'email. Ciò significa che gli account Hillary e Obama potrebbero trovarsi su server diversi (ad esempio, [email protected] e [email protected]). Il messaggio viene comunque consegnato perché XMPP consente la comunicazione da server a server. Nel caso in cui Hillary non sia in linea, il messaggio viene memorizzato nella cache sul server e consegnato quando va online. Per semplificare le cose e concentrarsi sul lato client, in questo tutorial considereremo uno scenario con un solo server.
Esistono molte implementazioni dei server Jabber. Una lista abbastanza completa è disponibile qui: Xmpp. In questo tutorial utilizzeremo jeabber per la sua semplicità di installazione e configurazione. Ejabbered è sviluppato in Erlang, è opensource e può funzionare su molti sistemi operativi, incluso Mac OS X. La scelta di tale implementazione è anche dovuta alla facile interfaccia web, che consente di configurare rapidamente il servizio e gestire gli account degli utenti. Ejabbered è disponibile gratuitamente qui. Selezioniamo la versione per Mac OS X e avvia il download. In questo tutorial useremo la versione 2.1.8.
Il processo di installazione è molto semplice e intuitivo. Infatti il file scaricato è un'applicazione che ci assiste nel processo di installazione tramite una procedura guidata. Una volta completato, dovremmo avere una cartella denominata "ejabbered-2.1.8" nella nostra directory "Applicazioni". La cartella dovrebbe contenere le seguenti sottocartelle.
Le cartelle più importanti sono "conf" e "bin". Il primo contiene i file di configurazione per amministrare i privilegi degli utenti. Il secondo include i comandi per gestire il server. Apriamo un terminale e passiamo alla cartella bin. Dovremmo vedere qualcosa di simile.
I comandi più importanti sono "start" e "stop". Nel caso in cui non siano eseguibili, è possibile renderli inviando il seguente comando shell:
chmod 755 stop
chmod 755 start
La cartella contiene anche uno script 'postinstall.sh', che deve essere eseguito subito dopo l'installazione per creare l'utente amministratore. Lo script prevede tre parametri: utente, dominio e password. Quindi possiamo eseguirlo in questo modo:
./postinstall.sh cesare jerry.local password
Abbiamo scelto jerry.local, il nome della macchina locale, come dominio ma funzionerebbe anche "localhost". Questo avvia il server e aggiunge questo utente come amministratore. Per ricontrollare se la configurazione è corretta, possiamo aprire il file 'ejabberd.cfg' nella cartella 'con'. Nella sezione Elenco controllo accessi dovrebbe contenere quanto segue
dichiarazione
acl, admin, user, "cesare", "jerry.local".
Ora dovresti essere in grado di avviare il server jabber digitando
./inizio
Si aprirà per impostazione predefinita una pagina Web che ti informa che il server è stato avviato.
Al momento il nostro servizio ha solo amministratori. Dobbiamo popolarlo con almeno un utente. La pagina Web precedente contiene un collegamento all'interfaccia di amministrazione, disponibile all'indirizzo http: // localhost: 5280 / admin /. Una volta effettuato l'accesso come amministratore, dovresti vedere una console simile alla seguente
Facciamo clic sulla voce "Liste di controllo accessi" e viene visualizzato l'elenco degli utenti attualmente registrati. Creiamo un nuovo utente, denominato "alterego", inserendo i suoi dettagli e facendo clic su Invia
Ora siamo in grado di testare il server e verificare che funzioni correttamente. Per testarlo possiamo eseguire due applicazioni desktop che supportano il protocollo XMPP. Uno è iChat, che viene fornito con Mac OS X. Da questo elenco puoi trovare un altro, quello che ti si addice meglio:
http://xmpp.org/xmpp-software/clients/.
Nel nostro caso utilizzeremo Adium, che è disponibile qui. Configureremo un account per "cesare" su iChat e un altro per "altergo" su Adium. Iniziamo con iChat. Avviare l'applicazione e aprire il menu Preferenze e selezionare la scheda Account.
I pulsanti "+" consentono di aggiungere un nuovo account, che viene compilato con i seguenti dati:
La prima connessione potrebbe richiedere del tempo (ad esempio 30 secondi). iChat probabilmente ti chiederà di accettare il certificato sconosciuto che è in bundle con il server. Basta cliccare continua.
Una volta connesso, puoi modificare il tuo stato tramite il menu a discesa nella parte superiore della finestra. Impostiamolo su online. Ora passiamo ad Adium. Iniziamo l'applicazione e apriamo il menu Preferenze. L'aggiunta di un nuovo account è molto simile a iChat. Qui entriamo nei dettagli di "alterego".
In questo caso dobbiamo anche specificare il server che esegue jabber. Selezioniamo la scheda 'Opzioni' e la riempiamo come segue:
Adium ti chiederà di accettare anche il certificato. Ora abbiamo due utenti connessi al server tramite due diverse applicazioni. Questo dovrebbe anche riflettersi nel file di registro di ejabber. Il file si trova in: '/Applications/ejabberd-2.1.8/logs/ejabberd.log' e dovrebbe contenere i seguenti messaggi
La chat è sull'amicizia. Sebbene entrambi gli utenti siano connessi al server, non sono abilitati a chattare a meno che non si aggiungano l'un l'altro come amici. Lo scenario sarà il seguente: cesare aggiunge alterego alla sua lista. Nella finestra di iChat selezioniamo il pulsante "+" in basso.
e entriamo nel jabber id '[email protected]'
Su Adium dovremmo ricevere una richiesta di autorizzazione come segue
Una volta che alterego lo accetta dovremmo finire come nella figura seguente, cesare è amico di altergo (e viceversa) ed entrambi possono scambiare messaggi.
Abbiamo testato tutte le funzionalità necessarie per il server:
Questo era necessario per garantire che eventuali errori nell'applicazione iOS non fossero dovuti a errori di configurazione del server. Ora siamo pronti a scavare nello sviluppo dell'applicazione iOS.
Il codice sorgente completo per questo progetto può essere trovato su GitHub qui.