- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想用 java 创建一个简单的 XMPP 客户端,与其他客户端共享他的位置 (XEP-0080)。我已经知道我可以使用 XMPP 的 smack 库并且它支持 XEP-0080 所需的 PEP。有没有人有如何实现这个或任何指针的示例,我没有找到任何使用谷歌的东西。
提前致谢。
最佳答案
Kristof 是对的,文档很少 - 但它们正在变得更好。尽管很难找到,但有一组关于扩展的很好的文档。 PubSub 位于 http://www.igniterealtime.org/fisheye/browse/~raw,r=11613/svn-org/smack/trunk/documentation/extensions/pubsub.html .
在从头开始使用带有扩展的自定义 IQ 提供程序路线后,我发现尽可能多地使用管理器更容易做到这一点。编写管理器的开发人员已经抽象出很多痛点。
示例(在 Smack 论坛上写的一个 rcollier 的修改版 geoloc 版本):
ConfigureForm form = new ConfigureForm(FormType.submit);
form.setPersistentItems(false);
form.setDeliverPayloads(true);
form.setAccessModel(AccessModel.open);
PubSubManager manager
= new PubSubManager(connection, "pubsub.communitivity.com");
Node myNode = manager.createNode("http://jabber.org/protocol/geoloc", form);
StringBuilder body = new StringBuilder(); //ws for readability
body.append("<geoloc xmlns='http://jabber.org/protocol/geoloc' xml:lang='en'>");
body.append(" <country>Italy</country>");
body.append(" <lat>45.44</lat>");
body.append(" <locality>Venice</locality>");
body.append(" <lon>12.33</lon>");
body.append(" <accuracy>20</accuracy>");
body.append("</geoloc>");
SimplePayload payload = new SimplePayload(
"geoloc",
"http://jabber.org/protocol/geoloc",
body.toString());
String itemId = "zz234";
Item<SimplePayload> item = new Item<SimplePayload>(itemId, payload);
// Required to recieve the events being published
myNode.addItemEventListener(myEventHandler);
// Publish item
myNode.publish(item);
或者至少这是困难的方式:)。只是记得现在有一个 PEPManager...
PEPProvider pepProvider = new PEPProvider();
pepProvider.registerPEPParserExtension(
"http://jabber.org/protocol/tune", new TuneProvider());
ProviderManager.getInstance().addExtensionProvider(
"event",
"http://jabber.org/protocol/pubsub#event", pepProvider);
Tune tune = new Tune("jeff", "1", "CD", "My Title", "My Track");
pepManager.publish(tune);
您需要编写 GeoLocProvider 和 GeoLoc 类。
关于java - XEP-0080 Smack 库中的用户位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2387319/
我使用 ejabberd 18 作为 xmpp 服务器,要使用实现 mod_push 的推送通知,我们需要将 ejabberd 服务器连接到扩展 ejabberd 18 的应用服务器,是否有可用的插件
我正在尝试使用 XMPPFramework 和 OpenFire 在 iOS 上通过 XMPP 传输文件。我的代码基础来自以下 tutorial .我有一个成功的 TurnSocket (XEP-00
我有点困惑 XEP-0114作品。使用组件为域提供服务是否意味着服务器将不再代表该域执行任何操作,还是仅仅意味着该组件也将被允许为该域上的所有用户提供服务。 更具体地说,是否可以让多个组件服务于同一个
我正在开发一个移动消息应用程序 (ios),我支持注销功能。当用户再次登录时,我想保留最新的对话列表。因为一旦注销,应用程序的本地存储就会被清理。 我正在成功使用 MAM XEP-0313,但我还没有
我正在寻找一种如何通过使用 XEP-0136 标准从谷歌服务器检索聊天消息存档的方法,但我得到这些结果只是试图请求该功能。 要求: 回复:
我知道 DelayInformationManager 类,我知道这是实现此目的的类。但是,我不知道如何使用它,如何指定 Jid 目的地,如何实际发送等等。 谁能给我一个简短的例子来说明它的用法? 最
我正在 iOS 中开发聊天应用程序并使用 openfire xmpp 服务器?我正在尝试使用 XEP-0191 阻止用户:阻止命令但结果出错。 错误 xmlns="jabber:client"type
我想用 java 创建一个简单的 XMPP 客户端,与其他客户端共享他的位置 (XEP-0080)。我已经知道我可以使用 XMPP 的 smack 库并且它支持 XEP-0080 所需的 PEP。有没
需要附上一个0313 XEP (0.2) http://xmpp.org/extensions/attic/xep-0313-0.2.html#sect-idp616432进入 SMACK/ASMAC
我正在尝试使用 Openfire 制作聊天应用程序和 Strophe.js . 我总是阅读有关 XEP 等的信息,它总是将我重定向到 XMPP Extensions我什至不知道如何使用这些扩展。这似乎
libjingle's developer guide相当含糊地提到了 libjingle 的 Jingle 实现与 XEP-0166 规范之间的不兼容性。它还提到它与 XEP-0167、XEP-01
我无法接收 XMPP 消息,我正在使用以下代码: Message mess = new Message() { @Override public S
我正在研究 MUC,为此我想为已加入的房间添加书签。为此,我使用了 xep-0048 扩展名,并且服务器文档显示我创建了相同的 iq 请求,但书签似乎不起作用。 以下是我的智商要求
我从我的服务器获得了可能的字段: You need an x:data capable client to search Search users in vjud.company.com Fill
在我的应用中,我实现了创建 XMPPRoom 和邀请用户。现在,我正在寻找一种方法来存储这些组(我创建的组或我受邀加入的组),以便我可以在需要时轻松地将其检索回我的应用程序。我遇到了 XEP-0048
我正在使用 aSmack。我的应用程序监听聊天室并对消息使用react,但它从不发送消息。如果聊天室保持沉默一段时间然后发送新消息,则该应用程序不会收到更多消息。我研究过,我认为 XEP-0199是这
我想为用户提供使用长按/选择操作一次删除一条或多条消息的功能。 我知道你想知道到目前为止我尝试了什么。但问题是我还没有找到任何关于删除消息的实现。 感谢任何形式的帮助! 最佳答案 您必须从 xmpp
我正在使用 robbiehanson/XMPPFramework对于我当前的项目,我可以向名册中的人发送和接收消息,但现在我必须实现消息传递状态。我知道 xep 是 0184,我也包含在我的项目中,但
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 9年前关闭。 Improve this q
一旦我有了花名册,我就可以循环遍历所有成员并使用 MamManager 进行查询mamManager.mostRecentPage(jid, QUERY_META_DATA_PAGE_SIZE) 但是
我是一名优秀的程序员,十分优秀!