În acest tutorial vom construi un client Jabber pentru iOS. Aplicația dezvoltată în această serie va permite utilizatorilor să se conecteze, să adauge prieteni și să trimită mesaje. În procesul de construire a acestei aplicații, vom descrie modul de instalare și configurare a unui server jabber, crearea de conturi și interacțiunea cu serverul dintr-o aplicație iOS. Pentru a simula un mediu de chat, vom construi un scenariu cu doi utilizatori: un utilizator va vorbi de la o aplicație pentru iPhone, iar celălalt va folosi iChat.
Jabber nu este un instrument, ci o comunitate care construiește și întreține XMPP. XMPP este un protocol eXtensible pentru mesagerie și prezență. Un astfel de protocol este standard deschis și orientat spre schimbul de mesaje. Numele original al protocolului era Jabber, astfel că termenii sunt adesea folosiți în mod interschimbabil. Schimbul de mesaje se întâmplă în apropierea timpului real, deci este o infrastructură ideală pentru a construi aplicații asemănătoare celor de chat. Protocolul implementează, de asemenea, un mecanism de notificare a informațiilor privind prezența (dacă un utilizator este online sau nu) și întreținerea unei liste de contacte. XMPP este un protocol aprofundat, care a fost adoptat și de marile companii precum Google pentru a-și construi serviciul de mesagerie instant.
Protocolul XMPP se bazează pe XML (Extensible Markup Language), astfel încât fiecare tip de mesaj (de exemplu, login, mesaj de trimitere etc.) este codificat în acest format. De exemplu, să presupunem că președintele Obama trimite un mesaj lui Hillary. Formatul mesajului ar fi ceva de genul:
bună
Din motive de exhaustivitate, ar trebui să menționăm că XMPP este un serviciu descentralizat, la fel ca emailul. Aceasta înseamnă că conturile Hillary și Obama ar putea fi pe servere diferite (de ex., [email protected] și [email protected]). Mesajul este livrat oricum, deoarece XMPP permite comunicarea server-to-server. În cazul în care Hillary este offline, mesajul este stocat în cache pe server și livrat atunci când se accesează online. Pentru a menține lucrurile simple și pentru a vă concentra pe partea clientului, în acest tutorial vom analiza un scenariu cu un singur server.
Există multe implementări ale serverelor Jabber. O listă destul de completă este disponibilă aici: Xmpp. În acest tutorial vom folosi jeabbered pentru că este ușor de instalat și configurat. Ejabbered este dezvoltat în Erlang, este opensource și poate funcționa pe mai multe sisteme de operare, inclusiv pe Mac OS X. Alegerea unei astfel de implementări se datorează și interfeței web ușoare, care permite configurarea rapidă a serviciului și gestionarea conturilor de utilizator. Ejabbered este disponibil gratuit aici. Selectăm versiunea Mac OS X și începem descărcarea. În acest tutorial vom folosi versiunea 2.1.8.
Procesul de instalare este foarte simplu și intuitiv. De fapt, fișierul descărcat este o aplicație care ne asistă în procesul de instalare prin intermediul unui expert. Odată finalizat, trebuie să avem un director numit "ejabbered-2.1.8" în directorul "Aplicații". Dosarul trebuie să conțină următoarele subfoldere.
Cele mai importante dosare sunt "conf" și "bin". Primul conține fișiere de configurare pentru administrarea privilegiilor utilizatorilor. Al doilea include comenzi pentru administrarea serverului. Să deschidem un terminal și să ne mutăm în dosarul rezervorului. Ar trebui să vedem ceva de genul asta.
Cele mai importante comenzi sunt "start" și "stop". În cazul în care nu sunt executabile, le puteți face prin emiterea următoarei comenzi shell:
chmod 755 stop
chmod 755 start
Dosarul conține, de asemenea, un script "postinstall.sh", care trebuie executat imediat după instalare pentru a crea utilizatorul de admin. Scriptul așteaptă trei parametri: utilizator, domeniu și parolă. Deci, putem rula astfel:
./postinstall.sh parola cesare jerry.local
Am ales jerry.local, numele mașinii locale, ca domeniu, dar "localhost" ar funcționa la fel. Aceasta pornește serverul și adaugă acest utilizator ca administrator. Pentru a verifica dacă configurația este corectă, putem deschide fișierul "ejabberd.cfg" din dosarul "con". În secțiunea Liste de control acces trebuie să conțină următoarele
afirmație
acl, admin, utilizator, "cesare", "jerry.local".
Acum ar trebui să puteți să porniți serverul jabber tastând
./start
Aceasta va deschide implicit o pagină web care vă anunță că serverul a fost pornit.
În prezent, serviciul nostru are doar administratori. Trebuie să o populam cu cel puțin un utilizator. Pagina anterioară conține o legătură către interfața de administrare, care este disponibilă la http: // localhost: 5280 / admin /. Odată ce v-ați conectat ca administrator, ar trebui să vedeți o consolă ca mai jos
Facem clic pe articolul "Liste de control acces" și apare lista utilizatorilor înregistrați în prezent. Creați un nou utilizator, numit "alterego", introducând detaliile acestuia și făcând clic pe Trimiteți
Acum putem testa serverul și verificăm dacă acesta funcționează corect. Pentru a le testa, putem rula două aplicații desktop care acceptă protocolul XMPP. Una este iChat, care vine cu Mac OS X. Din această listă găsiți un altul, cel care vă convine mai bine:
http://xmpp.org/xmpp-software/clients/.
În cazul nostru, vom folosi Adium, care este disponibil aici. Vom configura un cont pentru "cesare" pe iChat și altul pentru "altergo" pe Adium. Să începem cu iChat. Porniți aplicația și deschideți meniul Preferințe și selectați fila Conturi.
Butoanele "+" permit adăugarea unui cont nou, pe care îl completăm cu următoarele date:
Prima conexiune poate dura ceva timp (de exemplu, 30 de secunde). iChat vă va cere probabil să acceptați certificatul necunoscut care este livrat împreună cu serverul. Doar faceți clic pe continuați.
După ce vă conectați, vă puteți schimba starea prin intermediul meniului derulant din partea de sus a ferestrei. Să o punem online. Acum să ne mutăm la Adium. Pornim aplicația și deschidem meniul Preferințe. Adăugarea unui cont nou este destul de similar cu iChat. Aici introducem detaliile "alterego".
În acest caz trebuie să specificăm și serverul care rulează jabber. Selectăm fila "Opțiuni" și o umplem după cum urmează:
Adium vă va cere să acceptați și certificatul. Acum trebuie să conectați doi utilizatori la server prin intermediul a două aplicații diferite. Acest lucru ar trebui să se reflecte și în fișierul jurnal al ejabbered. Fișierul este localizat la: '/Applications/ejabberd-2.1.8/logs/ejabberd.log' și trebuie să conțină următoarele mesaje
Chatul este despre prietenie. Deși ambii utilizatori sunt conectați la serverul lor, aceștia nu au permisiunea de a discuta, cu excepția cazului în care aceștia se adaugă o singură dată ca prieteni. Scenariul va fi următorul: cesare adaugă alterego la lista sa. În fereastra iChat selectăm butonul "+" din partea de jos.
și intrăm în jabber id '[email protected]'
Pe Adium ar trebui să primim o Solicitare de autorizare după cum urmează
Odată ce alterego o acceptă, ar trebui să ajungem ca în figura următoare, cesare este prieten cu altergo (și invers) și ambii pot schimba mesaje.
Am testat toate funcționalitățile necesare pentru server:
Acest lucru era necesar pentru a se asigura că erorile posibile în aplicația iOS nu se datorează unor configurări greșite ale serverului. Acum suntem gata să explorăm dezvoltarea aplicației iOS.
Codul sursă complet pentru acest proiect poate fi găsit pe GitHub aici.