猿问

向1000多个token节点js发送FCM通知

我有带有 5000 多个用户令牌的 Firestore 文档,但 FCM 限制为 1000,如何向所有人发送通知。


我如何使用循环发送 1000-1000 任何人都可以帮助我弄清楚这一点。


var newData;


exports.articlenotification = functions.firestore

  .document("Articles/{id}")

  .onCreate(async (snapshot, context) => {

    //


    if (snapshot.empty) {

      console.log("No Devices");

      return;

    }


    newData = snapshot.data();


    const deviceIdTokens = await admin

      .firestore()

      .collection("Tokens")

      .where("article", "==", true)

      .get();


    var tokens = [];


    for (var token of deviceIdTokens.docs) {

      tokens.push(token.data().token);

    }

    var payload = {

      notification: {

        title: "New Article",

        body: newData.title,

        image: newData.image,

        sound: "default"

      }

    };


    try {

      const response = await admin.messaging().sendToDevice(tokens, payload);

      console.log("Notification sent successfully");

    } catch (err) {

      console.log(err);

    }

  });


绝地无双
浏览 199回答 2
2回答

慕婉清6462132

有两种方法可以做到这一点。第一种方式发送 1000 然后 1000 ..等等。第二种方式是发送到特定主题,所有订阅该主题的客户都会收到您的通知。设备组主题消息此代码发送 1000 然后 1000 ..etc。但我不喜欢它。你应该使用topic-messaging它来代替它。for (let i = 0; i < listOf5000Tokens.length; i += 1000) {&nbsp; &nbsp; const listOf1000Tokens = listOf5000Tokens.slice(i, i + 1000);&nbsp; &nbsp; // using await to wait for sending to 1000 token&nbsp; &nbsp; await doSomeThing(listOf1000Tokens);}

江户川乱折腾

您需要分批发送消息。例如:// Create a list containing up to 500 messages.const messages = [];messages.push({&nbsp; notification: {title: 'Price drop', body: '5% off all electronics'},&nbsp; token: registrationToken,});messages.push({&nbsp; notification: {title: 'Price drop', body: '2% off all books'},&nbsp; topic: 'readers-club',});admin.messaging().sendAll(messages).then((response) => console.log(response.successCount + ' messages were sent successfully'));
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答