如何使用 FCM 发送通知?

Posted

技术标签:

【中文标题】如何使用 FCM 发送通知?【英文标题】:How to send notification using FCM? 【发布时间】:2020-11-27 01:40:40 【问题描述】:

我编写了一个云函数,用于在我的数据库中侦听集合中的文档创建

这里是函数,

const functions = require('firebase-functions');
const admin = require('firebase-admin');
 
admin.initializeApp(functions.config().functions);
 
var newData;
 
exports.myTrigger = functions.firestore.document('FCM/id').onCreate(async (snapshot, context) => 
    //
 
    if (snapshot.empty) 
        console.log('No Devices');
        return;
    
 
    newData = 'hello';
 
    const deviceIdTokens = await admin
        .firestore()
        .collection('FCM')
        .get();
 
 var tokens = [];
 var i=0;
    for (var token of deviceIdTokens.docs) 
        tokens.push(token.data().ar1[i]);
        i++;
    
    var payload = 
        notification: 
            title: 'push title',
            body: 'push body',
            sound: 'default',
        ,
        data: 
            push_key: 'Push Key Value',
            key1: newData,
        ,
    ;
 
    try 
        const response = await admin.messaging().sendToDevice(tokens, payload);
        console.log('Notification sent successfully');

        
     catch (err) 
        console.log(err);
    
);
   

这个功能很奇怪,

例如,有时它会发送通知,有时则不会。

它会抛出类似“TypeError: Cannot read property '0' of undefined”这样的错误。

我不知道如何解决这个问题,

在我的 arr1 字段中,我有一组设备令牌,我想向其发送通知,

我希望该功能仅向刚刚创建的设备(使用令牌)发送通知(在新创建的文档中),然后删除该文档。

我认为它是一次向所有文档发送通知。

我是节点的新手..

请帮帮我。

更新:- 这是我的文档结构

【问题讨论】:

如果没有看到您正在使用的具体数据,也没有了解您对这些数据的确切期望,我们无能为力。请编辑问题以更清楚地显示实际数据。 嗨,我已经更新了我的问题,我已经添加了我的文档结构的图像。 【参考方案1】:

来自此行的类型错误:

tokens.push(token.data().arr1[i]);

所以我只能说有时 token.data() 没有 arr1 属性。

【讨论】:

以上是关于如何使用 FCM 发送通知?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:如何使用 fcm 以编程方式发送推送通知

如何使用 C# 向所有设备发送带有图像的 FCM 通知?

如何在 nodejs 中使用 FCM 发送 AWS SNS 推送通知?

如何在 android 中使用 FCM 发送推送通知? [复制]

如何使用 node-fcm 向多个设备发送通知

如何使用 FCM 有效地向 10k 用户发送个性化通知