Utilisez la classe Roster
pour récupérer les contacts dans Smack
. Conservez également ces contacts dans votre base de données locale pour un support hors connexion.
Pour l'implémentation de Whatsapp comme importation de contacts. Vous devrez aller chercher les contacts de votre appareil et les ajouter à votre Roster
. Un moyen idéal de le faire serait d'envoyer les contacts via Rest-API et laissez le serveur les ajouter à votre Roster
.
Une fois que vous initialisez votre objet de connexion, vous pouvez joindre un écouteur de liste comme ceci:
val connection:XMPPTCPConnection // assuming you have the connection object
val roster = Roster.getInstanceFor(connection)
// NOTE: You should attach your roster listener even before calling connect() on your connection object.
// This way you get the roster list whenever the connection connects!
roster.addRosterLoadedListener(object:RosterLoadedListener{
override fun onRosterLoaded(roster: Roster?) {
// Update your database
}
override fun onRosterLoadingFailed(exception: java.lang.Exception?) {
// Handle error
}
})
Pour la persistance des messages que vous devrez utiliser la base de données locale (SQLite ou un ORM)
Merci. Mais si je le stocke dans la base de données locale et les journaux d'utilisateur dans le nouvel appareil, il n'est pas possible de synchroniser les messages/contacts à un nouvel appareil droit? –
Aussi, ce serait génial si vous pouviez partager l'extrait de code de récupération des contacts via la classe Roster –
Oui, c'est le cas, mais je vous suggère de commencer avec un scénario de périphérique unique. Comme multi périphérique devient beaucoup plus compliqué lorsque vous considérez correctement tous les cas d'utilisation. surtout quand il s'agit de MultiUserChat. De plus, vous devrez stocker tous les messages sur votre serveur pour que cela fonctionne. C'est généralement un problème de sécurité pour beaucoup! :) –