Comment mettre/obtenir des données de profil avec XMPP à l'aide de Smack
Je suis en train de travailler sur un client XMPP sur Android, en utilisant la Claque de la bibliothèque. Le roster/messagerie/présence truc marche très bien. Cependant, je n'ai pas trouver un moyen d'enregistrer d'autres informations de profil (userpicture, les chiens, nom, ...).
La seule façon que je vois de google à l'aide de cartes de visite. Mais il ne fonctionne tout simplement pas. J'ai essayé le suivant:
VCard vCard = new VCard();
vCard.load(connection);
vCard.setEmailHome("[email protected]");
vCard.setLastName("Scheller");
vCard.setField("blafasel", "asdf");
vCard.save(connection);
Alors que je cherchais un moyen de voir que les informations VCard. Il n'a ni le montrer dans iChat, ni dans ce Système.:
vCard.load(connection, user);
System.out.println(user + " has this vCard: " + vCard.toXML());
Si quelque chose allait mal, mais theres aucune indication de ce qu'il était. J'ai essayé cela avec le google talk serveur et mon propre copie de openfire avec le même résultat. Btw, je suis en utilisant cette version de Smack: http://davanum.wordpress.com/2007/12/31/android-just-use-smack-api-for-xmpp/
Ce que je fais mal? Est-ce le bon moyen de conserver le profil de l'information avec Smack?
OriginalL'auteur Ulrich Scheller | 2009-12-03
Vous devez vous connecter pour publier un commentaire.
J'ai vérifié la source de Smack et est passé par les parties importantes avec un débogueur, ainsi que l'utilisation de la Claque Fenêtre de Débogage. Le problème est à l'intérieur de la carte de visite de mise en œuvre de la Smack API. L'enregistrement d'un fichier VCard ne fonctionne pas comme décrit, mais le chargement est cassé.
parseIQ(XmlPullParser parser) est une partie de la PacketReader.java classe et gère les différents types de paquets. Il ne s'occupe que des balises avec les espaces de noms suivants:
"jabber:iq:auth",
"jabber:iq:liste",
"jabber:iq:inscrivez-vous",
"urn:ietf:params:xml:ns:xmpp-bind"
Il regarde aussi si il n'y a tout enregistré IQProvider dans le ProviderManager. Et il est à l'origine de mon problème. Il n'y a pas de IQProvider pour les VCards enregistré. Donc, quelle que soit l'information est à l'intérieur de la carte de visite de la balise obtient tout simplement abandonné.
Il n'est pas trop dur pour enregistrer ce IQProvider:
Cela a résolu mon petit exemple ci-dessus pour enregistrer mes propres vCard et le télécharger à nouveau. Je suis toujours avoir des problèmes avec le téléchargement d'autres utilisateurs de cartes de visite... Vais regarder de plus près cette question et peut-être ouvrir un autre fil de ce problème.
OriginalL'auteur Ulrich Scheller
Vous pouvez utiliser le code suivant pour obtenir des informations.
OriginalL'auteur Pujan Srivastava
Essayer de définir une vCard pour que l'utilisateur avec un autre client tout d'abord, et de voir comment les changements de vos résultats. Afin de diagnostiquer plus, vous devrez activer le protocole de débogage dans Smack (utilisez "
-Dsmack.debugEnabled=true
" sur une machine de bureau), et après pertinentes ici.OriginalL'auteur Joe Hildebrand