推送通知随着火力地堡,Node.js的,和谷歌云端通讯iOS应用(Push Notification

2019-10-29 09:10发布

我试图用火力地堡,Node.js的,和谷歌云消息发送推送通知的iOS应用。 下面是Node.js的代码

var Firebase = require('firebase'),
    gcm = require('node-gcm')
    ;
var pushRef = new Firebase("https://<myapp>.firebaseio.com/ios/queue/tasks");

pushRef.on("child_added", function(snapshot) {

    console.log("child added event registers");

    var notificationData = snapshot.val();
    sendNotification(notificationData);
    snapshot.ref().remove();

});

function sendNotification(notificationData) {

    var message = new gcm.Message({
      notification: {
        title: "Title",
        body: notificationData.message
      }
    });

    var sender = new gcm.Sender(<my Google Server Key>);
    var registrationTokens = [notificationData.recipientId];

    console.log("about to send message");
    console.log("this is the registration token: " + registrationTokens);

    sender.send(message, { registrationTokens: registrationTokens }, 10, function (err, response) {
      if(err) {
        console.error(err);
      } else {
        console.log(response);
      }
    });
}

有没有错误,所有的console.log语句注册。 但是,我从来没有收到我的设备上的推送通知。 这里是执行console.log(响应):

{ multicast_id: 7398179070839209000,
  success: 1,
  failure: 0,
  canonical_ids: 0,
  results: [ { message_id: '0:1457564370785913%939a5f18939a5f18' } ] }

可能是什么回事? 它看起来像的东西应该是工作,但他们都没有

Answer 1:

默认情况下,消息与标准优先级,而根据发送谷歌云端通讯文档 :

这是消息传递的默认优先级。 正常优先级消息将不会打开一个休眠设备上的网络连接,和它们的递送可以被延迟,以节省电池。 对于不太时间敏感的消息,诸如新的电子邮件或其他数据,以同步的通知,选择正常投放优先级。

不知怎的,这正常优先级似乎影响比Android应用更多的iOS 。

为了获得立即传递消息,你要添加priority: 'high'到你的消息:

var message = new gcm.Message({
  priority : "high",
  notification: {
    title: "Title",
    body: notificationData.message
  }
});


文章来源: Push Notifications With Firebase, Node.js, and Google Cloud Messaging for iOS app