Android Smack 4.2:“XMPPError: feature-not-implemented - cancel”(错误)

Posted

技术标签:

【中文标题】Android Smack 4.2:“XMPPError: feature-not-implemented - cancel”(错误)【英文标题】:Android Smack 4.2 : "XMPPError: feature-not-implemented - cancel" (Error) 【发布时间】:2017-06-02 12:40:43 【问题描述】:

我正在尝试检索Archived Messages From OpenFire

请注意:

    我已添加存档消息插件。 相同的代码在本地运行良好,openfire 的服务器安装没有抛出错误。 我已经浏览了互联网上提供的所有解决方案,但未能成功。 我可以在 openfire 面板中看到存档的消息。

下面是检索消息的代码:

public MamManager.MamQueryResult getArchivedMessages() 
        //org.jivesoftware.smack.XMPPException$XMPPErrorException: XMPPError: feature-not-implemented - cancel
        try 
            MamManager mamManager = MamManager.getInstanceFor(connection);
            boolean isSupported = mamManager.isSupportedByServer();
            if (isSupported) 
                MamManager.MamQueryResult mamQueryResult = mamManager.pageAfter(JidCreate.from(mUsername + SERVICE_NAME), "2r2Vf-68", 250);
                List<Forwarded> forwardedMessages = mamQueryResult.forwardedMessages;
                Forwarded d = forwardedMessages.get(0);
            

         catch (Exception e) 
            e.printStackTrace();
        
        return null;
    

除此之外,我也在尝试为smack 4.2 实现OfflineMessageManager

下面是离线管理的代码:

   public static void handleOfflineMessages() throws Exception 
        OfflineMessageManager offlineMessageManager = new OfflineMessageManager(getConnection());

        if (!offlineMessageManager.supportsFlexibleRetrieval()) 
            return;
        

        if (offlineMessageManager.getMessageCount() == 0) 
            String d = "ss";
         else 
            List<Message> msgs = offlineMessageManager.getMessages();
            for (Message msg : msgs) 
                BareJid fullJid = msg.getFrom().asBareJid();
                String messageBody = msg.getBody();
                if (messageBody != null) 

                
            
            // offlineMessageManager.deleteMessages();
        

    

注意:上面的方法没有抛出任何错误我总是 得到消息计数= 0。我在关注官方 文档为此。即不发送存在以使所有离线 消息。但没有这样做。

这是官方文档的链接:OfflineMessageManager

谁能指出我做错了什么?

【问题讨论】:

关于未实现 MAM 功能,您能说说您使用的 Openfire、Archive Plugin 和 Smack 的版本吗? 关于离线消息,您是否确认您的离线消息确实存储在服务器上?您可以查看 Openfire 数据库中的消息吗? 我的存档插件的版本是:Monitors conversations and statistics of the server : 1.5.7: IgniteRealtime // Jive Software 抱歉,我无法验证离线消息在 openfire 数据库中的存储位置,请告诉我如何检查以及选项在哪里 我已经添加了数据库访问插件,我正在尝试获取数据库,但我在每个数据库中都看到了 null 【参考方案1】:

在 OF 中的插件处重新加载 监控服务 都这样

【讨论】:

以上是关于Android Smack 4.2:“XMPPError: feature-not-implemented - cancel”(错误)的主要内容,如果未能解决你的问题,请参考以下文章

Android Smack 4.2:“XMPPError: feature-not-implemented - cancel”(错误)

如何在 Smack 4.2 中使用证书

我在使用 smack 4.2 Openfire 创建 XMPP 客户端时遇到问题

在与 Smack 4.2 重新连接后发送离线消息时,经过身份验证的侦听器出现异常

SASLErrorException: SASLError using DIGEST-MD5: not-authorized while using Smack 4.2

android中的XMPP连接使用smack