Dans ce tutoriel, nous allons construire un client Jabber pour iOS. L’application développée dans cette série permettra aux utilisateurs de se connecter, d’ajouter des amis et d’envoyer des messages. Au cours du processus de construction de cette application, nous allons décrire comment installer et configurer un serveur Jabber, créer des comptes et interagir avec le serveur à partir d'une application iOS. Pour simuler un environnement de discussion, nous allons créer un scénario avec deux utilisateurs: un utilisateur discutera à partir d'une application iPhone et l'autre utilisera iChat..
Jabber n'est pas un outil mais une communauté qui construit et gère XMPP. XMPP signifie eXtensible Messaging and Presence Protocol. Un tel protocole est à norme ouverte et orienté vers l'échange de messages. Le nom original du protocole était Jabber, les termes sont souvent utilisés de manière interchangeable. L'échange de messages se faisant presque en temps réel, il s'agit donc d'une infrastructure idéale pour créer des applications de type chat. Le protocole met également en œuvre un mécanisme pour notifier les informations de présence (qu'un utilisateur soit en ligne ou non) et la maintenance d'une liste de contacts. XMPP est un protocole complet, qui a également été adopté par de grandes entreprises comme Google pour créer leur service de messagerie instantanée..
Le protocole XMPP est basé sur XML (Extensible Markup Language) afin que chaque type de message (par exemple, login, envoi de message, etc.) soit codé dans ce format. Par exemple, supposons que le président Obama envoie un message à Hillary. Le format du message ressemblerait à ceci:
salut
Par souci d'exhaustivité, il convient de mentionner que XMPP est un service décentralisé, un peu comme le courrier électronique. Cela signifie que les comptes Hillary et Obama peuvent se trouver sur des serveurs différents ([email protected] et [email protected], par exemple). Le message est quand même remis car XMPP permet la communication entre serveurs. Si Hillary est hors ligne, le message est mis en cache sur le serveur et remis lorsqu'il se connecte. Pour que les choses restent simples et que nous nous concentrions sur le côté client, dans ce tutoriel, nous allons envisager un scénario avec un seul serveur..
Il existe de nombreuses implémentations de serveurs Jabber. Une jolie liste complète est disponible ici: Xmpp. Dans ce tutoriel, nous utiliserons Jabbered car il est facile à installer et à configurer. Ejabbered est développé à Erlang, il est opensource et peut fonctionner sur de nombreux systèmes d'exploitation, y compris Mac OS X. Le choix d'une telle implémentation est également dû à l'interface Web simple, qui permet de configurer rapidement le service et de gérer les comptes d'utilisateurs. Ejabbered est disponible gratuitement ici. Nous sélectionnons la version Mac OS X et démarrons le téléchargement. Dans ce tutoriel, nous utiliserons la version 2.1.8.
Le processus d'installation est très simple et intuitif. En fait, le fichier téléchargé est une application qui nous assiste dans le processus d'installation à l'aide d'un assistant. Une fois terminé, nous devrions avoir un dossier nommé "ejabbered-2.1.8" dans notre répertoire "Applications". Le dossier doit contenir les sous-dossiers suivants.
Les dossiers les plus importants sont "conf" et "bin". Le premier contient des fichiers de configuration pour administrer les privilèges des utilisateurs. La seconde inclut des commandes pour gérer le serveur. Ouvrons un terminal et passons au dossier bin. Nous devrions voir quelque chose comme ça.
Les commandes les plus importantes sont "start" et "stop". S'ils ne sont pas exécutables, vous pouvez les créer en exécutant la commande shell suivante:
chmod 755 stop
chmod 755 start
Le dossier contient également un script 'postinstall.sh', qui doit être exécuté juste après l'installation pour créer l'utilisateur admin. Le script attend trois paramètres: utilisateur, domaine et mot de passe. Donc on peut le lancer comme ça:
./postinstall.sh cesare jerry.local mot de passe
Nous avons choisi jerry.local, le nom de la machine locale, comme domaine mais "localhost" fonctionnerait également. Cela démarre le serveur et ajoute cet utilisateur en tant qu'administrateur. Pour vérifier si la configuration est correcte, nous pouvons ouvrir le fichier 'ejabberd.cfg' dans le dossier 'con'. Dans la section Liste de contrôle d'accès, il devrait contenir les informations suivantes:
déclaration
acl, admin, utilisateur, "cesare", "jerry.local".
Maintenant, vous devriez pouvoir démarrer le serveur Jabber en tapant
./début
Cela ouvrira par défaut une page Web vous informant que le serveur a été démarré.
Pour le moment, notre service ne comporte que des administrateurs. Nous devons le renseigner avec au moins un utilisateur. La page Web précédente contient un lien vers l'interface d'administration, disponible à l'adresse http: // localhost: 5280 / admin /. Une fois que vous êtes connecté en tant qu’administrateur, vous devriez voir une console du type suivant:
Nous cliquons sur l'élément "Listes de contrôle d'accès" et la liste des utilisateurs actuellement enregistrés apparaît. Nous créons un nouvel utilisateur, nommé 'alterego', en entrant ses détails et en cliquant sur soumettre.
Nous pouvons maintenant tester le serveur et vérifier qu'il fonctionne correctement. Pour le tester, nous pouvons exécuter deux applications de bureau prenant en charge le protocole XMPP. L'un est iChat, fourni avec Mac OS X. Vous pouvez en trouver un autre, celui qui vous convient le mieux, dans cette liste:
http://xmpp.org/xmpp-software/clients/.
Dans notre cas, nous utiliserons Adium, disponible ici. Nous allons configurer un compte pour 'cesare' sur iChat et un autre pour 'altergo' sur Adium. Commençons par iChat. Lancez l'application, ouvrez le menu Préférences et sélectionnez l'onglet Comptes..
Les boutons "+" permettent d'ajouter un nouveau compte, que nous remplissons avec les données suivantes:
La première connexion peut prendre un certain temps (par exemple 30 secondes). iChat vous demandera probablement d'accepter le certificat inconnu fourni avec le serveur. Cliquez simplement sur Continuer.
Une fois que vous êtes connecté, vous pouvez modifier votre statut au moyen du menu déroulant situé en haut de la fenêtre. Mettons-le en ligne. Passons maintenant à Adium. Nous lançons l'application et ouvrons le menu Préférences. Ajouter un nouveau compte est assez similaire à iChat. Ici nous entrons les détails 'alterego'.
Dans ce cas, nous devons également spécifier le serveur qui exécute jabber. Nous sélectionnons l'onglet "Options" et nous le remplissons comme suit:
Adium vous demandera d'accepter également le certificat. Nous avons maintenant deux utilisateurs connectés au serveur au moyen de deux applications différentes. Cela devrait également être reflété dans le fichier journal de ejabbered. Le fichier se trouve à l'adresse '/Applications/ejabberd-2.1.8/logs/ejabberd.log' et devrait contenir les messages suivants
Discuter est une question d'amitié. Bien que les deux utilisateurs soient connectés au serveur, ils ne sont pas autorisés à dialoguer à moins qu'ils ne s'ajoutent l'un à l'autre en tant qu'amis. Le scénario sera le suivant: cesare ajoute alterego à sa liste. Dans la fenêtre iChat, nous sélectionnons le bouton "+" en bas.
et nous entrons l'id jabber '[email protected]'
Sur Adium, nous devrions recevoir une demande d'autorisation comme suit
Une fois que alterego l’a accepté, nous devrions aboutir comme dans la figure suivante, cesare est ami avec altergo (et inversement) et les deux peuvent échanger des messages..
Nous avons testé toutes les fonctionnalités nécessaires au serveur:
Cela était nécessaire pour s'assurer que les erreurs éventuelles dans l'application iOS ne sont pas dues à une mauvaise configuration du serveur. Nous sommes maintenant prêts à creuser dans le développement de l'application iOS.
Le code source complet de ce projet est disponible sur GitHub ici.