messages.send不是函数

时间:2019-04-19 14:18:45

标签: javascript firebase firebase-cloud-messaging

我正在尝试通过网络应用发送通知到android设备。

我试图这样做,但是出现了这个错误。我看了许多其他问题,但找不到答案。我更新了所有内容,但仍然无法正常工作。

我在做什么错了?

我的代码:

   const messaging = firebase.messaging();

    var message = {
       data: {
         score: '850',
           time: '2:45'
          },
       token: registrationToken
   };


messaging.send(message)
   .then((response) => {
     // Response is a message ID string.
      console.log('Successfully sent message:', response);
   })
   .catch((error) => {
       console.log('Error sending message:', error);
   });

2 个答案:

答案 0 :(得分:0)

您似乎正在使用Firebase Admin SDK,该功能可以发送FCM消息。

Admin SDK授予其用户对Firebase项目的完全管理访问权限,这意味着该代码可以向您的所有用户发送任何类型的消息,但也可以访问您的Firebase项目中的任何其他资源(文件,数据库,用户帐户)随意进行项目。因此,只能将Admin SDK用于受信任的环境中,例如您控制的服务器,开发计算机或Cloud Functions。明确禁止在网页中使用它。

完成目标的一种典型方法是创建一个发送正确消息的Cloud Function,然后从您的网页调用该Cloud Function。由于只有Firebase项目上的协作者才能部署Cloud Functions,因此可以确保发送的消息来自您的代码。

答案 1 :(得分:0)

您显然要按照here中的意思使用admin。为此,请确保已安装firebase-admin,否则请运行npm install firebase-admin

然后用作:

admin.messaging().send(message)
  .then((response) => {
    // Response is a message ID string.
    // Your logic here
  })
  .catch((error) => {
    console.log('Error:', error);
  });