在 smack 中显示 contacts/friends 的列表以及之前的聊天记录
Displaying list of contacts/friends with previous chat history in smack
我可以使用 Smack (doc) 提供的 MamManager class 获取 one-to-one 聊天的存档消息。但我需要在列表中显示用户列表以及最新消息,类似于 whats app 的功能。
有没有人知道我如何使用 smack 和 openfire 实现这一点?任何帮助,将不胜感激。谢谢
使用 Roster
class 获取 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)
我可以使用 Smack (doc) 提供的 MamManager class 获取 one-to-one 聊天的存档消息。但我需要在列表中显示用户列表以及最新消息,类似于 whats app 的功能。
有没有人知道我如何使用 smack 和 openfire 实现这一点?任何帮助,将不胜感激。谢谢
使用 Roster
class 获取 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)