2016-08-17 1 views
-6

Dans mon application, je veux créer des groupes et ajouter des utilisateurs aux groupes utilisant smack 4.1. Je suis capable de créer un groupe mais je ne peux pas ajouter d'utilisateur dans ce groupe. Mon code pour créer des groupes est ...Comment créer un chat de groupe xmpp et ajouter des membres en utilisant smack 4.1 dans android

créer un groupe

if (connection != null) { 
     String groupName = XmppUtils.buildMUCName(grpName); 
     MultiUserChat multiUserChat = managerMuc.getMultiUserChat(groupName); 
     if (!multiUserChat.isJoined()) { 
      boolean createNow; 
      try { 
       multiUserChat.createOrJoin(grpName); 
       createNow = true; 
       if (createNow) { 
        Form form = multiUserChat.getConfigurationForm().createAnswerForm(); 
        form.setAnswer("muc#roomconfig_publicroom", true); 
        form.setAnswer("muc#roomconfig_roomname", grpName); //      form.setAnswer("muc#roomconfig_roomowners", userDate.getUserId().toString() + "@" + Config.ChatValues.SERVICE_NAME); 
        form.setAnswer("muc#roomconfig_persistentroom", true); 
        List<String> cast_values = new ArrayList<String>(); 
        cast_values.add("moderator"); 
        cast_values.add("participant"); 
        cast_values.add("visitor"); 
        form.setAnswer("muc#roomconfig_presencebroadcast", cast_values); 
        multiUserChat.sendConfigurationForm(form); 
        multiUserChat.join(userDate.getUserId().toString() + "@" + Config.ChatValues.SERVICE_NAME); //      multiUserChat.sendConfigurationForm(new Form(DataForm.Type.submit)); //this is to create the room immediately after join. 
       } 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } else { 
      Log.e("createGroup", "=======multiUserChat.isJoined()=====>"); 
     } 
    } 

Code pour ajouter des utilisateurs c'est ce que je fais pour ajouter des utilisateurs

// Create a MultiUserChat using an XMPPConnection for a room 

    String roomName = groupName + "@" + Config.ChatValues.GROUP_SERVICE_NAME; 
    MultiUserChat muc2 = managerMuc.getMultiUserChat(roomName); 
    // User2 joins the new room 
    // The room service will decide the amount of history to send 
    // The number of chat room services will decide to accept the historical record 
    /* DiscussionHistory history = new DiscussionHistory(); 
    history.setMaxStanzas(0);*/ 

    //history.setSince(new Date()); 
    try { 

     for (int i = 0; i < selectedLisrArray.size(); i++) { 
      String userId = selectedLisrArray.get(i).userId.toString() + "@" + Config.ChatValues.SERVICE_NAME; 
      Log.e("joinGroups", "=========>" + roomName + " users to join " + userId); 

      muc2.invite(msg, userId, "let's join this room "); 
      muc2.sendMessage(userId + " : You have joined the group : " + roomName); 
     } 

    } catch (SmackException.NotConnectedException e) { 
     e.printStackTrace(); 
    } 
+1

salut ce que vous avez étudié et essayé tant pour pour chat en groupe? – Saveen

+0

Je suis capable de créer un groupe mais je ne peux pas ajouter d'utilisateur dans ce groupe –

+0

puis poster ton code que tu as essayé, comment les autres peuvent-ils comprendre quel est ton problème et pourquoi tu ne peux pas ajouter un utilisateur au chat? –

Répondre

1

Je fait petit peu même.Juste vous envoyez une invitation, puis installer plugin Abonnement sur openfire si vous avez utilisé.Modifier les paramètres pour accepter toute demande. Si vous n'utilisez pas openfire alors vous acceptez simplement leur invitation de l'autre côté. J'espère que cela vous aidera.

MultiUserChat muc = new MultiUserChat(XMPP.getInstance().getConnection(getActivity()), groupname); 
       try { 
        muc.create(StringUtils.parseName(XMPP.getInstance().getConnection(getActivity()).getUser())); 
        muc.sendConfigurationForm(new Form(Form.TYPE_SUBMIT)); 
       } catch (XMPPException e) { 
       } catch (NoResponseException e) { 
        e.printStackTrace(); 
       } catch (SmackException e) { 
        e.printStackTrace(); 
       } 

       for (int i = 0; i < alSelectedContacts.size(); i++) { 

        Log.e("tag", "group chating purpose1 ::" + alSelectedContacts.get(i).get("id")); 
        try { 
         muc.invite((alSelectedContacts.get(i).get("id") + "_user") + "@" + XMPP.HOST, 
           alSelectedContacts.get(i).get("id") + "_user"); 
        } catch (NotConnectedException e) { 
         e.printStackTrace(); 
        } 

       } 

       try { 
        muc.sendMessage("New group created"); 
       } catch (NotConnectedException e1) { 
        e1.printStackTrace(); 
       } catch (XMPPException e1) { 
        e1.printStackTrace(); 
       } 

Obtenir invitation Mue ici,

MultiUserChat.addInvitationListener(mXmppConnection, 
     new InvitationListener() { 

      @Override 
      public void invitationReceived(Connection connection, 
        String room, String inviter, String reason, 
        String unKnown, Message message) { 

       //MultiUserChat.decline(mXmppConnection, room, inviter, 
        // "Don't bother me right now"); 
       // MultiUserChat.decline(mXmppConnection, room, inviter, 
       // "Don't bother me right now"); 
       try { 
        muc.join("test-nick-name"); 
        Log.e("abc","join room successfully"); 
        muc.sendMessage("I joined this room!! Bravo!!"); 
       } catch (XMPPException e) { 
        e.printStackTrace(); 
        Log.e("abc","join room failed!"); 
       } 
      } 
     }); 
+0

comment les autres utilisateurs obtiennent cette invitation et comment il peut accepter –

+0

Invitation obtenir comme un message et après juste besoin d'appeler cela, muc.join ("test-pseudo"); – Saveen

+0

J'ai édité ma réponse s'il vous plaît vérifier. – Saveen