XMPP 房间邀请
Posted
技术标签:
【中文标题】XMPP 房间邀请【英文标题】:XMPP Room Invitation 【发布时间】:2012-10-23 10:26:12 【问题描述】:在我的聊天应用程序中,我想实现群聊功能。同样,我想创建房间并将邀请发送给我的朋友加入房间。这是我加入并邀请朋友加入房间的代码。
创建房间
//Create Room
btn_CreateRoom = (Button)findViewById(R.id.btn_usermenu_CreateRoom);
btn_CreateRoom.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View arg0)
// TODO Auto-generated method stub
try
muc = new MultiUserChat(connection, "room1@conference.abc.com");
muc.join("Sunil","123456");
muc.sendConfigurationForm(new Form(Form.TYPE_SUBMIT));
catch (XMPPException e)
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("Room Created");
);
btn_Invite = (Button)findViewById(R.id.btn_usermenu_InviteToRoom);
btn_Invite.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
// TODO Auto-generated method stub
muc.invite("sunil@abc.com", "Please join this room");
);
为了接收邀请,我在我的服务类中实现了一个邀请监听器。但我无法通过通知收到邀请。是代码的问题。
这是我的邀请监听器。
MultiUserChat.addInvitationListener(connection, new InvitationListener()
@Override
public void invitationReceived(Connection arg0, String arg1, String arg2,
String arg3, String arg4, Message arg5)
// TODO Auto-generated method stub
System.out.println("Received??");
notification("Invitation Received");
请告诉我为什么我没有收到邀请。??
谢谢
【问题讨论】:
你可以做日志来了解状态;您的代码在哪里阻塞以及侦听器是否收到来自服务器的回调(即从房间到加入)并且客户端线程已准备好接收邀请。 静态 void main 是正确的。你应该执行调试并查明问题,以便我们提供帮助 @SherazKhilji 是的,邀请已发送,我已在服务类中编写了我的邀请监听器。邀请只是发送。但它根本没有收到。我已经调试过了。 【参考方案1】:你在xmppconnection.connect()
之后写了这段代码
MultiUserChatManager.getInstanceFor(connection).addInvitationListener(new InvitationListener()
@Override
public void invitationReceived(XMPPConnection conn, MultiUserChat room, String inviter, String reason, String password, Message message)
MultiUserChatManager manager = MultiUserChatManager.getInstanceFor(conn);
try
room.join("pandian");
catch (SmackException.NoResponseException e)
e.printStackTrace();
catch (XMPPException.XMPPErrorException e)
e.printStackTrace();
catch (SmackException.NotConnectedException e)
e.printStackTrace();
);
它对我有用..试试吧
【讨论】:
【参考方案2】:你可以试试这个
public class myclass extends Activity implements InvitationListener
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MultiUserChat.addInvitationListener(Connection,myclass.this);
@Override
public void invitationReceived(Connection conn, final String room,
String inviter, String reason, String password, Message message)
Log.e("inviter", inviter);
Log.e("message", message.getBody());
Log.e("reason", reason);
Log.e("room", room);
这可能会解决您的问题。
【讨论】:
@AnjaliTripathi 你可以这样做 MultiUserChat muc=new MultiUserChat(conn, room); muc.join("我的昵称"); 通过此链接***.com/questions/25384627/…【参考方案3】:我们在这里错过了主题:
只需添加以下代码即可加入群组:
private void setChatRoomInvitationListener()
Thread thread = new Thread(new Runnable()
@Override
public void run()
MultiUserChat.addInvitationListener(xmppConnection, new InvitationListener()
@Override
public void invitationReceived(Connection connection,String room, String inviter, String reason,String unKnown, Message message)
XMPPConnectionUtils.configureChatStandards();
MultiUserChat muc = new MultiUserChat(connection, room);
try
muc.join("My_Name_Here");
catch (XMPPException e)
e.printStackTrace();
);
);
thread.start();
希望这会有所帮助。
【讨论】:
以上是关于XMPP 房间邀请的主要内容,如果未能解决你的问题,请参考以下文章
XMPP群聊java - 在邀请监听器内加入房间的用户的逻辑不起作用