我也有同样的问题,我解决了它通过创建一个新的表“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);
现在它将会随时提取ofOffline平板电脑的XML来TblPushNotification并可以发送推送通知之前触发查询。
试试这两个插件,https://github.com/xinminlabs/openfire-apns-plugin和https ://github.com/meisterfuu/Openfire-GCM – calvinfly
calvinfly:好的,让我试试看,但openfire将如何获得设备令牌o f设备? –
创建一个类似[this]的自定义IQHandler(https://github.com/xinminlabs/openfire-apns-plugin/blob/master/src/main/java/com/wecapslabs/openfire/plugin/apns/ApnsIQHandler.java) 。在客户端应用程序中,将此自定义IQ数据包发送到XMPP服务器以注册令牌。 – calvinfly