私は Android で XMPP に基づくチャット アプリに取り組んでいます。
1 対 1 のチャット機能を実行しましたが、マルチ ユーザー チャットで問題が発生しました。新しいチャット ルームの作成に成功しました。複数のユーザーがそのルームに参加できます。addPacketListener
グループチャット用のコードも書いていますPacketFilter filter = new MessageTypeFilter(Message.Type.groupchat);
ユーザーがグループでメッセージを送信したときに、そのリスナーでメッセージも受信しますが、どのユーザーがメッセージを送信したかを区別できません。
1 対 1 のチャット メッセージ パケットのようmessage.getFrom()
に、送信者の JID を取得する機能があります。
マルチ ユーザー チャットの場合、同じ関数はグループ/ルームの JID を送信者として返します。
私はまた、送信中にメッセージのプロパティを設定しようとしましたmessage.setFrom(senderJID);
またはmessage.setFrom(sendername@conference.hostname/Groupname);
それでも、senderJID またはそのニックネームを取得できません。
だから私の質問は: 送信者ユーザーの JID またはそのニックネームを取得する方法は? from message(packet) in messageListener
グループでメッセージを送信するためのコードは次のとおりです:-
String to = strGroupJID;
String text = etChatOnTextBox.getText().toString();
if(!text.equals(""))
{
Message msg = new Message(to, Message.Type.groupchat);
msg.setBody(text);
String name1 = xmppConnection.getUser();
name1 = name1.substring(0, name1.lastIndexOf("@"));
name1 = name1 + "@conference.192.168.56.1";
// name1 = name1 + "@conference.192.168.56.1/" + strGroupName ;
msg.setFrom(name1);
muc.sendMessage(msg);
}
受信メッセージのコードは次のとおりです:-
PacketFilter filter = new MessageTypeFilter(Message.Type.groupchat);
connection.addPacketListener(new PacketListener() {
@Override
public void processPacket(Packet packet) {
Message message = (Message) packet;
if (message.getBody() != null) {
String fromName = StringUtils.parseBareAddress(message
.getFrom());
Log.i("ChatOn", "Text Recieved " + message.getBody()
+ " from " + fromName );
}
}
});
任意のヘルプや提案をいただければ幸いです