我正在尝试实现下一个功能:当我在Firebase实时数据库中添加记录时,我想向设备发送推送通知。
我在Firebase上注册了设备,我已经通过Firebase Console发送了一个测试推送通知 - 我在设备上收到了推送通知。
但是,现在,当我部署下一个功能时,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将推送通知直接发送到本地设备。但是现在,当我将其包装到Oncreate方法并尝试使用firebase deploy
命令时 - 我收到下一个错误:
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(我必须将服务帐户.json文件从src文件中移出,然后在脚本中更改脚本中的路径,例如父母文件夹(double dot dot ..
(
2(我必须将REF路径更改为.ref('/user-chat/{anything}')