Android 如何在asmack中使用PubSubManager发布和解析

Android 如何在asmack中使用PubSubManager发布和解析,android,xmpp,asmack,Android,Xmpp,Asmack,我正在Android平台上开发一个IM应用程序,使用asmack lib和openfire作为xmpp服务器。由于用户在和服务器断开连接时无法在聊天室中持久存在,所以我决定实现PubSubManager的概念。我浏览了很多链接,但对于使用有效负载发布和从有效负载中检索消息,没有得到任何好的解释。下面是我创建和订阅该节点并发布有效负载的代码 ConfigureForm form = new ConfigureForm(FormType.submit); form.setAccessModel(Ac

我正在Android平台上开发一个IM应用程序,使用asmack lib和openfire作为xmpp服务器。由于用户在和服务器断开连接时无法在聊天室中持久存在,所以我决定实现PubSubManager的概念。我浏览了很多链接,但对于使用有效负载发布和从有效负载中检索消息,没有得到任何好的解释。下面是我创建和订阅该节点并发布有效负载的代码

ConfigureForm form = new ConfigureForm(FormType.submit);
form.setAccessModel(AccessModel.open);
form.setDeliverPayloads(true);
form.setNotifyRetract(true);
form.setNotifyDelete(true);
form.setPublishModel(PublishModel.open);

leafNode = pubSubManager.createNode("testnode");
leafNode.sendConfigurationForm(form);

leafNode.subscribe(MY_JID);

SimplePayload payload = new SimplePayload(
            "elementname",
            "pubsub:testnode:elementname",
            "<elementname>my content</elementname>");
PayloadItem<SimplePayload> item = new PayloadItem<SimplePayload>(
             null, payload);

leafNode.publish(item);
ConfigureForm表单=新配置表单(FormType.submit);
form.setAccessModel(AccessModel.open);
form.setDeliverPayloads(真);
form.setNotifyRetract(true);
form.setNotifyDelete(true);
form.setPublishModel(PublishModel.open);
leafNode=pubSubManager.createNode(“testnode”);
leafNode.sendConfigurationForm(表单);
订阅(MY_JID);
SimplePayload负载=新SimplePayload负载(
“元素名称”,
“pubsub:testnode:elementname”,
“我的内容”);
PayloadItem=新的PayloadItem(
空,有效载荷);
leafNode.publish(项目);

发布此项目时我没有问题。发布此项目时,我的聊天侦听器会被一个消息对象触发(因为我在该节点中订阅了自己),我无法从中获取消息正文(null)。因此,我的发布过程是否正确,如果正确,我如何在接收时检索它。

您不希望通过聊天室接收消息,毕竟它实际上不是聊天室消息

请参阅,特别是“接收pubsub消息”