2016-12-24 24 views
0

Ich habe erfolgreich One-on-One-Chat in meiner Android-Anwendung implementiert. Ich habe SQLite verwendet, um den Chat zwischen zwei Benutzern wie in der App-Datenbank zu speichern. Dieser Chat wird jedoch entfernt, wenn der Benutzer die Anwendung deinstalliert. Was ich wissen muss, ist, wie ich den Chat zwischen zwei Benutzern auf meinem Server speichern kann. Wenn der Nutzer die App neu installiert oder sich an einem anderen Gerät anmeldet, kann er seinen vorherigen Chat sehen. Ich habe mod_archive und mod_mam auf meinem Ejabberd-Server aktiviert und kann Offline-Nachrichten in der App abrufen. DankChat-Verlauf von benutzerdefinierten eJabberd-Server abrufen

+2

sogar ich auch in ios an derselben Stelle stecken bin :( – Gulshan

+0

@Paritosh Ich habe auch das gleiche Problem in iOS Bitte lassen Sie mich wissen, wenn Sie die Antwort dafür haben .. –

+0

@MaheshNarla Ich bin immer noch in diesem stecken, sobald ich eine perfekte Lösung für diese habe, werde ich Sie auf jeden Fall wissen lassen. –

Antwort

3

Sie müssen xep folgen - 0136

http://xmpp.org/extensions/xep-0136.html

Für schlagen Sie es in folgenden Weise erhalten müssen:

public void loadArchiveMessages(Jid jid, XMPPTCPConnection xmppTcpConnection){ 
     try { 
      MamManager mamManager=MamManager.getInstanceFor(xmppTcpConnection); 
      MamManager.MamQueryResult mamQueryResult = mamManager.queryArchive(jid); 
      List<Forwarded> forwardedMessages=mamQueryResult.forwardedMessages; 
      Iterator<Forwarded> forwardedIterator=forwardedMessages.iterator(); 
      while (forwardedIterator.hasNext()){ 
       Forwarded forwarded=forwardedIterator.next(); 
       Stanza stanza=forwarded.getForwardedStanza(); 
       if (stanza instanceof Message) { 
        String messageId=stanza.getStanzaId(); 
        xmppTcpConnection.processMessage((Message) stanza); 
       } 
      } 
     } catch (XMPPException.XMPPErrorException e) { 
      e.printStackTrace(); 
     } catch (SmackException.NotLoggedInException e) { 
      e.printStackTrace(); 
     } catch (SmackException.NotConnectedException e) { 
      e.printStackTrace(); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } catch (SmackException.NoResponseException e) { 
      e.printStackTrace(); 
     } 
    } 
+0

Hallo Jaspreet !! Danke für deine Antwort. Ich habe versucht, diesen Code in meiner App zu implementieren, aber ich kann MamManager und Jid in Android Studio nicht auflösen. Und darf ich die Zeichenfolgen kennen, die Sie in Forwarded-Klasse verwendet haben? Bitte lassen Sie mich wissen, wenn ich etwas vermisse. –

+0

Paket org.jivesoftware.smackx.mam; UPVOTE BITTE –

+1

Hallo Jaspreet .. !! Nochmals vielen Dank für Ihre Antwort. Ich kann dieses Paket nicht in meinen importierten Bibliotheken finden. Entschuldigung, wenn ich hier irgendeine dumme Frage stelle, aber ich bin neu in dieser schmackhaften Implementierung. Gibt es dafür eine JAR-Datei oder eine aktualisierte Version der Smack-Bibliothek? Ich verwende derzeit die Version 4.1.9. Als ich ein wenig mehr über das Abrufen des Chat-Verlaufs vom Server suchte, stieß ich auf einen neuen Prozess, d. H. Das Senden eines benutzerdefinierten IQ an den Server. Können Sie mir bitte erklären, wie sich Ihre Methode von dem benutzerdefinierten IQ-Teil unterscheidet. Wenig mehr Anleitung in diesem Prozess wird wirklich geschätzt werden. Danke im Voraus. –

Verwandte Themen