阻止名册中的状态更新

时间:2015-11-29 10:32:49

标签: java xmpp ejabberd smack mongoose-im

我目前正在为Android构建聊天应用程序。

XMPP Server: MongooseIM.

XMPP Client: Smack 4.1.5.

目前,已登录的用户不断从他的烘焙伙伴那里获得状态更新。我希望仅在应用程序打开时接收这些状态更新,并在应用程序关闭时阻止它们。有没有办法实现这种行为?我曾尝试使用隐私列表,但没有运气。

这是我到目前为止所尝试过的。

        PrivacyListManager privacyManager = PrivacyListManager.getInstanceFor(mXMPPConnection);
        ArrayList privacyItems = new ArrayList();
        PrivacyItem item = new PrivacyItem(PrivacyItem.Type.subscription, "to", false, 1);
        item.setFilterPresenceIn(true);
        privacyItems.add(item);
        privacyManager.createPrivacyList("subscription", privacyItems);

1 个答案:

答案 0 :(得分:0)

我假设您希望保持连接以接收消息,但希望限制在线流量。

ejabberd支持XEP-0352 Client State Indication,这正是如此。进入后台时,将客户端切换到非活动模式,并且不会发送状态更新。返回前台时,将CSI状态切换为活动状态,您将收到相关的状态更新,通过删除冗余的过时状态信息进行优化。

您可以查看ejabberd文档:mod_client_state