я работаю над чат-приложением на основе XMPP в Android.
Я сделал чат один на один, но возникли проблемы с многопользовательским чатом. Я успешно создал новую комнату чата, к ней могут присоединиться несколько пользователей. я также написал код для addPacketListener
для группового чата с PacketFilter filter = new MessageTypeFilter(Message.Type.groupchat);
Я также получаю сообщения в этом прослушивателе, когда пользователь отправляет сообщение в группе, но я не могу различить, какой пользователь отправил сообщение.
например, пакет сообщения чата один на один имеет функцию message.getFrom()
для получения JID отправителя.
в случае многопользовательского чата та же функция возвращает JID группы/комнаты в качестве отправителя.
я также пытался установить свойство сообщения при отправке message.setFrom(senderJID);
или message.setFrom([email protected]/Groupname);
до сих пор я не могу получить senderJID или его псевдоним.
поэтому мой вопрос: как получить JID пользователя-отправителя или его псевдоним? из сообщения (пакета) в 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 );
}
}
});
любая помощь или предложение приветствуется, спасибо