在Node.js应用中接收GCM推送通知

8
我正在使用Node.js构建一个命令行应用程序,并希望接收GCM推送通知(命令行应用程序将与iOS / Android应用程序使用相同的服务集交互,因此希望使用相同的通知服务)。
考虑到GCM可以在iOS上使用(因此不是Android特定的),我希望它也可以从Node.js中使用。
我看到了许多关于从Node.js发送推送通知的文章,但没有找到有关在接收端使用Node.js的任何内容。

你掌控着“源”应用服务器吗? - Ryan Wheale
我也不得不这样做,结果比我想象的要复杂得多。这个库证明是关键:https://github.com/MatthieuLemoine/push-receiver - Jpod
5个回答

13

我认为如果你需要向iOS和Android发送推送通知,那么使用FCM比GCM更好,请使用它。

router.post('/pushmessage', function (req, res) {
    var serverKey = '';//put server key here
    var fcm = new FCM(serverKey);
    var token = "";// put token here which user you have to send push notification
    var message = {
        to: token,
        collapse_key: 'your_collapse_key',
        notification: {title: 'hello', body: 'test'},
        data: {my_key: 'my value', contents: "abcv/"}
    };
    fcm.send(message, function (err, response) {
        if (err) {
            res.json({status: 0, message: err});
        } else {
            res.json({status: 1, message: response});
        }
    });
});

你在这段代码中使用了哪个库或节点模块? - Krishna Karki
1
@KrishnaKarki 变量 FCM = require('fcm-node'); - Shekhar Tyagi

2

我认为这并不容易(以简单的方式)...

Android/iOS 操作系统背后有一个与 GCM 通信的服务...

如果你想运行一个 CLI 工具,你需要在操作系统(Linux、Windows、Mac)之上实现一个服务,以便它可以接收通知。


谢谢,@Lucas Katayama。所有iOS设备上真的存在内置的GCM服务吗?我一直以为只有安装了带有GCM SDK的应用程序才能使用它,因为它不是来自苹果。 - skb
可能是这样的...我是一名Android开发者...不太了解iOS...但是假设它们相似...我认为iOS有一种类似于GCM的与服务器通信的服务... - Lucas Katayama

2
我相信你可以使用服务工作者。
推送是基于服务工作者的,因为服务工作者在后台运行。这意味着只有当用户通过单击或关闭通知与通知交互时(换句话说,只有用户与通知交互时才使用电池),才会运行推送通知的代码。如果您不熟悉它们,请查看服务工作者介绍。在我们展示如何实现推送和通知时,我们将在后面的章节中使用服务工作者代码。
因此,基本上有一个后台服务等待推送,这就是你要构建的内容。
两种技术
推送和通知使用不同但互补的API:推送在服务器向服务工作者提供信息时调用;通知是服务工作者或网页脚本向用户显示信息的操作。
self.addEventListener('push', function(event) {
  const promiseChain = getData(event.data)
  .then(data => {
    return self.registration.getNotifications({tag: data.tag});
  })
  .then(notifications => {
    //Do something with the notifications.
  });
  event.waitUntil(promiseChain);
});

https://developers.google.com/web/fundamentals/engage-and-retain/push-notifications/handling-messages


1
GCM会向已经在推送通知服务器上注册的iOS/Android设备生成的设备令牌发送通知。如果您想在没有设备令牌的情况下接收通知,那么这是基本上不正确的。

我并没有说我想在没有设备令牌的情况下完成它。 :) 我假设那将是必要过程的一部分。 - skb

-1

不必仅依赖于GCM,今天有很多可用于发送推送通知的包。

以下列出了两个Node包。

fcm-call已经被使用 - 您可以在https://www.npmjs.com/package/fcm-node/找到文档。

let FCM = require('fcm-call');
const serverKey = '<Your Server Key>'; 
const referenceKey = '<Your reference key>'; //Device Key
let title = '<Your notification title here.>';
let message = '<Your message here>';

FCM.FCM(serverKey, referenceKey, title, message);

您的通知将在2-3秒内发送。

愉快的通知。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接