单击通过 Cloud Functions for Firebase 触发的通知时打开特定 activity

Open specific activity while clicking on notification triggered through Cloud Functions for Firebase

我有一个 android 应用程序,它使用 firebase 作为后端。

使用 firebase 云函数 一旦数据库在特定节点发生变化,通知就会触发。

但是我不知道如何根据特定节点的变化打开特定的activity。

我在数据库中有 5 个活动和 5 个节点,应该通过通知打开的 activity 应该是对应于特定节点更改的 activity。

但现在它打开默认 activity。

由于通知是通过 firebase 云函数传递的,因此我无法确定通知将如何包含在其有效负载中打开特定 activity 的信息。

下面粘贴了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"
        }
    };