2017-08-09 60 views
1

我能夠使用Smack提供的MamManager類(doc)獲取一對一聊天的存檔消息。但我有一個要求,顯示用戶名單和最新的消息,類似於什麼是什麼應用程序。顯示與之前聊天記錄的聯繫人/好友列表

enter image description here

沒有人有我如何才能做到這一點使用嫌& Openfire的任何想法?任何幫助,將不勝感激。謝謝

回答

1

使用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時。此外,您將不得不將所有消息存儲在您的服務器上才能使用。這通常是很多人的安全問題! :) –

相關問題