私も同じ問題を抱えていました。新しいテーブル「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に抽出され、プッシュ通知を送信する前にクエリを起動できます。
は、これら2つのプラグインを試してみてください、https://github.com/xinminlabs/openfire-apns-pluginおよびhttps ://github.com/meisterfuu/Openfire-GCM – calvinfly
calvinfly:ok、それを試してみましょう。しかし、どのようにopenfireがデバイストークンを取得するのですか? fデバイス? –
[this](https://github.com/xinminlabs/openfire-apns-plugin/blob/master/src/main/java/com/wecapslabs/openfire/plugin/apns/ApnsIQHandler.java)のようなカスタムIQHandlerを作成してください。 。クライアントアプリケーションでは、カスタムIQパケットをXMPPサーバーに送信してトークンを登録します。 – calvinfly