Xmpp asmack向唤醒器组发送消息

Xmpp asmack向唤醒器组发送消息,xmpp,smack,Xmpp,Smack,我想使用asmack向花名册组(如朋友组)发送消息。(我不想使用多用户聊天创建聊天室) Asmach有以下特点: Message msg=新消息(java.lang.String-to,Message.Type) 当我想使用单个用户时,我使用:Message(“a@b.com,Message.Type.chat) 但在群聊中,我想我必须使用Message(java.lang.String to,Message.Type.groupchat),但我不知道java.lang.String to应该

我想使用asmack向花名册组(如朋友组)发送消息。(我不想使用多用户聊天创建聊天室)

Asmach有以下特点:

Message msg=新消息(java.lang.String-to,Message.Type)
当我想使用单个用户时,我使用:Message(“a@b.com,Message.Type.chat)


但在群聊中,我想我必须使用Message(java.lang.String to,Message.Type.groupchat),但我不知道java.lang.String to应该是什么?

XMPP没有指定一种机制来向花名册组发送消息。但是你可以很容易地自己实现它。只需收集花名册组的所有JID,以及最终的所有存在,并将消息发送给他们中的每一个人(最好是Smack)。

我以以下方式将消息发送给花名册组的所有成员。你可以试试


向组中的多个用户发送消息的方法

/**
 * Sends Group message
 *
 * @param message
 * @param groupName
 * @throws XMPPException
 * @throws SmackException.NotConnectedException
 */
public void sendGroupMessage(String groupName, String message) throws SmackException.NotConnectedException, XMPPException {
    Roster roster = connection.getRoster();
    RosterGroup rosterGroup = roster.getGroup(groupName);
    Collection<RosterEntry> entries = rosterGroup.getEntries();
    for (RosterEntry entry : entries) {
       String user = entry.getName();
       System.out.println(String.format("Sending message " + message + " to user " + user));
        Chat chat = chatManager.createChat(user, messageListener);
        chat.sendMessage(message);
    }
}

如果您需要分类,请在评论中询问。

在接收端,您如何识别这是一封群发邮件?这将作为一条单独的消息接收。确切地说,我正在rooster上迭代,然后为组中的每个用户传递消息。无法在smack中发送组消息。所以这是唯一的出路。也许是广播信息。
classNameOfYourMethod.sendGroupMessage(groupName, groupMessage);