J'ai lu quelques exemples et les ai testés mais tous doivent commencer à discuter avec quelqu'un d'abord pour recevoir des messages entrants ... Je veux récupérer ces messages entrants sans avoir besoin de parler d'abord au jid qui peut donner un exemple?Comment recevoir des messages XMPP entrants à l'aide de Smack?
Répondre
Vous devez enregistrer un ChatListener pour être informé de nouveaux chats, vous pouvez ajouter un écouteur de message à eux comme normal:
connection.getChatManager().addChatListener(new ChatManagerListenerImpl());
....
private class ChatManagerListenerImpl implements ChatManagerListener {
/** {@inheritDoc} */
@Override
public void chatCreated(final Chat chat, final boolean createdLocally) {
chat.addMessageListener(...);
}
}
@cris Smith salut! Merci pour votre réponse :) pourrait s'il vous plaît donner un exemple complet? Je suis vraiment en difficulté: S – Winter
très utile! Pour les informations, le addChatListener peut être appelé avant la connexion. – h3xStream
J'ai utilisé la même approche, mais les messages hors ligne ne sont pas reçus dans l'ordre. Comment puis-je résoudre ça? – Max
je voulais juste ajouter un échantillon de pâte de copie &:
// connect to server
XMPPConnection connection = new XMPPConnection("jabber.org");
connection.connect();
connection.login("user", "password"); // TODO: change user and pass
// register listeners
ChatManager chatmanager = connection.getChatManager();
connection.getChatManager().addChatListener(new ChatManagerListener()
{
public void chatCreated(final Chat chat, final boolean createdLocally)
{
chat.addMessageListener(new MessageListener()
{
public void processMessage(Chat chat, Message message)
{
System.out.println("Received message: "
+ (message != null ? message.getBody() : "NULL"));
}
});
}
});
// idle for 20 seconds
final long start = System.nanoTime();
while ((System.nanoTime() - start)/1000000 < 20000) // do for 20 seconds
{
Thread.sleep(500);
}
connection.disconnect();
Cet exemple se connecte à jabber.org et affiche tous les messages reçus sur la console.
Je fais la même chose, mais incapable de recevoir le message. Il y a un billet de blog que j'explique ce qui se passe avec mon code. http://www.rmwaqas.com/chat-client-using-smack/ – Waqas
Veuillez trouver le code suivant.
S'il vous plaît ajouter smack.jar & smackx.jar à votre chemin de construction
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.PacketCollector;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.filter.AndFilter;
import org.jivesoftware.smack.filter.PacketFilter;
import org.jivesoftware.smack.filter.PacketTypeFilter;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Packet;
public class GoogleTalkDemo extends Thread{
private XMPPConnection xmppConnection;
public void connect(String server, int port, String s) throws Exception {
xmppConnection = new XMPPConnection(new ConnectionConfiguration(server, port,s));
xmppConnection.connect();
}
public void disconnect(){
if(xmppConnection != null){
xmppConnection.disconnect();
interrupt();
}
}
public void login(String username, String password) throws Exception{
connect("talk.google.com", 5222, "gmail.com");
xmppConnection.login(username, password);
}
public void run(){
try {
login("[email protected]", "your password");
System.out.println("Login successful");
listeningForMessages();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String args[]) throws Exception {
GoogleTalkDemo gtd = new GoogleTalkDemo();
gtd.run();
}
public void listeningForMessages() {
PacketFilter filter = new AndFilter(new PacketTypeFilter(Message.class));
PacketCollector collector = xmppConnection.createPacketCollector(filter);
while (true) {
Packet packet = collector.nextResult();
if (packet instanceof Message) {
Message message = (Message) packet;
if (message != null && message.getBody() != null)
System.out.println("Received message from "
+ packet.getFrom() + " : "
+ (message != null ? message.getBody() : "NULL"));
}
}
}
}
Il m'a beaucoup aidé :) –
@Samik d'où vous trouvez ce fichier smack.jar & smackx.jar j'ai dolwoad smack_4_1_3.zip mais je ne peux pas trouver ce fichier de deux jar – PankajAndroid
private MultiUserChat muc; /* Initialize muc */
private void listeningForMessages()
{
muc.addMessageListener(new PacketListener() {
public void processPacket(Packet packet)
{
final Message message = (Message) packet;
// Do your action with the message
}
});
}
Salut @TheMan Votre réponse m'a beaucoup aidé. La méthode ci-dessus processPacket est appelée quand j'envoie un message à l'utilisateur mais si l'utilisateur répond à mon message, alors cela n'est pas appelé ?? Plz aide ... –
Il devrait être appelé. Je ne sais pas pourquoi ça ne marche pas pour toi. – TheMan
Salut @TheMan si vous voulez l'écouteur du message de groupe alors vous devriez ** addPacketListner ** à ** connexion ** –
- 1. Service d'arrière-plan Android pour l'application de discussion Smack (XMPP)
- 2. XMPP framework - Comment recevoir des messages de groupe
- 3. Comment recevoir des messages entrants avec un sujet Unicode?
- 4. Comment recevoir des messages envoyés à gtalk?
- 5. Comment mettre des champs personnalisés à XMPP vCard Android/SMACK
- 6. Envoyer un message XMPP (Smack)
- 7. XMPP Smack - Message en cours de modification
- 8. Comment envoyer et recevoir des messages à l'aide de XMPPFramework
- 9. XMPP - Facebook - Comment mon implémentation client peut-elle recevoir des messages envoyés par d'autres implémentations client?
- 10. SMS - Traitement des messages entrants
- 11. XMPP connecter et recevoir
- 12. Blackberry XMPP messages
- 13. Authentification à Google Talk (XMPP, Smack) en utilisant un authToken
- 14. Recevoir des messages d'amis
- 15. Envoi et réception IQ Packets ASMACK/SMACK Android XMPP
- 16. Messages entrants dans Sharepoint
- 17. Emplacement des messages reçus/interception de messages entrants
- 18. GServer recevoir des messages
- 19. Comment travailler avec BroadcastReciever pour recevoir des SMS entrants
- 20. Java Android - Filtrer les messages texte entrants
- 21. asmack - recevoir des messages XML personnalisés ||
- 22. Recevoir des messages poussés du service Web
- 23. Messages envoyés de retour dans XMPP
- 24. iOS: XMPP: Obtenir des messages hors ligne
- 25. CodeIgniter - recevoir des messages d'erreur
- 26. comment recevoir un message du client ejabberd à node-xmpp
- 27. Comment utiliser la bibliothèque smack pour créer une application cliente afin que je reçoive les messages entrants à mesure qu'ils arrivent?
- 28. Comment définir/obtenir des données de profil avec XMPP en utilisant Smack
- 29. Envoi de messages à des domaines Smack spécifiques après le message de diffusion initial
- 30. recevoir des messages hors ligne de l'éditeur
quel est votre serveur? –