所以,我在Phonegap上,我使用:
所以,我安装了第一个插件,我可以获得我的手机令牌。之后,我在我的根目录中创建了一个节点server.js
文件:
var apn = require('apn');
var token = "MY TOKEN";
var device = new apn.Device(token);
var notification = new apn.Notification();
notification.expiry = Math.floor(Date.now() / 1000) + 3600;
notification.badge = 1;
notification.alert = "This is a Push Notification=)";
notification.payload = {'prop': 'special value'};
notification.device = device;
var options = {
gateway: 'gateway.sandbox.push.apple.com',
cert: 'CER.pem',
key: 'KEY.pem',
passphrase: 'password'
}
var apnsConnection = new apn.Connection(options);
apnsConnection.pushNotification(notification, device);
当我在命令行中使用node server.js
启动服务器时,我可以在手机上看到我的推送通知,所以一切正常。
但我的问题是,我需要在我的代码(phonegap)中的不同位置发送推送通知。我怎样才能做到这一点 ?
当我的server.js
正在运行时,如何从我的phonegap应用程序发送其他推送通知?
答案 0 :(得分:0)
上面提到的是您可以一起收集的代码,并公开一个函数来多次调用它。例如,一个非常简单的实现是:
var apn = require('apn');
var options = {
gateway: 'gateway.sandbox.push.apple.com',
cert: 'CER.pem',
key: 'KEY.pem',
passphrase: 'password'
};
var apnsConnection = new apn.Connection(options);
module.exports.pushNotification = function(token, alert) {
var device = new apn.Device(token);
var notification = new apn.Notification();
notification.alert = alert;
notification.device = device;
apnsConnection.pushNotification(notification, device);
};
想象一下,您为“推送通知服务”命名此文件pns.js
。现在在server.js
中,您可以改为require
您刚创建的模块并调用pushNotification
函数:
var pns = require("./pns.js");
pns.pushNotification("MY TOKEN", "This is a Push Notification");
现在,当您执行server.js
时,您将获得相同的功能。从这里开始,您可以将此函数拉入需要从Node.js端调用它的其他模块。
如果您需要从远程进程调用它,您可以查看像Express这样的Web框架,并构建一个调用相同代码的API。然后可以将令牌和警报消息传递给此函数调用。这样做可能会使您的server.js
变为正在运行的Web服务器,该服务器会监听请求并按需发送推送通知。
答案 1 :(得分:0)
有点晚了,但对于有相同问题的人,请看一下这个工具:
https://www.npmjs.com/package/node-pushserver
......它完全符合您的要求。它支持iOS和Android。
在服务器上运行此操作,您的应用可以:通过POST到http://yourserver:8000:/subscribe注册设备。设备存储在mongodb数据库中。通过将http请求发布到http://yourserver:8000/send,您可以将推送通知发送到单个注册设备,子集或所有设备。
玩得开心!