2015-09-28 13 views
9

Ubuntu 12.04Openfire 3.10.2をインストールしました。PHPによるOpenfireのオフライン通知

チャットは正常に動作しており、オフラインメッセージ管理のために私はCallbackOnOfflineプラグインをインストールしました。受信者がオフラインになると、URLが呼び出されます。

プラグインはplugin.callback_on_offline.urlプロパティからurlをロードし、 'to'と 'from'パラメータを追加し、非同期GETリクエストを実行します。 Sample Link

私はそこから得た情報を確認して、 "to"と "from"を得ましたが、プッシュ通知のメッセージとともにそれらの情報も必要です。


重要な部分: -


私はopenfireのCallbackOnOfflineプラグインをカスタマイズしたいと私は1つの以上のパラメータ "メッセージ" を追加します。どうやってやるの?

あなたはここにコードを見つける:今https://github.com/igniterealtime/Openfire/blob/master/src/plugins/callbackOnOffline/src/java/com/fotsum/CallbackOnOffline.java

を、openfireにインストール可能なプラグインを作成する必要が.jarファイルを作成する方法?

+0

は、これら2つのプラグインを試してみてください、https://github.com/xinminlabs/openfire-apns-pluginおよびhttps ://github.com/meisterfuu/Openfire-GCM – calvinfly

+0

calvinfly:ok、それを試してみましょう。しかし、どのようにopenfireがデバイストークンを取得するのですか? fデバイス? –

+0

[this](https://github.com/xinminlabs/openfire-apns-plugin/blob/master/src/main/java/com/wecapslabs/openfire/plugin/apns/ApnsIQHandler.java)のようなカスタムIQHandlerを作成してください。 。クライアントアプリケーションでは、カスタムIQパケットをXMPPサーバーに送信してトークンを登録します。 – calvinfly

答えて

4

リンクにパラメータを追加する場合は、 CallbackOnOffline Pluginを拡張する必要があります。 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でbuldする必要があります。さらなるプラグインの構築についてはこちらをご覧ください:https://www.igniterealtime.org/builds/openfire/docs/latest/documentation/plugin-dev-guide.html –

+0

ありがとうございました。お手数ですが –

4

私も同じ問題を抱えていました。新しいテーブル「TblPushNotification」を作成して解決しました。 'ofOffline'というテーブルはオフラインメッセージを格納するために使用され、データベースの "ofOffline"テーブルにトリガを追加しました。トリガーはXMLを抽出し、すべての属性を「TblPushNotification」に追加します。そのため、その表でプッシュ通知を送信するかどうかを直接確認できます。

クエリ、次のトリガを使用するために

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; 

次のように私のテーブルの詳細を見つけてください。

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がTblPushNotificationに抽出され、プッシュ通知を送信する前にクエリを起動できます。

+0

詳細な回答ありがとうございます。データがテーブル 'TblPushNotification'に入力されているときにTRIGGERの時にサーバー側でURLまたはWebサービスを呼び出すかどうか教えてください。 実際にはTRIGGER操作を実行できますが、サーバーからプッシュ通知を送信するには、カスタマーURLに電話して、サーバーからプッシュ通知をデバイスに送信する必要があります。 – Parthpatel1105

2

トリガー

-- 
-- 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 ; 
関連する問題