2017-08-09 1 views
1

Je suis capable de récupérer les messages archivés d'un chat en utilisant la classe MamManager fournie par Smack (doc). Mais j'ai une obligation d'afficher la liste des utilisateurs avec le dernier message dans une liste similaire à ce que fait l'application.Affichage de la liste des contacts/amis avec l'historique de discussion précédente dans smack

enter image description here

Est-ce que quelqu'un a une idée sur la façon dont je peux y parvenir en utilisant smack & openfire? Toute aide serait appréciée. Merci

Répondre

1

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)

+0

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? –

+0

Aussi, ce serait génial si vous pouviez partager l'extrait de code de récupération des contacts via la classe Roster –

+0

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! :) –