asmack向一个rouster组发送消息

时间:2014-12-20 07:04:24

标签: xmpp smack

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

Asmach有这个:

 Message msg=new Message(java.lang.String to, Message.Type type)

当我想要使用的单个用户时:消息(“a@b.com”,Message.Type.chat)

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

2 个答案:

答案 0 :(得分:1)

XMPP没有规定将消息发送到名册组的机制。但您可以轻松地自行实现。只收集名册组中的所有JID,并最终收集所有名片,并将信息发送给他们中的每一个(最好使用Smack的MultipleRecpientManager)。

答案 1 :(得分:1)

我设法以下列方式向所有名册组成员发送消息。你可以尝试一下。


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

/**
 * 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);
    }
}

调用方法

classNameOfYourMethod.sendGroupMessage(groupName, groupMessage);

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