Как создать полезную нагрузку push-уведомлений Firebase в функции firebase для push-уведомлений flutter?

#javascript #firebase #google-cloud-functions #firebase-cloud-messaging

# #javascript #firebase #google-cloud-функции #firebase-облако-обмен сообщениями

Вопрос:

Я создаю приложение flutter, в котором я использовал cloud firestore в качестве серверной части. Я хочу запустить push-уведомление вместе с данными нескольких типов данных, таких как массив, карты, строка и изображение, которые будут отображаться в уведомлении при добавлении события в коллекцию событий.

Я написал следующую функцию, которая отлично работает для обычного уведомления без изображений, массивов и типов данных карт.

 exports.eventPushNotification = functions.firestore.document('events/{eventid}').onCreate(async (snaphot, context) => {
    if(snaphot.empty){
        console.log("No data");
        return;
    }

    const eventData = snaphot.data();
    const dateavailable = eventData.available_dates;
    const ticketavailable = eventData.availbale_tickets;
    const coverImage = eventData.availbale_tickets;
    const created_at = eventData.created_at;
    const description = eventData.description;
    const title = eventData.title;
    const updated_at = eventData.updated_at;
    const venue = eventData.venue;
    var tokens =[];
    const deviceTokens =  await db.collection('DeviceTokens').get();
    console.log("Device tokens: ", deviceTokens.toString);
    for(var token of deviceTokens.docs)
    {
        tokens.push(token.data().token);
    }
    

    var payload = {
        notification : {title: "New Event Created", body: "Click here to see the event" },
        data: {
            click_action: "FLUTTER_NOTIFICATION_CLICK",
            message:"Sample Push Message",
            availableDatess : "afsdfa",
            availbale_tickets: "sdfsfa",
            cover: "sfsadf",
            created_at: "dsafsafs",
            description : "safasfs",
            title:"afdasfa",
            updated_at: "afasdfa",
            venue : "afdasf",
                    }
    }

    try{
        const respnse = await admin.messaging().sendToDevice(tokens,payload);
        console.log("Notification sent successfully");
    }
    catch(e){console.log("error while sending push notification", e.toString());
    }
}
);
 

Комментарии:

1. И что вы пробовали до сих пор для других типов данных?

2. @YeriPelona Спасибо за ваш вопрос. Наконец, я могу передавать объекты и сопоставлять типы данных, преобразуя их в строку с помощью функции JSON.stringify().

Ответ №1:

Просто для справки и, как упоминал @ranjit в своем комментарии:

Вы можете сделать это, преобразовав объекты и типы данных карты в строку с помощью функции JSON.stringify() .