【问题标题】:Enabling XEP-0198 in aSmack在 aSmack 中启用 XEP-0198
【发布时间】:2014-04-22 12:12:54
【问题描述】:

我目前正在对启用了 XEP-0198 的 XMPP 服务器使用 asmack。

我正在尝试从 asmack 库中启用此功能,但我找不到任何有关如何执行此操作的信息,因此请关注 http://xmpp.org/extensions/xep-0198.html 我知道我必须通过发送来启用此功能:

<enable xmlns='urn:xmpp:sm:3'/>

但我不知道该怎么做,因为这不是一个节。任何帮助表示赞赏。

编辑: 正如 dant3 指出的那样,Smack 不支持 XEP-0198,但我仍然想通过 Smack 发送那个简单的 XML 来启用它,我只是不知道该怎么做。

【问题讨论】:

    标签: android xmpp smack asmack


    【解决方案1】:

    看起来像 do not have XEP-0198 implementation。所以,你不能启用它。

    如果您将它贡献给 smack(因此 - 用于 asmack),那就太好了。

    编辑:

    Smack 4.1.0 现在支持 XEP-0198 流管理。有关详细信息,请参阅此wiki page

    【讨论】:

    • 感谢现实检查。即使它不受支持,也必须有一种方法可以发送该 XML 以有效地启用它,对吧?
    • 是的,但我看不出它如何帮助您实施 XEP-0198。用 smack 解析这样的节将需要你按照现在的方式进行分叉。
    • Smack 4.1.0 现在支持 XEP-0198 流管理。 github.com/igniterealtime/Smack/wiki/…
    • 感谢分享。我相应地更新了帖子。
    【解决方案2】:

    我通过创建自己的包类型解决了这个问题:

    public class MyPacket extends Packet
    {
        private String content = "";
    
        public MyPacket(String content)
        {
            this.content = content;
        }
        @Override
        public String toXML()
        {
            return this.content;
        }
    }
    

    我在构造函数中传递 xml,然后关闭它:

    MyPacket p = new MyPacket("<enable xmlns='urn:xmpp:sm:3'/>");
    this.connection.sendPacket(p);
    

    绝对不是世界上最好的代码,但它确实有效。

    【讨论】:

    • 我认为这不足以实际使用 XEP-0198 的功能。
    • 事实并非如此,我实际上发现除非我修改核心库,否则无法绕过 smack 使用 XEP-0198。我能够像这样启用它!
    • 你还有什么发现吗?
    猜你喜欢
    • 2015-10-22
    • 2016-08-22
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 2015-04-06
    • 1970-01-01
    相关资源
    最近更新 更多