2016-12-12 70 views
5

我在node.js中構建了一個命令行應用程序,並且想要接收GCM推送通知(命令行應用程序將與iOS的相同服務集/ Android應用程序使用,因此希望使用相同的通知服務)。在node.js中接收GCM推送通知應用

鑑於GCM可以在iOS上使用(因此不是Android特有的),我希望它也可以在node.js中使用。

我見過很多關於的文章,發送來自node.js的推送通知,但是在接收端沒有找到關於使用node.js的任何內容。

+0

您在 「源」 應用程序服務器的控制權? –

回答

1

我不認爲這有可能(以簡單的方式)......

的Android/iOS版具有與操作系統與GCM通信服務的背後...

如果你想運行一個CLI工具,你需要在操作系統(Linux,Windows Mac)上實現一個服務,以便它能夠接收通知。

+0

謝謝,@盧卡斯片山。所有iOS設備上是否都有內置的GCM服務?我假設它不是來自Apple,它只有在安裝了GCM sdk的應用程序時纔會出現。 – skb

+0

它可能是類似的東西......我是一個Android開發人員...不太瞭解ios ...但假設他們是相似的...我認爲ios有一個服務與服務器通信像GCM的方式...... –

1

GCM向通過推送通知服務器註冊時從iOS/Android設備生成的設備令牌發送通知。如果您正在考慮收到沒有設備令牌的通知,則這基本上是不正確的。

+0

我沒有說我想這樣做沒有設備令牌。 :)我認爲這將是必要過程的一部分。 – skb

9

我覺得如果你需要發送推送通知,以iOS和Andriod的再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}); 
     } 
    }); 
}); 
0

我相信你可以使用勞務工。

推送是基於服務人員,因爲服務人員在後臺操作。這意味着唯一的時間碼是針對推送通知運行的(換句話說,電池使用的唯一時間)是用戶通過單擊或關閉通知與通知進行交互的時間碼。如果您不熟悉它們,請查看服務人員介紹。當我們向您展示如何實現推送和通知時,我們將在後面的章節中使用服務工作者代碼。

所以基本上有一個後臺服務,等待推,這就是你打算建立。

兩種技術

推送和通知使用不同但互補的的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