繁体   English   中英

如何使用 FCM 发送通知?

[英]How to send notification using FCM?

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

这里是 function,

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);
    }
});
   

这个 function 工作很奇怪,

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

它会引发类似“TypeError:无法读取未定义的属性'0'”的错误。

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

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

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

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

我在节点上很新..

请帮帮我。

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

这是我的文档结构,

来自此行的类型错误:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM