1
我能夠使用Smack提供的MamManager類(doc)獲取一對一聊天的存檔消息。但我有一個要求,顯示用戶名單和最新的消息,類似於什麼是什麼應用程序。顯示與之前聊天記錄的聯繫人/好友列表
沒有人有我如何才能做到這一點使用嫌& Openfire的任何想法?任何幫助,將不勝感激。謝謝
我能夠使用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時。此外,您將不得不將所有消息存儲在您的服務器上才能使用。這通常是很多人的安全問題! :) –