Hintergrund:
Ich konnte Chat mit XMPP
in android mithilfe von asmack
library eins zu eins implementieren. Ich kann auch Präsenz zum Server senden. Ich verwende OpenFire
server für meine Chat basierte Anwendung.
Problem:
Ich verwende connection.addPacketListener(new PacketListener()
, um Nachrichten- und IQ-Pakete zu empfangen, für Nachrichtenpakete habe ich es so klassifiziert
Und es funktioniert alles gut, aber Problem entsteht, wenn ich etwas ähnliches zum Empfang von IQ-Paketen
verwendeHier ist der Code, mit dem ich IQ PACKETS
erhalte %Vor% Ich sende eine einfache disco#items
-Abfrage und sie antwortet nicht, auch wenn sie nicht in die Funktion eingeht. Ich habe versucht, sie ebenfalls zu debuggen. Ich habe auch versucht, den einfachen PING
-Befehl zu senden, tut es aber nicht darauf reagieren. Was fehlt mir hier?
Zweitens habe ich Probleme beim Senden von IQ-Paketen an den Server oder an einen anderen Client. Ich habe irgendwo gelesen, dass ich es so machen sollte. aber es funktioniert nicht.
%Vor%Die verwirrende Sache ist, wenn ich die Dokumentation von XMPP und asmack für Android lese, dass geschrieben wurde, dass, um einen IQ zu schicken, Sie Empfängeradresse auch haben müssen. aber in diesem Code richten wir keinen Empfänger ein.
Es gibt viel weniger Informationen im Internet für XMPP asmack und Android.
Ich denke, das Problem ist, dass Ihre Provider nicht registriert sind. Bitte werfen Sie einen Blick auf dies . Unter Android müssen Sie die Provider manuell registrieren, bevor Sie eine XMPP-Verbindung herstellen. Kopieren Sie die Klasse unten in Ihr Projekt
%Vor%Rufen Sie diese Methode wie folgt auf
%Vor%Versuchen Sie also, diese Methode am Anfang Ihrer App oder vor dem Herstellen einer Verbindung aufzurufen.
Hoffe, das hilft