2015-09-28 12 views
9

Ho installato Openfire 3.10.2 su Ubuntu 12.04.Notifica offline di Openfire tramite PHP

La chat funziona correttamente e per la gestione dei messaggi offline ho installato il plug-in CallbackOnOffline. Quando il destinatario è offline, viene chiamato un url.

Il plugin carica l'url dalla proprietà plugin.callback_on_offline.url, aggiunge i parametri "a" e "da" ed esegue una richiesta GET asincrona. Sample Link.

Ho controllato quali informazioni ottengo da questo e ho ottenuto un "a" e "da", ma ho anche bisogno di quelle insieme al messaggio per le notifiche push.


parte importante: -


voglio personalizzare CallbackOnOffline plugin openfire e voglio aggiungere un altro parametro di "messaggio". Come lo posso fare?

Troverete il codice qui: https://github.com/igniterealtime/Openfire/blob/master/src/plugins/callbackOnOffline/src/java/com/fotsum/CallbackOnOffline.java

Ora, come creare il file .jar, che richiedono di fare plug-in installabili in openfire?

+0

provare questi due plugin, https://github.com/xinminlabs/openfire-apns-plugin e HTTPS : //github.com/meisterfuu/Openfire-GCM – calvinfly

+0

calvinfly: ok, lasciami provare, ma come openfire otterrà token dispositivo dispositivo f? –

+0

crea un IQHandler personalizzato come [questo] (https://github.com/xinminlabs/openfire-apns-plugin/blob/master/src/main/java/com/wecapslabs/openfire/plugin/apns/ApnsIQHandler.java) . Nell'app client, inviare questo pacchetto IQ personalizzato al server XMPP per registrare il token. – calvinfly

risposta

4

Se si desidera aggiungere ulteriori parametri al collegamento. È necessario estendere il plugin CallbackOnOffline. Il codice è disponibile qui: https://github.com/igniterealtime/Openfire/blob/master/src/plugins/callbackOnOffline/src/java/com/fotsum/CallbackOnOffline.java

Se si esamina la classe java, nella riga 109 e 110 sono presenti i parametri "a" e "da" che verranno restituiti (richiamata). Basta aggiungere il tuo parametro con il valore che ti serve.

Aggiornamento: Successivamente è necessario creare nuovamente il plug-in con ANT. Guarda come costruire un plug-in: https://www.igniterealtime.org/builds/openfire/docs/latest/documentation/plugin-dev-guide.html

+0

Grazie Roman, ho idea di quei codici ma il problema è come creare il file .jar, che richiede di creare un plugin installabile? –

+1

È necessario installare il plugin con ANT. Guarda qui per ulteriori sviluppi di plugin: https://www.igniterealtime.org/builds/openfire/docs/latest/documentation/plugin-dev-guide.html –

+0

Grazie Roman per il tuo aiuto e guida –

4

Avevo anche lo stesso problema e l'ho risolto creando una nuova tabella "TblPushNotification". Una tabella denominata 'ofOffline' viene utilizzata per memorizzare i messaggi offline, quindi ho aggiunto il trigger alla tabella "ofOffline" del database. Il trigger estrarrà l'XML e aggiungerà tutti gli attributi alla "TblPushNotification" in modo da poter controllare direttamente quella tabella per l'invio di notifiche push.

Si prega di trovare i dettagli mie tabelle come di seguito

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; 

Per l'uso di trigger seguente query.

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); 

Ora sarà sempre estrarre l'XML di ofOffline tablet per TblPushNotification e si può sparare query prima di inviare notifica push.

+0

Grazie per la tua risposta dettagliata. Puoi dirmi se chiamiamo qualsiasi URL o servizio web sul lato server al momento di TRIGGER quando i dati stanno entrando nella tabella "TblPushNotification". In realtà possiamo eseguire l'operazione TRIGGER ma per inviare notifiche push dal server è necessario chiamare l'URL del cliente per inviare notifiche push al dispositivo dal server. – 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 ; 

Tabella:

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 ; 
Problemi correlati