邀请听众不工作打击4.2

时间:2017-01-23 14:48:31

标签: android openfire smack multiuserchat

我可以成功创建群聊室XMPP(smack)。我已经添加了         邀请听众,但从未打过电话。有谁知道怎么做?

使用:

  1. XMPP
  2. Smack 4.2
  3. Openfire服务器
  4. 发送邀请码:

     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();
                        }
                    }
                });
    

1 个答案:

答案 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才是有效的