2015-09-28 8 views
9

Ich habe Openfire 3.10.2 auf Ubuntu 12.04 installiert.Openfire Offline-Benachrichtigung durch PHP

Chat funktioniert gut und für die Offline-Nachrichtenverwaltung Ich habe das CallbackOnOffline Plugin installiert. Wenn der Empfänger offline ist, wird eine URL aufgerufen.

Das Plugin lädt die URL aus der plugin.callback_on_offline.url-Eigenschaft, fügt 'to' und 'from' -Parameter hinzu und führt eine asynchrone GET-Anfrage aus. Sample Link.

Ich habe überprüft, welche Informationen ich davon bekomme und ich habe ein "zu" und "von", aber ich brauche auch diese zusammen mit der Nachricht für die Push-Benachrichtigungen.


wichtiger Teil: -


Ich möchte CallbackOnOffline Plugin von Openfire anpassen und ich möchte einen weiteren Parameter "message" hinzuzufügen. Wie kann ich das machen?

Sie den Code finden Sie hier: https://github.com/igniterealtime/Openfire/blob/master/src/plugins/callbackOnOffline/src/java/com/fotsum/CallbackOnOffline.java

Nun, wie zu erstellen .jar-Datei, die installierbaren Plug-in Openfire machen benötigen?

+0

versuchen, diese beiden Plugins, https://github.com/xinminlabs/openfire-apns-plugin und https : //github.com/meisterfuu/Openfire-GCM – calvinfly

+0

calvinfly: ok, lass mich das versuchen, aber wie openfire gerätsmarker bekommt o Gerät? –

+0

Erstellen Sie einen benutzerdefinierten IQHandler wie [dies] (https://github.com/xinminlabs/openfire-apns-plugin/blob/master/src/main/java/com/wecapslabs/openfire/plugin/apns/ApnsIQHandler.java) . Senden Sie dieses benutzerdefinierte IQ-Paket in der Client-App an den XMPP-Server, um das Token zu registrieren. – calvinfly

Antwort

4

Wenn Sie dem Link weitere Parameter hinzufügen möchten. Sie müssen das CallbackOnOffline Plugin erweitern. Sie finden den Code hier: https://github.com/igniterealtime/Openfire/blob/master/src/plugins/callbackOnOffline/src/java/com/fotsum/CallbackOnOffline.java

Wenn Sie in die Java-Klasse schauen, finden Sie in den Zeilen 109 und 110 die Parameter "to" und "from", die zurückgeschickt werden (Callback). Fügen Sie einfach Ihren Parameter mit dem Wert hinzu, den Sie benötigen.

Update: Danach müssen Sie das Plugin wieder mit ANT bauen. Sehen Sie, wie man ein Plugin erstellt: https://www.igniterealtime.org/builds/openfire/docs/latest/documentation/plugin-dev-guide.html

+0

Danke Roman, ich habe eine Idee über diese Codes, aber das Problem ist, wie zu erstellen. JAR-Datei, die ein installierbares Plugin machen müssen? –

+1

Sie müssen das Plugin mit ANT Buld bauen. Suchen Sie hier nach weiteren Plugin-Erstellung: https://www.ignitorealtime.org/builds/openfire/docs/latest/documentation/plugin-dev-guide.html –

+0

Danke Roman für Sie Hilfe und Anleitung –

4

Ich hatte auch das gleiche Problem und ich löste es durch Erstellen einer neuen Tabelle "TblPushNotification". Eine Tabelle mit dem Namen 'ofOffline' wird verwendet, um die Offline-Nachrichten zu speichern, so dass ich den Trigger der "ofOffline" -Tabelle der Datenbank hinzugefügt habe. Der Trigger extrahiert das XML und fügt alle Attribute zur "TblPushNotification" hinzu, sodass Sie diese Tabelle zum Senden von Push-Benachrichtigungen direkt überprüfen können.

Bitte meine Tabellen Details finden wie unten

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; 

für Trigger verwenden folgende Abfrage.

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

Jetzt wird es immer die XML von ofOffline Tablette TblPushNotification extrahieren und Sie können Abfrage Feuer vor Push-Benachrichtigung zu senden.

+0

Vielen Dank für Ihre ausführliche Antwort. Können Sie mir bitte sagen, ob wir zum Zeitpunkt von TRIGGER eine URL oder einen Webservice auf der Serverseite aufrufen, wenn Daten in die Tabelle 'TblPushNotification' eingetragen werden. Eigentlich können wir den TRIGGER-Vorgang ausführen, aber um Push-Benachrichtigungen vom Server zu senden, müssen wir die Kunden-URL aufrufen, um Push-Benachrichtigungen vom Server an das Gerät zu senden. – Parthpatel1105

2

Auslöser

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

Tabelle:

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 ;