#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() .