2017-01-11 5 views
1

私はグループチャットのための部屋を作成しました。グループを作成してメンバーを追加しましたが、グループのメンバーが永続していないという問題があります。 グループメンバーは、をリフレッシュした後で自動的に削除されます。グループメンバーはアンドロイドでオープンファイアを継続していませんか?

コード:

コード:部屋に作成および接合

public void createReservedRoom(Context context, String jidName, String roomName, String nickName){ 

     try { 
      connect(); 

      MultiUserChat muc = getMultiUserChat(jidName); 
      muc.create(nickName); 
      try { 
       //PreferenceUtils.setObject(context, muc, PreferenceUtils.MUC_OBJ); 
      }catch (Exception e){ 
       e.printStackTrace(); 
      } 
      Form form = getForm(muc, roomName); 

      // Send the completed form 
      muc.sendConfigurationForm(form); 

      muc.join(nickName); 
     }catch (Exception e){ 
      e.printStackTrace(); 
     } 
    } 

コード:作成室

ジャバーID

private MultiUserChat getMultiUserChat("123456789"){ 
     MultiUserChatManager manager = MultiUserChatManager.getInstanceFor(getXmppConnection()); 
     String jid = "[email protected]"; 
     return manager.getMultiUserChat(jid); 
    } 

コードを生成します

private Form getForm(MultiUserChat muc, String roomName){ Form form = null; try { form = muc.getConfigurationForm().createAnswerForm(); // Create a new form to submit based on the original form form.setAnswer("muc#roomconfig_passwordprotectedroom", false); form.setAnswer("muc#roomconfig_roomname", roomName); form.setAnswer("muc#roomconfig_persistentroom", true); form.setAnswer("muc#roomconfig_changesubject", true); form.setAnswer("muc#roomconfig_publicroom",true); form.setAnswer("muc#roomconfig_allowinvites",true); form.setAnswer("muc#roomconfig_membersonly",true); form.setAnswer("muc#roomconfig_moderatedroom",false); // Sets the new owner of the room List<String> owners = new ArrayList<String>(); //Be carefull: if members does not exists, it brakes! owners.add("[email protected]"); form.setAnswer("muc#roomconfig_roomowners", owners); } catch (SmackException.NoResponseException e) { e.printStackTrace(); } catch (XMPPException.XMPPErrorException e) { e.printStackTrace(); } catch (NotConnectedException e) { e.printStackTrace(); } return form; } 

答えて

0

グループチャットは「メンバー」をサポートしていません。

グループチャットでは、占有者(実際にグループチャットでセッションに参加したユーザー)とアフィリエイト、特定の役割を持つユーザー(所有者、管理者、メンバー、および幹部)を持つことができます。

「メンバー」とは、基本的に、チャットのモデレーター(管理者)ではないことを意味します。しかし、基本的には、追加した各メンバーに次のセッションで自動的にグループチャットに参加してもらいたいので、ユーザーはグループチャットに加入する必要があります。

また、グループチャットでwhatsappのような人をしたい場合は、すべての "admin"所属を与えたり、与えられたグループチャットにすべてのサブスクリプションを取得したりすることでシミュレートできます。それは大きな話題です...

+0

こんにちは、同じチュートリアルやリファレンスをお勧めしますか? –

+0

http://xmpp.org/extensions/xep-0045.html。いったん私が多かれ少なかれ答えたのは、アフィリションに永続メンバーリストを「ハッキング」する方法です(もちろんアフィリエイトのネイティブ機能を失うことになります)。http://stackoverflow.com/questions/37431642/create-muc-group -like-whatsapp-android/37434195#37434195また、http://stackoverflow.com/questions/37524493/smack-presence-listener-in-multi-user-chat/37525135#37525135も参照できます(忘れずに何かが役に立ったら投票してください!) - > SMACK docs:http://download.igniterealtime.org/smack/docs/latest/documentation/extensions/muc.html – MrPk

関連する問題