gpt4 book ai didi

android - 无法使用 smack-android :4. 1.4 接收群聊消息

转载 作者:搜寻专家 更新时间:2023-11-01 09:39:27 24 4
gpt4 key购买 nike

我正在使用 smack 库开发聊天应用程序。我在群聊中遇到问题。在我的应用程序中,我正在创建一个群组,其中的成员是自动加入的。我想在群组中发送消息时通知所有用户,即使他们没有发起聊天。我的代码如下所示,因为我有将监听器放在 init 方法中但无法接收消息。

        multiUserChatManager = MultiUserChatManager.getInstanceFor(mConnection);
mMultiUserChat = multiUserChatManager.getMultiUserChat(to);
mConnection.addAsyncStanzaListener(this, null);
DiscussionHistory history = new DiscussionHistory();
history.setMaxStanzas(0);
mMultiUserChat.addMessageListener(this);
mConnection.addSyncStanzaListener(this, null);
try {
mMultiUserChat.join(from, "", history, SmackConfiguration.getDefaultPacketReplyTimeout());
} catch (SmackException.NoResponseException e) {
e.printStackTrace();
} catch (XMPPException.XMPPErrorException e) {
e.printStackTrace();
} catch (SmackException.NotConnectedException e) {
e.printStackTrace();
}

这里是组的消息监听器

 @Override
public void processMessage(Message message) {
Logg.e(TAG,"Message received group..");
}

我不知道为什么当有人在组中发送消息时这个方法不调用,即使我加入了组,如果我创建 1 个组并加入 2 个用户,当 1 个用户在组中发送消息时 user2 不能接收消息,但是当用户 2 在该组内发送消息时,他们都能够接收消息。

请帮助我,我找不到解决方案。请不要给出已经弃用的建议。

提前致谢!

最佳答案

完整的代码审查后,我正在编辑完整的答案。 -再次-

我建议重构您的代码,以在超过 1 个大类中保持角色分离。

基本上,由于您的代码中有许多“addasync - addsync”,您在错误的监听器中接收消息,并且您能够接收消息,就像您的 monster-class-all-in 的副作用一样!

我看到您需要对代码应用许多优化。但是,解释起来太长了,也没有问题,例如:

1. sendGroupMessage You can check by MultiUserChatManager if you
already joined the chat and then send the message. You must fire a
"join" just once, not everytime you want to send a message.

2。 mMultiUserChat.addMessageListener(this); 必须添加一次监听器,否则您将创建大量线程。可能它有效,因为你有一个单例。当你有一个监听器时,如果你不删除它,你就不需要再将它添加到该聊天中。

  1. mConnection.addSyncStanzaListener(this, null);小心:您正在将您的监听器(哪一个?您实现了大量具有相同类的监听器)添加到您的连接中。之前或之后你的代码将吃掉一个重要的节(很可能是一个自定义 IQ)并且你将很难发现副作用。
  2. mConnection.addAsyncStanzaListener(this, null); 同 3
  3. 在之前或之后检查 ProviderManager.addExtensionProvider()你需要一些。

希望对您有所帮助。

关于android - 无法使用 smack-android :4. 1.4 接收群聊消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40719732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com