2016-12-14 4 views
1
MultiUserChatManager manager = MultiUserChatManager.getInstanceFor(xmppconnection.getConnection()); 
try { 
    MultiUserChat muc = manager.getMultiUserChat("[email protected]"); 

    muc.join("[email protected]"); 

    Message msg = new Message("[email protected]", Message.Type.groupchat); 
    msg.setBody("Hi Testing..Group chat.."); 
    muc.sendMessage(msg); 
    // muc.join("test", "1234"); 
} catch (SmackException.NotConnectedException e) { 
    e.printStackTrace(); 
} catch (SmackException e) { 
    e.printStackTrace(); 
} catch (XMPPException.XMPPErrorException e) { 
    e.printStackTrace(); 
} catch (XMPPException e) { 
    e.printStackTrace(); 
} 

Fehler ist:Smack Openfire Android Nachricht kann nicht Group/Zimmer Fehler senden 403 verboten

Fehlercode = "403" type = "auth" verboten xmlns = "urn: ietf: params: xml: ns: xmpp-stanzas "/> **

+0

ist es Raum ID .. 'getMultiUserChat (" [email protected] ");'? –

+0

ja seine Zimmer ID. Informationen des Benutzers erhalten, aber nach dem Beitritt zur Gruppe keine Nachricht senden können. –

+0

@DimaSan ja es ist –

Antwort

0

Es gibt mehrere Fehler, logische und Prozeduren.

Mit diesem Aufruf:

MultiUserChat muc = manager.getMultiUserChat("[email protected]"); 

Sie haben in muc Objekt Ihre Gruppenchat. Sie müssen also überprüfen, ob Sie bereits diesem groupchat beigetreten sind, oder double join wird eine Ausnahme auslösen.

so

if (!muc.isJoined()) 
muc.join("My nickname"); 

mehr, wenn Sie beitreten, müssen Sie einen eindeutigen Spitznamen pro Benutzer zur Verfügung stellen zu verbinden, oder Sie eine Ausnahme mit dem zweiten Benutzer erhalten. Als Nickname den gleichen Namen des Groupchats gesetzt ist es 99% ein logischer Fehler.

Schließlich, um eine Nachricht zu senden, senden Sie es einfach durch MUC Objekt oder Sie riskieren, wie in diesem Fall, einige Informationen zu verpassen.

So senden Sie es nur mit

muc.send("Hi Testing..Group chat.."); 

Last but not least: natürlich multiuserchat muss vorhanden ist oder vor richtig inititilized, ist es eine Voraussetzung, all dies zu tun. Als ersten Schritt, erstellen Sie es einfach in Openfire mit http-Admin-Panel (machen Sie es persistent)

+1

Vielen Dank :) –