Lizard & Dog Blog

Connection à un serveur XMPP – Smack Android

Introduction:

Si vous êtes un développeur à la recherche d’une solution robuste et sécurisée pour intégrer la communication XMPP dans vos applications, Smack est la bibliothèque qu’il vous faut. Smack, offre une API pour l’envoi et la réception de messages via les protocoles XMPP. Cet article vous guidera dans la connexion au serveur XMPP à l’aide de Smack, vous permettant ainsi de commencer à développer vos propres applications XMPP. Que vous construisiez une application de chat, intégriez la messagerie en temps réel dans une application existante, ou que vous découvriez simplement le monde de XMPP, cet article vous fournira les bases nécessaires pour utiliser Smack.

Dans ce tutoriel, nous créerons une petite application capable de communiquer avec un serveur XMPP. Avec le temps, cette application pourrait éventuellement évoluer pour devenir une application de messagerie complète.

Set-up:

Pour ce tutoriel, nous utiliserons Android Studio et Java avec Gradle, ainsi que la dernière version de la bibliothèque Smack (4.4.5). Vous pouvez télécharger la bibliothèque via le lien ci-dessous :

https://www.igniterealtime.org/projects/smack/

Importer la librairie:

Après avoir créé notre projet dans Android Studio, nous importons la bibliothèque Smack avec Gradle en ajoutant les lignes suivantes aux dépendances dans le fichier build.gradle :

implementation ('org.igniterealtime.smack:smack-android:4.4.5')
{
exclude module: 'xpp3'
}
implementation ('org.igniterealtime.smack:smack-core:4.4.5'){
exclude module: 'xpp3'
}
implementation ('org.igniterealtime.smack:smack-im:4.4.5'){
exclude module: 'xpp3'
}
implementation ('org.igniterealtime.smack:smack-resolver-minidns:4.4.5')
{
exclude module: 'xpp3'
}
implementation ('org.igniterealtime.smack:smack-sasl-provided:4.4.5'){
exclude module: 'xpp3'
}
implementation('org.igniterealtime.smack:smack-tcp:4.4.5') {
exclude module: 'xpp3'
}

L’exclusion de xpp3 est nécessaire pour éviter de rencontrer l’erreur suivante lors du build:

Duplicate class org.xmlpull.mxp1.MXParser found in modules xpp3-1.1.4c (xpp3:xpp3:1.1.4c) and xpp3_min-1.1.4c (xpp3:xpp3_min:1.1.4c)
Duplicate class org.xmlpull.v1.XmlPullParser found in modules xpp3-1.1.4c (xpp3:xpp3:1.1.4c) and xpp3_min-1.1.4c (xpp3:xpp3_min:1.1.4c)
Duplicate class org.xmlpull.v1.XmlPullParserException found in modules xpp3-1.1.4c (xpp3:xpp3:1.1.4c) and xpp3_min-1.1.4c (xpp3:xpp3_min:1.1.4c)

Ensuite, effectuez la construction (build), et vous devriez pouvoir utiliser Smack dans votre application.

Utiliser Smack- Bases de XMPP:

Maintenant que Smack est installé, nous allons passer en revue les bases de XMPP et voir comment Smack peut être utilisé pour envoyer et recevoir des messages de manière bidirectionnelle depuis et vers un serveur.

XMPP, ou Extensible Messaging and Presence Protocol, est un protocole standard ouvert pour la messagerie en temps réel, la présence et le chat. XMPP est construit sur XML, ce qui signifie que les messages sont envoyés sous forme de stanzas XML. Une strophe est l’unité de base de communication dans XMPP et peut être utilisée à diverses fins, notamment l’envoi de messages, la mise à jour de l’état de présence et l’échange de données. Smack fournit une API facile à utiliser pour l’envoi et la réception de ces stanzas, permettant aux développeurs de créer des applications XMPP puissantes et flexibles. Avec Smack, les développeurs peuvent facilement créer des applications de chat, des systèmes de messagerie en temps réel, et bien plus encore.

Connection à XMPP via Smack:

Nous allons commencer par définir les méthodes que nous utiliserons pour initier une connexion sécurisée avec Smack. Pour ce tutoriel, nous utilisons un serveur hébergé sur un réseau local :

Pour initier une connexion, vous devrez spécifier un domaine, un port (généralement 5222, mais vérifiez avec votre fournisseur de serveur XMPP) et fournir le nom d’utilisateur et le mot de passe de l’utilisateur avec lequel vous souhaitez vous connecter. Vous pouvez également utiliser Smack pour créer un compte, mais nous aborderons les fonctionnalités plus avancées de la bibliothèque dans un article ultérieur.

Pour fonctionner correctement, cette méthode devra être exécutée en dehors du thread principal, sur un thread séparé.

Si tout se passe bien, vous devriez pouvoir vous connecter au serveur et apparaître dans la liste des utilisateurs connectés.

Reception de stanzas:

La prochaine étape dans la gestion des stanzas serait d’enregistrer un listener sur la connexion pour les stanzas entrantes.

Envoi de stanzas:

La logique pour l’envoi des stanzas est la suivante:

Conclusion:

Vous pouvez utiliser ce tutoriel comme point de départ pour implémenter une application de chat ou simplement un client XMPP simple. Restez à l’écoute pour un tutoriel XMPP plus avancé à venir…

Si vous avez des questions ou souhaitez voir plus de notre travail, assurez-vous de nous suivre sur :

https://www.lizardanddog.com/

https://www.lizardanddog.com/applications-mobiles

https://www.lizardanddog.com/sites-web

https://www.lizardanddog.com/services-informatiques
https://www.cloco.ai

Leave a comment