【问题标题】:I want to disable retrieving Group chat (MUC) history while joining a group - Android我想在加入群组时禁用检索群组聊天 (MUC) 历史记录 - Android
【发布时间】:2015-02-13 19:46:03
【问题描述】:

我在加入聊天室时总是会收到群聊历史记录。更具体地说,每当我加入一个群组时,我都会收到我发送给该群组的最后一条消息(只有一条消息)。我尝试了以下方法来禁用它..

  • 根据documentation suggests,我在加入房间时已将值'maxchars='0'' 与初始存在的历史参数一起传递。
  • 在网页管理页面转到群聊部分,然后群聊设置 -> 群聊服务属性 -> 历史设置 -> 不显示历史记录

尽管我已经尝试了所有这些可能的方式,但在加入房间时仍然会收到历史消息。请注意我在加入时收到的消息包含延迟扩展。如果重要的话。

【问题讨论】:

  • MUC服务运行的是什么实现?
  • 我们使用 Openfire 作为 XMPP 服务器。目前我们还没有安装带有 openfire 的 MUC 插件。会不会有问题。。但是我们仍然可以从群聊 -> 群聊设置 -> 克里特岛新服务添加新服务。我们还可以在该服务中创建新组。
  • 这个问题似乎与this question 相似,但我不认为它是重复的。奇怪的是 Openfire 不尊重 maxchars 属性...
  • 我已经实现了作为解决方案给出的方法。但为什么它会发生?这是我的 android 客户端(SMACK)库中的错误吗?
  • @Saamzzz 你有解决这个问题的方法吗?我目前正面临这个问题,以下解决方案对我不起作用。

标签: android xmpp openfire smack muc


【解决方案1】:

试试这个..

    MultiUserChat muc = new MultiUserChat(mConnection, room_name);
    Log.d(TAG, "JOINING => " + room_name);

    DiscussionHistory history = new DiscussionHistory();
    history.setMaxStanzas(0);

     muc.join(mNickName, null, history,SmackConfiguration.getDefaultPacketReplyTimeout());

并且如果得到“群组是异步的”这个消息,那么它就像你加入群组的通知一样。只需将这个if条件放在群聊监听器中。

【讨论】:

  • 但是为什么它在加入或重新加入房间/组时返回历史记录?我们不能禁用吗?
  • 是的,我们可以从服务器端和设备端禁用历史记录,上面的代码从设备端禁用历史记录。
  • 当我们加入或重新加入群组时,我们总是收到“群组是异步的”通知
  • 它在我的情况下不起作用。尽管如此,当用户重新加入时,旧消息仍会传递。请指教..
猜你喜欢
  • 2020-12-10
  • 2015-10-25
  • 1970-01-01
  • 2019-12-15
  • 2017-11-12
  • 2012-09-01
  • 2015-10-15
  • 2013-10-16
  • 2017-06-24
相关资源
最近更新 更多