2017-04-21 3 views
3
var multiUserManager: MultiUserChatManager = MultiUserChatManager.getInstanceFor(constants.obj.connection) 
     var multiUserChat: MultiUserChat =multiUserManager.getMultiUserChat(JidCreate.entityBareFrom(roomName)) 

     var a: Resourcepart = Resourcepart.from(PreferenceManager.getDefaultSharedPreferences(applicationContext).getString("j_id", null)) 
     multiUserChat.join(a) 

     multiUserChat.addMessageListener { object: MessageListener { 
      override fun processMessage(message: Message?) { 
       Log.v("Message is ",message.toString()) 
       Log.v("Message from ",message!!.from.toString()) 
       Log.v("Message is ",message.getBody()) 
       Log.v("Message subject ",message.getSubject()) 
       Log.v("Message is ",message.body) 
      } 

     } } 

zu empfangen und ich habe dies auch versuchen.Nicht in der Lage, Gruppennachricht mit Smack

Ich bin nicht in der Lage, die Nachricht zu erhalten, wenn jemand auf dem Server gesendet, aber ich bin in der Lage, die Nachricht zu senden.

edit:

Dies ist die Ausgabe ich immer bin, wenn ich Taste beitreten. Ich bekomme keinen Fehler im Logcat.

04-25 22:31:45.460 13376-13376/com.example.itstym.smackchat D/on click: fbjg 
04-25 22:31:45.460 13376-13376/com.example.itstym.smackchat D/Room name: room1 
04-25 22:31:45.460 13376-13376/com.example.itstym.smackchat D/Nick name: ank 
04-25 22:31:45.479 13376-13376/com.example.itstym.smackchat V/Multiuser chat: MUC: [email protected]([email protected]/1540794269789260263741678) 
04-25 22:31:45.481 13376-16060/com.example.itstym.smackchat D/SMACK: SENT (0): <iq to='conference.replica3377.cloudapp.net' id='X2GPV-38' type='get'><query xmlns='http://jabber.org/protocol/disco#info'></query></iq> 
04-25 22:31:45.482 13376-16060/com.example.itstym.smackchat D/SMACK: SENT (0): <r xmlns='urn:xmpp:sm:3'/> 
04-25 22:31:47.538 13376-16061/com.example.itstym.smackchat D/SMACK: RECV (0): <a h='15' xmlns='urn:xmpp:sm:3'/><iq xml:lang='en' to='[email protected]/1540794269789260263741678' from='conference.replica3377.cloudapp.net' type='result' id='X2GPV-38'><query xmlns='http://jabber.org/protocol/disco#info'><identity name='Chatrooms' type='text' category='conference'/><feature var='http://jabber.org/protocol/disco#info'/><feature var='http://jabber.org/protocol/disco#items'/><feature var='jabber:iq:register'/><feature var='http://jabber.org/protocol/muc'/><feature var='vcard-temp'/><feature var='urn:xmpp:mucsub:0'/><feature var='http://jabber.org/protocol/muc#unique'/><feature var='http://jabber.org/protocol/rsm'/><feature var='urn:xmpp:mam:tmp'/><feature var='urn:xmpp:mam:0'/><feature var='urn:xmpp:mam:1'/><x type='result' xmlns='jabber:x:data'><field var='FORM_TYPE' type='hidden'><value>http://jabber.org/network/serverinfo</value></field></x></query></iq><r xmlns='urn:xmpp:sm:3'/> 
04-25 22:31:47.541 13376-16060/com.example.itstym.smackchat D/SMACK: SENT (0): <a xmlns='urn:xmpp:sm:3' h='16'/><presence to='[email protected]/ank' id='X2GPV-37'><x xmlns='http://jabber.org/protocol/muc'></x><c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='http://www.igniterealtime.org/projects/smack' ver='os2Kusj3WEOivn5n4iFr/ZEO8ls='/></presence> 
04-25 22:31:47.823 13376-16061/com.example.itstym.smackchat D/SMACK: RECV (0): <presence xml:lang='en' to='[email protected]/1540794269789260263741678' from='[email protected]/an' id='Kd5p0-48'><c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='http://www.igniterealtime.org/projects/smack' ver='os2Kusj3WEOivn5n4iFr/ZEO8ls='/><x xmlns='http://jabber.org/protocol/muc#user'><item role='participant' affiliation='none'/></x></presence> 
04-25 22:31:47.835 13376-16061/com.example.itstym.smackchat D/SMACK: RECV (0): <r xmlns='urn:xmpp:sm:3'/><presence xml:lang='en' to='[email protected]/1540794269789260263741678' from='[email protected]/ank' id='X2GPV-37'><c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='http://www.igniterealtime.org/projects/smack' ver='os2Kusj3WEOivn5n4iFr/ZEO8ls='/><x xmlns='http://jabber.org/protocol/muc#user'><item jid='[email protected]/1540794269789260263741678' role='participant' affiliation='none'/><status code='110'/></x></presence><message xml:lang='en' to='[email protected]/1540794269789260263741678' from='[email protected]/user1' type='groupchat' id='54f75761-b5cd-4955-8d32-5609e89a2417'><x xmlns='jabber:x:event'><composing/></x><delay from='[email protected]' stamp='2017-04-21T11:52:40.966514Z' xmlns='urn:xmpp:delay'/><body>hey</body></message><message xml:lang='en' to='[email protected]/1540794269789260263741678' from='[email protected]/user1' type='groupchat' id='1492776073223:msg'><active xmlns='http://jabber.org/protocol/chatstates'/><delay from='[email protected]' stamp='2017-04-21T12:01:13.896472Z' xmlns='urn:xmpp:delay'/><body>asd&apos;</body></message> 
04-25 22:31:47.835 13376-16060/com.example.itstym.smackchat D/SMACK: SENT (0): <a xmlns='urn:xmpp:sm:3' h='17'/> 
04-25 22:31:47.836 13376-13376/com.example.itstym.smackchat V/Joined response: kotlin.Unit 
04-25 22:31:47.836 13376-13376/com.example.itstym.smackchat V/Joined: true 
04-25 22:31:47.836 13376-13376/com.example.itstym.smackchat I/Choreographer: Skipped 142 frames! The application may be doing too much work on its main thread. 
04-25 22:31:47.841 13376-16061/com.example.itstym.smackchat D/SMACK: RECV (0): <message xml:lang='en' to='[email protected]/1540794269789260263741678' from='[email protected]/ankur' type='groupchat' id='05333f72-0ffc-49ba-8180-23c3b00b5d31'><x xmlns='jabber:x:event'><composing/></x><delay from='[email protected]' stamp='2017-04-24T11:02:35.386083Z' xmlns='urn:xmpp:delay'/><body>jfdgsdk</body></message><message xml:lang='en' to='[email protected]/1540794269789260263741678' from='[email protected]/wefa' type='groupchat' id='e0e5cf9a-a363-4f05-a8cf-b2d1016a99d2'><x xmlns='jabber:x:event'><composing/></x><delay from='[email protected]' stamp='2017-04-24T11:25:57.859462Z' xmlns='urn:xmpp:delay'/><body>dgdfgsdfgsg</body></message><message xml:lang='en' to='[email protected]/1540794269789260263741678' from='[email protected]/abv' type='groupchat' id='fr3u8-51'><delay from='[email protected]' stamp='2017-04-24T11:28:05.832722Z' xmlns='urn:xmpp:delay'/><body>hi</body></message><message xml:lang='en' to='[email protected]/1540794269789260263741678' from='[email protected]/wefa' type='groupchat' id='6259ccab-5235-4367-8b57-f03f27ec8c9a'><x xmlns='jabber:x:event'><composing/></x><delay from='[email protected] 
04-25 22:31:47.873 13376-16061/com.example.itstym.smackchat D/SMACK: RECV (0): .cloudapp.net' stamp='2017-04-24T11:28:24.801581Z' xmlns='urn:xmpp:delay'/><body>welcome abv</body></message><message to='[email protected]/1540794269789260263741678' from='[email protected]' type='groupchat'><subject/></message> 
04-25 22:31:47.881 13376-16096/com.example.itstym.smackchat W/MultiUserChat: Message subject not changed by a full JID: [email protected] 
04-25 22:31:48.030 13376-16061/com.example.itstym.smackchat D/SMACK: RECV (0): <r xmlns='urn:xmpp:sm:3'/> 
04-25 22:31:48.031 13376-16060/com.example.itstym.smackchat D/SMACK: SENT (0): <a xmlns='urn:xmpp:sm:3' h='25'/> 

bearbeiten 2:

multiUserChat?.addMessageListener { 
        Log.v("listener","yup") 
        MessageListener { message -> 
         Log.v("Message is complete ",message.toString()) 
         Log.v("Message from ",message?.from.toString()) 
         Log.v("Message is body",message?.getBody()) 
         Log.v("Message subject ",message?.getSubject()) 
         Log.v("Message body ",message?.body) 
        } 
       } 

Jedes Mal, wenn mir jemand die Nachricht senden Log.v ("Hörer", "yup") genannt. Aber gehen Sie nicht in messagelistener hinein. Ich habe die Protokollausgabe gelesen und finde sie Ich bekomme die Nachricht in Form von XML.

+0

Haben Sie nach erfolgreicher Anmeldung jedes Mal versucht, sich dem Raum anzuschließen? – Maddy

+0

ja. Nach dem Login ich anrufe multiUserChat.join (a) @Malik –

+0

und was sind die Antwort der Beitritt? – Farhan

Antwort

1

Was ich tat:

Erstes Mitglied werden an die Groupchat in, dann einen benutzerdefinierten Listener erstellen, um die verpassten Nachrichten zu erhalten und auf dem onSuccess die Message hinzuzufügen. Das sind die History-Nachrichten in einer Liste <> und danach die App-Start hören die neue Nachricht von diesem GroupChat.

public void joinToGroupChat(final MultiUserChat multiUserChat, final OpenFireListener<List<Message>> listener) { 

    if (!multiUserChat.isJoined()) { 
     multiUserChat.join(connection.getUser().getResourcepart()); 
    } 

    getPendingMessages(multiUserChat, new OpenFireListener<List<Message>>() { 
     @Override 
     public void onSuccess(List<Message> result) { 
      multiUserChat.addMessageListener(messageListener); 
      listener.onSuccess(result); 
     } 

     @Override 
     public void onError(String message) { 
      listener.onError(message); 
     } 
    }); 
} 

private MessageListener messageListener = new MessageListener() { 
    @Override 
    public void processMessage(Message message) { 
     //I only use the subject and body in my project 
     listener.notifyMessage(message.getSubject(), message.getBody()); 
    } 
}; 

Stellen Sie sicher, dass Sie in demselben Kontext mit dem GroupChat verbunden sind, und implementieren Sie Ihren benutzerdefinierten Listener. Dies ist meine generische Implementierung.

public interface OpenFireListener<T>{ 
    void onSuccess(T result); 
    void onError(String message); 
} 

public interface OpenFireServerListener { 
    enum STATE {ERROR, CONNECTION_CLOSED, RECONNECTION_SUCCESS, RECONNECTION_FAILED, AUTHENTICATED, NOT_AUTHORIZED, CONNECTED} 

    void notifyStatusOpenFireServer(STATE state, String message); 
    void notifyMessage(String streamName, String streamId); 

}