无法在Firebase失效时间数据库中使用onCreate事件接收推送通知

时间:2019-06-26 09:20:24

标签: typescript firebase push-notification firebase-cloud-messaging firebase-admin

我正在尝试实现下一个功能: 当我在Firebase实时数据库中添加记录时,我想向我的设备发送推送通知。

我在firebase上注册了设备,我已经通过Firebase控制台发送了测试推送通知-我在设备上收到了推送通知。

但是,现在,当我部署下一个函数firebase并尝试在/user-chat路径下添加一条记录时-我没有收到任何推送通知。为什么?如何调试/测试呢?

代码如下:

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';

admin.initializeApp(functions.config().firebase);

exports.sendPushNotification = functions.database
  .ref('/user-chat')
  .onCreate((event: any) => {

    const payload = {
        notification: {
            title: 'Title',
            body: 'come check it',
            badge: '0',
            sound: 'default',
        }
    };

    const token = 'myTestedVerifiedToken';

    return admin
      .messaging()
      .sendToDevice(token, payload)
      .then((response: any) => {
          // 
      });
  });

更新: 我成功地使用nodejs将推送通知直接发送到本地设备。但是现在,当我使用firebase deploy命令将其包装到onCreate方法并尝试部署它时,我收到下一个错误:

Error: Error parsing triggers: Cannot find module './cargo-tender-firebase-adminsdk-8e307-c6b82762d2.json'

出什么问题了?当我在本地运行脚本时,该路径有效。 这是代码:

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';

const serviceAccount = require('./cargo-tender-firebase-adminsdk-8e307-c6b82762d2.json');

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://cargo-tender.firebaseio.com"
});

exports.sendPushNotification = functions.database
  .ref('/user-chat')
  .onCreate((event: any) => {

    const payload = {
        notification: {
        title: 'Title',
        body: 'come check it',
        badge: '0',
        sound: 'default',
        }
    };
    return admin
      .messaging()
      .sendToDevice('fcI1JGvOQnI:APA91bFql_J3Vx3TEfJgO6cwk6nmHBLtVrRk1J3AjD6f3nr5F5ZAI2yAy2Iiz4zBpkIXET2WurO8cjU0PY9lUbrPtNkej_oDCzozwIx1y_CwHxre1f3rFvIzr5K414oqBHdkamA2249e', payload)
  });

1 个答案:

答案 0 :(得分:0)

1)我必须将服务帐户.json文件从src文件中移出,并在脚本中将其更改为父文件夹(双点..)的路径

2)我不得不将引用路径更改为.ref('/user-chat/{anything}')