Сопоставление пользовательского плагина Openfire с клиентом aSmack

Я новичок в XMPP, так что прости меня, если этот вопрос звучит глупо. Я хочу создать собственный плагин и сопоставить его с моим клиентом aSmack на Android. Я пытаюсь применить свои знания веб-сервисов, но я не выигрываю. Поэтому, пожалуйста, направьте мое мышление к лучшему подходу, пример будет действительно полезным. Спасибо заранее.

 Guus12 дек. 2017 г., 13:42
Обратите внимание, что aSmack устарела и устарела. Начиная с версии 4.1, Smack может работать без изменений на Android.

Ответы на вопрос(1)

Решение Вопроса

Существует много типов плагинов, давайте поговорим в целом о том, что мы используем.Руководство по плагину Igniterealtime

Вы хотите определить совершенно новую IQ Stanza для управления UserCustomParam. Скажем так:

<iq from="[email protected]" to="myserver" type="get">
 <usercustomparam xmls:"com.records.iq" retrive="favouritecolor">
</iq>

Что вы должны:

шаг 1: определить плагин (класс, который реализует плагин), который добавляет новый обработчик

MyCustomHandler colorshandler;
IQRouter iqRouter = XMPPServer.getInstance().getIQRouter();
iqRouter.addHandler(colorshandler);

Шаг 2: реализует MyCustomHandler по мере необходимости (чтение в базе данных, запись в базу данных, чтение на стороне сервера и т. д.).

public class MyCustomHandler extends IQHandler {
    public static final String NAMESPACE_TICKET_IQ = "com.records.iq";
    public static final String TAG_TICKET_IQ = "usercustomparam ";

Теперь ваш сервер готов к управлению вашим индивидуальным запросом IQ.

Время перейти на сторону клиента:

Шаг 3: зарегистрировать в ProviderManager IQProvider

ProviderManager.addIQProvider("usercustomparam ","com.records.iq", new IQUserCustomParamProvider());

Шаг 4: реализует ваш IQUserCustomParamProvider, как вам нужно

public class IQUserCustomParamProvider extends IQProvider<IQUserCustomParam>

в провайдере вы будете анализировать входящий IQ с сервера и создадите IQUserCustomParam с параметром экземпляра, например

String favouriteColor

Шаг 5: вам нужно реализовать IQUserCustomParam

public class IQUserCustomParam extends IQ
    private final static String childElementName = "usercustomparam";
    private final static String childElementNamespace = "com.records.iq";

public IQUserCustomParam (String color)
    {
        this(childElementName , childElementNamespace );

        this.setType(IQ.Type.result);
        this.setFavouriteColor(color);
    }

Шаг 6: теперь настройка завершена, но вы еще не определили, когда принимать IQUserCustomParam, когда он приходит с сервера. Так что вам нужен StanzaFilter

public class IQUserCustomParamFilter implements StanzaFilter

Шаг 7: и вы еще не определили, что делать с IQUserCustomParam, когда он приходит с сервера. Так что вам нужен StanzaListner

public class IQUserCustomParamListner implements StanzaListener

Шаг 8: наконец, вам нужно зарегистрировать комбинированный фильтр / список на вашем соединении:

AbstractXMPPConnection connection = ...;
connection.addAsyncStanzaListener(new PersonalConfigListner(this), new IQMUCConfigTicketFIlter();

если это помогло, пожалуйста, не забудьте принять ответ!

 Records22 июн. 2016 г., 23:44
Спасибо, что нашли время, вы суммировали все хорошо.

Ваш ответ на вопрос