我有一个使用Firebase作为后端的Android应用程序。
使用Firebase 云功能一旦数据库在特定节点发生更改,就会触发通知。
但是我无法弄清楚如何根据特定节点的变化打开特定活动。
我在数据库中有 5 个活动和 5 个节点,应该通过通知打开的活动应该是与特定节点的变化相对应的活动。
但现在它会打开默认活动。
我无法弄清楚通知将如何包含在其有效负载中打开特定活动的信息,因为通知是通过 Firebase 云函数传递的。
index.js 的示例文件粘贴在下面,仅用于一个子节点中的更改。
'use strict';
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.sendPowerNotification = functions.database.ref("/Matrimony").onWrite((event) => {
const data = event.data;
console.log('New Issue added');
if (!data.changed()) {
return;
}
const status = data.val();
//const onOff = status ? "on": "off";
const author = event.params.author;
const name = author.val();
const payload = {
notification: {
title: 'SahuSmaj : New Matrimony Post',
body: `New biodata entered,check it out`,
sound: "default"
click_action: "MATRIMONY"
}
};
const options = {
priority: "high",
timeToLive: 60 * 60 * 24 //24 hours
};
console.log('Sending notifications');
return admin.messaging().sendToTopic("matrimony", payload, options);
});
执行上面的代码显示此错误:
Error: Error occurred while parsing your function triggers.
/private/var/folders/sf/2spqs2n1493d506bj06wj0zw0000gn/T/fbfn_1018VUGx2TTMO1y8/index.js:33
click_action : "MATRIMONY"
^^^^^^^^^^^^
SyntaxError: Unexpected identifier
at Object.exports.runInThisContext (vm.js:76:16)
at Module._compile (module.js:542:28)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/usr/local/lib/node_modules/firebase-tools/lib/triggerParser.js:16:9)
at Module._compile (module.js:570:32)
我已经在我的AndroidManifest中进行了更改.xml以便使用Android过滤器打开特定通知。
<intent-filter>
<action android:name="MATRIMONY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
您在payload
中缺少逗号 (,
),在sound: "default"
之后
const payload = {
notification: {
title: 'SahuSmaj : New Matrimony Post',
body: `New biodata entered,check it out`,
sound: "default"
click_action: "MATRIMONY"
}
};
它应该是:
const payload = {
notification: {
title: 'SahuSmaj : New Matrimony Post',
body: `New biodata entered,check it out`,
sound: "default",
click_action: "MATRIMONY"
}
};