Node.js / Firebase:通知无法访问设备

时间:2018-04-14 08:12:41

标签: node.js firebase google-cloud-functions

几个月前,我开始使用Firebase的后端工具。他们太棒了。所以我不得不采用当前的方法来通知用户他们的待办事项列表。我们转向云功能,速度提高了40倍。直到一周前我得到了MacOS的新副本我不得不删除固态硬盘中的所有内容。当我这样做时,我还安装了firebase命令行工具。我有我用于通知用户的代码,它突然停止工作

以下是发生的事情:

当有人在我们的每日列表中添加新记录时。该应用程序通知其他家庭成员有关新记录。所以我不得不想出一个方法来做到这一点。

旧代码(无缝工作)

const functions = require('firebase-functions');
var admin = require("firebase-admin");
admin.initializeApp();

var registrationToken = 'egV-C3ItwJE:APA91bGf5ezSRQQFHkzCNzfqhS6tiKRbs6IXXs57DFTrNCWRrVY0pZ4PHsK8G3ZjvvvO4JCvd13j_jBcJkgRh06YJ5Jw6tohc81Ro0k4HdHG-Jlv4sbW5t1DNmJBDeGf48l05eDlfMGO';


var payload = {
    data: {
        title: 'TEST/2',
        body: 'TEST/2'
      }
};

// registration token.
admin.messaging().sendToDevice(registrationToken, payload)
      .then((response) => {
        // Response is a message ID string.
        console.log('Successfully sent message:', response, payload);
       return
      })
      .catch((error) => {
        console.log('Error sending message:', error);
      });

回到我以前的macOS版本,这段代码没有问题。升级Firebase命令行工具我必须对代码进行一些编辑:

新代码(不工作)

    // This registration token comes from the client FCM SDKs.
var registrationToken = 'egV-C3ItwJE:APA91bGf5ezSRQQFHkzCNzfqhS6tiKRbs6IXXs57DFTrNCWRrVY0pZ4PHsK8G3ZjvvvO4JCvd13j_jBcJkgRh06YJ5Jw6tohc81Ro0k4HdHG-Jlv4sbW5t1DNmJBDeGf48l05eDlfMGO';

// See documentation on defining a message payload.
var message = {
  data: {
    title: '850',
    body: '2:45'
  },
  token: registrationToken
};

// Don't use the legacy sendToDevice
admin.messaging().send(message)
  .then((response) => {
    // Response is a message ID string.
    console.log('Successfully sent message:', response);
    return 

  })
  .catch((error) => {
    console.log('Error sending message:', error);
  });

问题是:

1-此功能点击时。我得到了“成功发送消息:”的回复。但邮件将无法到达设备

我尝试过的事情:

1-设备令牌是正确的,我已使用单个设备上的手动推送通知对其进行了测试

2-设备收到通知。

3-该设备在iOS 11.1上运行,与之前相同

由于

1 个答案:

答案 0 :(得分:1)

你可以检查这个功能,我试过这个我能得到通知。

在您的第一个代码示例中,您有用户sendToDevice,但在第二个示例中,您使用了发送

function sendPushNotification(fcmtoken, notificationTitle, notificationMessage) {
if (fcmtoken != null && fcmtoken != "" && fcmtoken != " ") {
    var payload = {
        notification: {
            title: notificationTitle,
            body: notificationMessage,
           sound: "default"
        }



    };

    admin.messaging().sendToDevice(fcmtoken, payload)
        .then(function (response) {

        }).catch(function (error) {
            console.log("Error sending message:", error);
        });
}
}