Phonegap PushNotification,如何将我的节点推送服务器与 phonegap 一起使用?

Posted

技术标签:

【中文标题】Phonegap PushNotification,如何将我的节点推送服务器与 phonegap 一起使用?【英文标题】:Phonegap PushNotification, how to use my node push-server with phonegap? 【发布时间】:2014-06-05 14:45:16 【问题描述】:

所以,我在 Phonegap,我使用:

https://github.com/phonegap-build/PushPlugin/ https://github.com/argon/node-apn

所以,我安装了第一个插件,我可以得到我的手机令牌。之后,我在我的根目录中创建了一个节点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 应用程序发送其他推送通知?

【问题讨论】:

【参考方案1】:

上面的代码可以收集在一起,并公开一个函数以多次调用它。例如,一个非常简单的实现是:

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 服务器,该服务器侦听请求并按需发送推送通知。

【讨论】:

【参考方案2】:

有点晚了,但是对于有同样问题的人,看看这个工具:

https://www.npmjs.com/package/node-pushserver

...它完全符合您的要求。它同时支持 iosandroid

在服务器上运行它,您的应用可以:通过 POST 到 http://yourserver:8000:/subscribe 注册设备。设备存储在 mongodb 数据库中。通过向http://yourserver:8000/send 发布一个http 请求,您可以将推送通知发送到单个注册设备、一个子集或所有设备。

玩得开心!

【讨论】:

以上是关于Phonegap PushNotification,如何将我的节点推送服务器与 phonegap 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

Phonegap 推送插件设置

在 UrbanAirship 中为 Phonegap 获取传入

Phonegap ios推送通知

Phonegap 推送通知类未找到错误

Phonegap + jQueryMobile + iOS 上的 PushNotifications

通知不适用于 ios8 - Pushwoosh + phonegap