Smack4.20チャット通信と傍受を実現(2)
前回はopenfrieに接続してログインする方法を大まかに説明しましたが、通信方法を理解し始めました.
ログインに成功すると、次のようなコードでユーザーとチャットすることができます.
まず、connectionでchatManager管理のチャットオブジェクトを取得し、次の手順に従います.
注意、ここのパラメータreceiveはメッセージアカウントを受信するjidであり、ここでjidは各ユーザー特有のアカウントであり、openfireにログインすることで各アカウントのjidを表示することができ、jidは厳格なフォーマット要求があり、フォーマットは以下の通りである.
JidCreateクラスでjidオブジェクトを作成できます.ここでbodyパラメータは送信された内容で、sparkクライアントでテストできるチャットメッセージを送信することができます.
チャットメッセージの傍受は、公式に提供されたI n c o m i n g ChatMessageListenerリスナーインタフェースを実装することによって、メッセージを傍受することができる.コードは以下の通りである.
Listenerバインドは次のとおりです.
これにより、プロジェクトには他の多くの関係のないものが結合されているため、抽出するしかありません.次の節では、オフラインメッセージと親友の花の名簿を共有しましょう.
ログインに成功すると、次のようなコードでユーザーとチャットすることができます.
public ChatManager getChatManager() {
if(chatManager == null){
chatManager = ChatManager.getInstanceFor(connection);
}
return chatManager;
}
まず、connectionでchatManager管理のチャットオブジェクトを取得し、次の手順に従います.
public void sendChatMessage(String receive, String body) throws Exception {
// jid
EntityBareJid jid = JidCreate.entityBareFrom(receive);
// chat
Chat chat = getChatManageWindows(jid);
// , Message.Type.chat
Message message = new Message(jid, Message.Type.chat);
message.setBody(body);
//
chat.send(message);
}
注意、ここのパラメータreceiveはメッセージアカウントを受信するjidであり、ここでjidは各ユーザー特有のアカウントであり、openfireにログインすることで各アカウントのjidを表示することができ、jidは厳格なフォーマット要求があり、フォーマットは以下の通りである.
@openfire
JidCreateクラスでjidオブジェクトを作成できます.ここでbodyパラメータは送信された内容で、sparkクライアントでテストできるチャットメッセージを送信することができます.
チャットメッセージの傍受は、公式に提供されたI n c o m i n g ChatMessageListenerリスナーインタフェースを実装することによって、メッセージを傍受することができる.コードは以下の通りである.
import android.util.Log;
import org.jivesoftware.smack.chat2.Chat;
import org.jivesoftware.smack.chat2.IncomingChatMessageListener;
import org.jivesoftware.smack.packet.Message;
import org.jxmpp.jid.EntityBareJid;
/**
*
* Created by ozy on 2017/4/11.
*/
public class InChatMessageListener implements IncomingChatMessageListener {
@Override
public void newIncomingMessage(EntityBareJid from, Message message, Chat chat) {
//from jid,message ,chat
// from , string
Log.d("text",from.toString());
//
Log.d("text",message.getBody());
}
}
Listenerバインドは次のとおりです.
InChatMessageListener inListener = new InChatMessageListener(this);
chatManager.addIncomingListener(inListener);
これにより、プロジェクトには他の多くの関係のないものが結合されているため、抽出するしかありません.次の節では、オフラインメッセージと親友の花の名簿を共有しましょう.