显示与之前聊天记录的联系人/好友列表

问题描述:

我能够使用Smack提供的MamManager类(doc)获取一对一聊天的存档消息。但我有一个要求,显示用户名单和最新的消息,类似于什么是什么应用程序。显示与之前聊天记录的联系人/好友列表

enter image description here

没有人有我如何才能做到这一点使用嫌& Openfire的任何想法?任何帮助,将不胜感激。谢谢

使用Roster类获取Smack中的联系人。还要将这些联系人保存在本地数据库中以提供脱机支持。

用于实现WhatsApp的联系人导入。您将不得不从设备中获取联系人并将其添加到您的Roster。这样做的理想方法是通过Rest-API发送联系人,并让服务器将它们添加到您的Roster

一旦你初始化连接对象,就可以把花名册监听器,如下:

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 
    } 
}) 

对于持久的消息,你将不得不使用本地数据库(SQLite的或一些ORM)

+0

感谢。但是,如果我将它存储在本地数据库中并且用户登录了新设备,那么无法将消息/联系人同步到新设备? –

+0

如果你可以分享通过名册获取联系人的代码片段 –

+0

是的,那就太好了,但我建议你从单一设备场景开始。由于在正确考虑所有用例时,多设备变得复杂得多。尤其是涉及到MultiUserChat时。此外,您将不得不将所有消息存储在您的服务器上才能使用。这通常是很多人的安全问题! :) –