I denne opplæringen vil vi bygge en Jabber-klient for iOS. Programmet utviklet i denne serien vil gjøre det mulig for brukerne å logge på, legge til kompiser og sende meldinger. I prosessen med å bygge denne appen, beskriver vi hvordan du installerer og konfigurerer en jabber-server, lager kontoer og samhandler med serveren fra et iOS-program. For å simulere et chatmiljø, vil vi bygge et scenario med to brukere: en bruker vil chatte fra en iPhone-app og den andre skal bruke iChat.
Jabber er ikke et verktøy, men et fellesskap som bygger og vedlikeholder XMPP. XMPP står for eXtensible Messaging og Presence Protocol. En slik protokoll er åpen standard og orientert til meldingsutveksling. Det opprinnelige navnet på protokollen var Jabber, så vilkårene blir ofte brukt om hverandre. Meldingsutveksling skjer i nærheten av sanntid, så det er en ideell infrastruktur for å bygge chat-lignende applikasjoner. Protokollen implementerer også en mekanisme for å varsle om nærværsinformasjon (om en bruker er online eller ikke) og vedlikehold av en kontaktliste. XMPP er en grundig protokoll, som også har blitt vedtatt av store selskaper som Google for å bygge sin Instant Messaging-tjeneste.
XMPP-protokollen er basert på XML (Extensible Markup Language), slik at hver type melding (for eksempel innlogging, melding sendt, etc.) er kodet i dette formatet. For eksempel, la oss anta at president Obama sender en melding til Hillary. Formatet på meldingen vil være noe slikt:
Hei der
For fullstendig skyld skal vi nevne at XMPP er en desentralisert tjeneste, mye som e-post. Dette betyr at Hillary og Obama-kontoene kan være på forskjellige servere (dvs. [email protected] og [email protected]). Meldingen leveres uansett fordi XMPP muliggjør server-til-server-kommunikasjon. Hvis Hillary er frakoblet, blir meldingen cached på serveren og levert når hun går online. For å holde ting enkelt og fokusere på klientsiden, vil vi i denne opplæringen vurdere et scenario med bare en server.
Det er mange implementeringer av Jabber-servere. En ganske komplett liste er tilgjengelig her: Xmpp. I denne opplæringen bruker vi jeabbered fordi det er enkelt å installere og konfigurere. Ejabbered er utviklet i Erlang, den er åpen kildekode og kan fungere på mange operativsystemer, inkludert Mac OS X. Valget av en slik implementering skyldes også det enkle webgrensesnittet, som gjør det mulig å raskt konfigurere tjenesten og administrere brukerkontoer. Ejabbered er tilgjengelig gratis her. Vi velger Mac OS X versjonen og starter nedlastingen. I denne opplæringen bruker vi versjon 2.1.8.
Installasjonsprosessen er veldig enkel og intuitiv. Faktisk er den nedlastede filen et program som hjelper oss i installasjonsprosessen ved hjelp av en veiviser. Når du er ferdig, bør vi ha en mappe med navnet 'ejabbered-2.1.8' i katalogen 'Applications'. Mappen skal inneholde følgende undermapper.
De viktigste mappene er 'conf' og 'bin'. Den første inneholder konfigurasjonsfiler for å administrere brukernes privilegier. Den andre inneholder kommandoer for å administrere serveren. La oss åpne en terminal og flytte til bin-mappen. Vi burde se noe sånt.
De viktigste kommandoene er "start" og "stop". Hvis de ikke er kjørbare, kan du lage dem ved å utstede følgende kommandoen shell:
chmod 755 stopp
chmod 755 start
Mappen inneholder også et "postinstall.sh" skript, som må kjøres rett etter installasjonen for å opprette admin brukeren. Skriptet forventer tre parametre: bruker, domene og passord. Så vi kan kjøre det slik:
./postinstall.sh cesare jerry.local passord
Vi har valgt jerry.local, navnet på den lokale maskinen, som domene, men "localhost" ville også fungere. Dette starter serveren og legger til denne brukeren som administrator. For å dobbeltsjekke om konfigurasjonen er riktig, kan vi åpne filen 'ejabberd.cfg' i mappen 'con'. I delen Access Control List skal den inneholde følgende
uttalelse
acl, admin, user, "cesare", "jerry.local".
Nå bør du kunne starte jabber-serveren ved å skrive
./start
Dette åpner som standard en nettside som informerer deg om at serveren er startet.
For øyeblikket har vår tjeneste bare administratorer. Vi må fylle den med minst en bruker. Den forrige nettsiden inneholder en lenke til admingrensesnittet, som er tilgjengelig på http: // localhost: 5280 / admin /. Når du har logget inn som administrator, bør du se en konsoll som følgende
Vi klikker på "Access Control Lists" -elementet, og listen over registrerte brukere vises nå. Vi lager en ny bruker, kalt 'alterego', ved å skrive inn detaljene og klikke på send inn
Nå kan vi teste serveren og kontrollere at den fungerer riktig. For å teste det kan vi kjøre to stasjonære applikasjoner som støtter XMPP-protokollen. Den ene er iChat, som følger med Mac OS X. Du finner en annen, den som passer deg bedre, fra denne listen:
http://xmpp.org/xmpp-software/clients/.
I vårt tilfelle vil vi bruke Adium, som er tilgjengelig her. Vi vil konfigurere en konto for 'cesare' på iChat og en annen for 'altergo' på Adium. La oss starte med iChat. Start programmet og åpne Preferences-menyen, og velg fanen Kontoer.
"+" -Knappene tillater å legge til en ny konto, som vi fyller ut med følgende data:
Den første tilkoblingen kan ta litt tid (for eksempel 30 sekunder). iChat vil trolig be deg om å godta det ukjente sertifikatet som følger med serveren. Bare klikk Fortsett.
Når du er tilkoblet, kan du endre status ved hjelp av rullegardinmenyen øverst i vinduet. La oss sette den på nettet. La oss nå flytte til Adium. Vi starter programmet og åpner Innstillinger-menyen. Å legge til en ny konto er ganske lik iChat. Her kommer vi inn i 'alterego' detaljer.
I dette tilfellet må vi også spesifisere serveren som kjører jabber. Vi velger kategorien 'Valg', og vi fyller den som følger:
Adium vil be deg om å akseptere sertifikatet også. Nå må vi to brukere koble til serveren ved hjelp av to forskjellige applikasjoner. Dette bør også gjenspeiles i loggfilen til ejabbered. Filen er plassert på: '/Applications/ejabberd-2.1.8/logs/ejabberd.log' og skal inneholde følgende meldinger
Chatter handler om vennskap. Selv om begge brukerne er koblet til serveren, er de ikke i stand til å chatte med mindre de legger sammen hverandre som venner. Scenariet vil være følgende: cesare legger alterego til sin liste. I iChat-vinduet velger vi "+" -knappen nederst.
og vi går inn i jabber-id'et [email protected] '
På Adium bør vi motta en godkjenningsforespørsel som følger
Når alterego aksepterer det, bør vi ende opp som i følgende figur, cesare er venn med altergo (og vice versa), og begge kan bytte meldinger.
Vi har testet alle funksjonene som trengs for serveren:
Dette var nødvendig for å sikre at mulige feil i iOS-programmet ikke skyldes server feilkonfigurasjoner. Nå er vi klare til å grave inn i utviklingen av iOS-programmet.
Den komplette kildekoden for dette prosjektet finner du på GitHub her.