邀请监听器不工作 smack 4.2
Invitation Listener not working smack 4.2
XMPP(smack) 可以成功创建群聊了。我已经添加了
邀请监听器,但从未调用过。有人知道怎么做吗?
使用:
- XMPP
- Smack 4.2
- Openfire 服务器
发送邀请码:
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();
}
}
});
您可能对 RESOURCE
有疑问。
当您向某个 JID 发送邀请时,您可以省略 resource 部分,否则消息将仅发送给指定的 资源.
JID的组成方式如下:
user@serverdomain/resource
通过此邀请,您只邀请使用“Smack”作为 Resource 的用户。
资源配置在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" o 其他内容或保留默认值。
直接省略资源部分(或修改正确的部分,但我建议省略)
muc.invite(userId +"@" +XMPP.getInstance().HOST, "Meet me in this excellent room");
当然,userId必须存在,HOST才是有效的
XMPP(smack) 可以成功创建群聊了。我已经添加了 邀请监听器,但从未调用过。有人知道怎么做吗?
使用:
- XMPP
- Smack 4.2
- Openfire 服务器
发送邀请码:
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();
}
}
});
您可能对 RESOURCE
有疑问。
当您向某个 JID 发送邀请时,您可以省略 resource 部分,否则消息将仅发送给指定的 资源.
JID的组成方式如下:
user@serverdomain/resource
通过此邀请,您只邀请使用“Smack”作为 Resource 的用户。
资源配置在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" o 其他内容或保留默认值。
直接省略资源部分(或修改正确的部分,但我建议省略)
muc.invite(userId +"@" +XMPP.getInstance().HOST, "Meet me in this excellent room");
当然,userId必须存在,HOST才是有效的