我可以成功创建群聊室XMPP(smack)。我已经添加了 邀请听众,但从未打过电话。有谁知道怎么做?
muc.invite(userId +"@" +XMPP.getInstance().HOST + "/Smack", "Meet me in this excellent room");
MultiUserChatManager manager = MultiUserChatManager.getInstanceFor(connection);
manager.addInvitationListener(new InvitationListener() {
@Override
public void invitationReceived(XMPPConnection xmppConnection, MultiUserChat muc, String inviter, String reason, String password, Message message) {
try {
muc.join(nickname);
} catch (SmackException.NoResponseException e) {
e.printStackTrace();
} catch (XMPPException.XMPPErrorException e) {
e.printStackTrace();
} catch (SmackException.NotConnectedException e) {
e.printStackTrace();
}
}
});
答案 0 :(得分:0)
您可能遇到RESOURCE
。
当您向某个 JID 发送邀请时,您可能会忽略资源部分,或者该消息将仅发送到指定的资源。
JID由以下方式组成:
user@serverdomain/resource
通过此邀请,您只邀请使用“ Smack ”作为资源的用户。
资源它在AbstractXMPPConnection
对象或登录阶段中配置
XMPPTCPConnectionConfiguration.builder()
.setServiceName(serverName)
.setHost(server)
.setPort(port)
.setResource( RESOURCE_IDENTIFIER)
.build();
connection = new XMPPTCPConnection(config);
connection.login(username, password, RESOURCE_IDENTIFIER);
所以,可能,你宣称你的资源识别器(只是一个任意的字符串)不是“Smack”而是“Spark”或其他东西或者是默认的。
只需省略资源部分(或修正正确的部分,但我建议省略)
muc.invite(userId +"@" +XMPP.getInstance().HOST, "Meet me in this excellent room");
当然,userId必须存在并且HOST才是有效的