smack- создать запись в реестре

Я знаю, что этот вопрос задавался раньше, но mschonaker здесь дал лишь частичный ответ. На моем веб-сайте пользователь может добавлять людей в свой список, затем партнер должен их принять, и, наконец, они подключаются. Первый человек (пользователь a) использует известный

roster.createEntry (jid, name, groups);

, который работает и добавляет запись в его список, но тогда я немного не понимаю, что делать:

  • как мне получить запрос на другом конце? Я попытался реализовать PacketListener, переопределить processPacket () и проверить пакет, типы которого являются Presence.Type.subscribe или Presence.Type.subscribed, но похоже, что он запускается только для пользователя a, но не для того, который должен прослушивать подписки - пользователь b.

  • , тогда у меня есть другая функция, которая может просматривать все запросы при входе в систему, поэтому, если я снова войду в систему, я увижу запрос, но как мне его принять? сначала я подумал, что пользователь b должен также добавить пользователя a в свой список, roster.createEntry (jid, name, groups);

но это не сработало, и ничего не происходило. Я тоже пытался сделать

Presence subscribed = new Presence(Presence.Type.subscribed);
subscribed.setTo(jid);
xMPPConnection.sendPacket(subscribed);

, но тоже не вышло. Я уверен, что должен быть хороший и простой способ сделать это, но я пока нигде его не нашел, и попытки по одному за раз вызвали у меня слишком много головной боли. Кто-нибудь знает правильный поток для этого? заранее спасибо!

6
задан Community 23 May 2017 в 12:07
поделиться