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 - 在邀请监听器内加入房间的用户的逻辑不起作用

强制将客户加入房间

无法从服务器 XMPP 框架中获取 XMPPRoom 的详细信息

Android 使用 xmpp 接受群聊邀请

如何使用objective c拒绝xmpp群聊接收邀请

eJabberd 不能邀请多个用户到多个 MUC 房间