2017-08-09 12 views
1

Smack(doc)が提供するMamManagerクラスを使用して、1対1チャットのアーカイブ済みメッセージを取得できました。しかし、私は、最新のメッセージと一緒にユーザーのリストを一覧表示する必要があります。以前のチャット履歴を持つ連絡先/友だちのリストをsmackで表示

enter image description here

誰もが、私はピシャリ& openfireを使ってこれを実現する方法についてどんな考えを持っていますか?どんな助けもありがとう。ありがとう

答えて

1

Smackの連絡先を取得するためにRosterクラスを使用してください。オフラインサポートのために、それらの連絡先をローカルデータベースにも保持します。

連絡先インポートのような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

また、Rosterクラス –

+0

を使用して連絡先を取得するコードスニペットを共有することができれば嬉しいですが、私はあなたが単一デバイスのシナリオから始めることをお勧めします。すべてのユースケースを適切に考慮すると、マルチデバイスははるかに複雑になります。特にMultiUserChatの場合は特にそうです。さらに、これを動作させるには、すべてのメッセージをサーバーに保存する必要があります。これは通常、多くの人にとってセキュリティの問題です! :) –

関連する問題