gpt4 book ai didi

java - 多用户聊天中的 smack 状态监听器

转载 作者:太空宇宙 更新时间:2023-11-03 13:48:57 25 4
gpt4 key购买 nike

多用户聊天中的 smack 状态监听器未被调用。使用 Smack Api 登录,然后添加 roster.addRosterListener(mRoasterListener); 但是当聊天室其他用户的存在发生变化时无法成功收听。我尝试了以下代码来让存在监听器工作:

connection.login(loginUser, passwordUser);

MultiUserChatManager manager =

MultiUserChatManager.getInstanceFor(connection);

muc = manager.getMultiUserChat(roomID + "@" +context.getString(R.string.group_chat_id));

Log.d("Join User: ", "Already Created");

muc.join(Utilities.getUserPhoneNo(context));

muc.addMessageListener(mGroupMessageListener);

Roster roster = Roster.getInstanceFor(connection);//luna

roster.addRosterListener(mRoasterListener);//roasterListener

Log.d("Joined User Phone: ", " " + Utilities.getUserPhoneNo(context));

这个类用来监听 presence 的变化...

public class RoasterListener implements RosterListener{
public RoasterListener(Context context){

}

@Override
public void entriesAdded(Collection<String> collection) {

}

@Override
public void entriesUpdated(Collection<String> collection) {

}

@Override
public void entriesDeleted(Collection<String> collection) {

}

@Override
public void presenceChanged(Presence presence) {
System.out.println("Presence changed: " + presence.getFrom() + " " + presence);
}
}

我尝试了 stackoverflow 提供的许多链接,但都没有成功。请帮忙!

最佳答案

对于多用户聊天,您不必使用花名册,因为遇到不在花名册中的人是很正常的。

要知道谁在 muc 中,请先询问居住者:

muc.join(user,password);

List<String> occupantsAtJoinTime = muc.getOccupants();

for (String occupant : occupantsAtJoinTime)
{
System.out.println("occupant: "+occupant);
//actions
}

然后,为了更新 Occupants 列表,向您的 muc 注册一个 DefaultParticipantStatusListener 并定义该 Listner:

muc.addParticipantStatusListener(new CustomParticipantStatusListner());

定义为(有很多方法可以根据需要实现):

    public class CustomParticipantStatusListner extends DefaultParticipantStatusListener 
{

public void joined(String participant)
{
System.out.println(participant + "just joined MUC");
//actions (add occupantsRightNow)
}

public void left(String participant)
{
System.out.println(participant + " just left MUC");
//actions (remove occupantsRightNow)
}
}

所有这一切都与 smack 4.1.7

关于java - 多用户聊天中的 smack 状态监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37524493/

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