Javascript 如何将channelId添加到通知中?
我编写了一个云函数,用于向特定设备发送云消息Javascript 如何将channelId添加到通知中?,javascript,google-cloud-functions,firebase-cloud-messaging,firebase-admin,Javascript,Google Cloud Functions,Firebase Cloud Messaging,Firebase Admin,我编写了一个云函数,用于向特定设备发送云消息 export const onGroupInvitationCreate = functions.region('europe-west1').firestore.document('users/{userId}/userGroupInvitations/{invitationId}').onCreate(async (handler, context) => { const invitation = GroupInvitationM
export const onGroupInvitationCreate = functions.region('europe-west1').firestore.document('users/{userId}/userGroupInvitations/{invitationId}').onCreate(async (handler, context) => {
const invitation = GroupInvitationModel.fromFirestoreDocumentData(handler);
const documentList = await userCollection.doc(invitation.receiverId).collection('userDeviceData')
.listDocuments();
const futureDocuments = [];
for(const documentReference of documentList)
futureDocuments.push(documentReference.get());
const deviceDatas = (await Promise.all(futureDocuments)).map(deviceData => DeviceDataModel.fromFirestoreDocumentData(deviceData));
const futureNotifications = [];
for(const deviceData of deviceDatas)
{
const translator = deviceData.language !== 'nl' ? languages.en : languages.nl;
const payload: admin.messaging.MessagingPayload = {
// notification: {
// title: `${translator['invitationTitle' as keyof typeof translator]}`,
// body: `${invitation.senderDisplayName} ${translator['invitationBody' as keyof typeof translator]} ${invitation.groupDisplayName}`,
// clickAction: 'FLUTTER_NOTIFICATION_CLICK',
// },
data: {
title: `${translator['invitationTitle' as keyof typeof translator]}`,
body: `${invitation.senderDisplayName} ${translator['invitationBody' as keyof typeof translator]} ${invitation.groupDisplayName}`,
clickAction: 'FLUTTER_NOTIFICATION_CLICK',
senderId: invitation.senderId,
senderDisplayName: invitation.senderDisplayName,
type: 'invitation',
sentAt: new Date().toISOString(),
}
}
futureNotifications.push(messaging.sendToDevice(deviceData.cloudMessagingToken, payload));
}
await Promise.all(futureNotifications).catch((error) => console.error(`There was an error while notifying receiver ${invitation.receiverId}`, error));
return Promise.resolve('Status 200');
});
我如何提供channelId?我正在使用
messaging.sendToDevice();
它接受注册令牌、有效负载和选项。我注意到没有一个具有属性通道ID
AndroidConfig
确实有一个属性channelId,但我在发送通知时找不到如何使用它
这就是sendToDevice将其作为参数的内容
sendToDevice(
registrationToken: string | string[],
payload: admin.messaging.MessagingPayload,
options?: admin.messaging.MessagingOptions
): Promise<admin.messaging.MessagingDevicesResponse>;
sendToDevice(
registrationToken:string | string[],
有效负载:admin.messaging.MessagingPayload,
选项?:admin.messaging.MessagingOptions
):承诺;
您需要在MessagingPayload
的通知
部分传递android\u频道id
属性。请参阅中的表2b,以获取遗留FCM API接受的所有Android相关选项的完整列表
如果您希望使用
AndroidConfig
,必须首先迁移到新的FCM API(即send()
方法)。您需要在MessagingPayload
的通知
部分传递安卓频道id
属性。请参阅中的表2b,以获取遗留FCM API接受的所有Android相关选项的完整列表
如果您希望使用
AndroidConfig
,必须首先迁移到新的FCM API(即send()
方法)。多亏@Hiranya Jayathilaka,我以以下方式设置了它,他的答案是正确的
const message: TokenMessage = {
token: deviceData.cloudMessagingToken,
data: {
title: `${translator['messageTitle' as keyof typeof translator]} ${group.displayName}`,
body: `${sender.displayName} ${translator[type as keyof typeof translator]}`,
clickAction: 'FLUTTER_NOTIFICATION_CLICK',
senderId: sender.id,
senderDisplayName: sender.displayName,
groupId: group.id,
type: 'groupMessage',
messageType: type,
sentAt: new Date().toISOString(),
},
android: {
priority: 'high',
notification: {
channelId: '59054',
}
}
}
console.log(message);
console.log('notification sent');
futureNotifications.push(messaging.send(message));
多亏了@Hiranya Jayathilaka,我按照以下方式设置了它,他的答案是正确的
const message: TokenMessage = {
token: deviceData.cloudMessagingToken,
data: {
title: `${translator['messageTitle' as keyof typeof translator]} ${group.displayName}`,
body: `${sender.displayName} ${translator[type as keyof typeof translator]}`,
clickAction: 'FLUTTER_NOTIFICATION_CLICK',
senderId: sender.id,
senderDisplayName: sender.displayName,
groupId: group.id,
type: 'groupMessage',
messageType: type,
sentAt: new Date().toISOString(),
},
android: {
priority: 'high',
notification: {
channelId: '59054',
}
}
}
console.log(message);
console.log('notification sent');
futureNotifications.push(messaging.send(message));
是的,这是正确的答案!我为未来的读者添加了一个代码片段,如果你想把它放在你的答案中,我将删除我的答案。是的,这是正确的答案!我为将来的读者添加了一个代码片段,如果你想把它放在你的答案中,我将删除我的答案。