2015-09-28 5 views
9

Я установил Openfire 3.10.2 на Ubuntu 12.04.Открытое уведомление Openfire через PHP

Чат работает нормально и для автономного управления сообщениями Я установил плагин CallbackOnOffline. Когда получатель находится в автономном режиме, вызывается URL-адрес.

Плагин загружает URL-адрес из свойства plugin.callback_on_offline.url, добавляет параметры «to» и «from» и выполняет асинхронный запрос GET. Sample Link.

Я проверил, какую информацию я получаю от этого, и у меня есть «от» и «от», но мне также нужны те, которые вместе с сообщением для push-уведомлений.


Важная деталь: -


Я хочу, чтобы настроить CallbackOnOffline плагин из Openfire, и я хочу добавить еще один параметр "сообщение". Как я могу это сделать?

Вы найдете код здесь: https://github.com/igniterealtime/Openfire/blob/master/src/plugins/callbackOnOffline/src/java/com/fotsum/CallbackOnOffline.java

Теперь, как создать .jar файл, который требует, чтобы устанавливаемое плагин в Openfire?

+0

попробовать эти два плагина, https://github.com/xinminlabs/openfire-apns-plugin и HTTPS : //github.com/meisterfuu/Openfire-GCM – calvinfly

+0

calvinfly: хорошо, позвольте мне попробовать, но как openfire получит токены устройства dev лед? –

+0

создать пользовательский IQHandler как [этот] (https://github.com/xinminlabs/openfire-apns-plugin/blob/master/src/main/java/com/wecapslabs/openfire/plugin/apns/ApnsIQHandler.java) , В клиентском приложении отправьте этот пользовательский пакет IQ на сервер XMPP для регистрации токена. – calvinfly

ответ

4

Если вы хотите добавить другие параметры в ссылку. Вам необходимо расширить плагин CallbackOnOffline. Вы можете найти здесь код: https://github.com/igniterealtime/Openfire/blob/master/src/plugins/callbackOnOffline/src/java/com/fotsum/CallbackOnOffline.java

Если вы изучите класс java, вы найдете в строке 109 и 110 параметры «to» и «from», которые будут отправляться обратно (обратный вызов). Просто добавьте туда свой параметр со значением, которое вам нужно.

Обновление: После этого вам необходимо снова построить плагин с ANT. См. Как построить плагин: https://www.igniterealtime.org/builds/openfire/docs/latest/documentation/plugin-dev-guide.html

+0

Спасибо, Роман, у меня есть идея об этих кодах, но проблема в том, как создать файл .jar, который требует, чтобы установить устанавливаемый плагин? –

+1

Вам нужно подключить плагин к ANT. Посмотрите, пожалуйста, следующее здание плагина: https://www.igniterealtime.org/builds/openfire/docs/latest/documentation/plugin-dev-guide.html –

+0

Спасибо, Роман за помощь и руководство –

4

У меня также была такая же проблема, и я решил ее, создав новую таблицу «TblPushNotification». Для хранения автономных сообщений используется таблица с именем «ofOffline», поэтому я добавил триггер в таблицу «ofOffline» базы данных. Триггер извлечет XML и добавит все атрибуты в «TblPushNotification», чтобы вы могли напрямую проверить эту таблицу для отправки push-уведомления.

Пожалуйста, найти детали моих таблиц, как показано ниже

CREATE TABLE IF NOT EXISTS `TblPushNotification` (
`id` int(11) NOT NULL, 
    `message_id` int(11) NOT NULL, 
    `from_user_id` text NOT NULL, 
    `to_user_id` text NOT NULL, 
    `message` text NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ; 

ALTER TABLE `TblPushNotification` 
ADD PRIMARY KEY (`id`), ADD KEY `message_id` (`message_id`); 
ALTER TABLE `TblPushNotification` 
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; 

Для использования Trigger следующего запроса.

CREATE TRIGGER `PushNotification` AFTER INSERT ON `ofOffline` 
FOR EACH ROW BEGIN 

    DECLARE strMessageText VARCHAR(500) DEFAULT ''; 
    DECLARE strSenderId VARCHAR(500) DEFAULT '';  
    DECLARE strReceiverId VARCHAR(500) DEFAULT '';   
    DECLARE intMessageId INT DEFAULT 1; 

    SET strMessageText = ExtractValue(NEW.stanza, 'message/body[1]'); 
    SET strSenderId = ExtractValue(NEW.stanza, 'message/@from[1]'); 
    SET strReceiverId = ExtractValue(NEW.stanza, 'message/@to[1]'); 
    SET intMessageId = NEW.messageID;  
    INSERT INTO TblPushNotification (message_id,from_user_id,to_user_id,message) VALUES (intMessageId,strSenderId,strReceiverId,strMessageText); 

Теперь он всегда будет извлечь XML из ofOffline планшета в TblPushNotification и вы можете запустить запрос перед отправкой толчок уведомления.

+0

Спасибо за подробный ответ. Не могли бы вы рассказать мне, будем ли мы ссылаться на любой URL-адрес или веб-сервис на стороне сервера во время TRIGGER, когда данные входят в таблицу «TblPushNotification». На самом деле мы можем выполнить операцию TRIGGER, но для отправки push-уведомления с сервера нам нужно вызывать URL-адрес клиента для отправки push-уведомления устройству с сервера. – Parthpatel1105

2

Trigger

-- 
-- Triggers `ofOffline` 
-- 
DELIMITER // 
CREATE TRIGGER `PushNotification` AFTER INSERT ON `ofOffline` 
FOR EACH ROW BEGIN 

    DECLARE strMessageText VARCHAR(500) DEFAULT ''; 
    DECLARE strSenderId VARCHAR(500) DEFAULT '';  
    DECLARE strReceiverId VARCHAR(500) DEFAULT '';   
    DECLARE intMessageId INT DEFAULT 1; 

    SET strMessageText = ExtractValue(NEW.stanza, 'message/body[1]'); 
    SET strSenderId = ExtractValue(NEW.stanza, 'message/@from[1]'); 
    SET strReceiverId = ExtractValue(NEW.stanza, 'message/@to[1]'); 
    SET intMessageId = NEW.messageID;  
    INSERT INTO push_notification (message_id,from_user_id,to_user_id,message) VALUES (intMessageId,strSenderId,strReceiverId,strMessageText); 


END 
// 
DELIMITER ; 

Таблица:

CREATE TABLE IF NOT EXISTS `push_notification` (
`id` int(11) NOT NULL, 
    `message_id` int(11) NOT NULL, 
    `from_user_id` text NOT NULL, 
    `to_user_id` text NOT NULL, 
    `message` text NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ; 
Смежные вопросы