显示与之前聊天记录的联系人/好友列表
问题描述:
我能够使用Smack提供的MamManager类(doc)获取一对一聊天的存档消息。但我有一个要求,显示用户名单和最新的消息,类似于什么是什么应用程序。显示与之前聊天记录的联系人/好友列表
没有人有我如何才能做到这一点使用嫌& 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)
感谢。但是,如果我将它存储在本地数据库中并且用户登录了新设备,那么无法将消息/联系人同步到新设备? –
如果你可以分享通过名册获取联系人的代码片段 –
是的,那就太好了,但我建议你从单一设备场景开始。由于在正确考虑所有用例时,多设备变得复杂得多。尤其是涉及到MultiUserChat时。此外,您将不得不将所有消息存储在您的服务器上才能使用。这通常是很多人的安全问题! :) –