我正试图将通知优先级设置为HIGH
,如此处文档和此处定义的特定参数中所述。然而,当我在云函数中设置此属性时,在尝试部署时会出现以下错误:
src/index.ts:107:35 - error TS2345: Argument of type '{ tokens: string[]; notification: { title: string; body: any; }; data: { title: any; subtitle: any; body: any; id: any; }; android: { notification: { icon: string; channel_id: string; tag: any; }; priority: string; }; }' is not assignable to parameter of type 'MulticastMessage'.
The types of 'android.priority' are incompatible between these types.
Type 'string' is not assignable to type '"normal" | "high" | undefined'.
107 admin.messaging().sendMulticast(message)
~~~~~~~
我知道这意味着我不应该输入字符串。但根据文件,这是预期的类型。不仅如此,我还很困惑它在引号'"normal | "high" | undefined'
中指的是什么类型。那是什么类型的?
以下是正在设置的完整消息容器:
const message = {
tokens: tokens,
notification: {
title: snapshot.data().sender_username + " - " + snapshot.data().group_name,
body: snapshot.data().content
},
data: {
title: snapshot.data().group_name,
subtitle: snapshot.data().sender_username,
body: snapshot.data().content,
id: message_topic
},
android: {
notification: {
icon: 'add_circle_outline',
channel_id: 'exampleChannelId',
tag: message_topic
},
priority: "high" // <-- This is where the error is thrown
}
};
IDE由于感知到类型不匹配而不满意。
一个解决方案是显式键入android config:
import * as admin from 'firebase-admin';
const androidConfig: admin.messaging.AndroidConfig = {
priority: 'high',
...,
};
const message = {
...,
android: androidConfig,
};
这很好,因为您可以看到您可以设置的其他配置选项。注意,您也可以显式键入整个消息,在这种情况下,它将是admin.messaging.MulticastMessage
您似乎需要在其他位置设置优先级,以便正确设置优先级并且不会引发错误。如果你在这里查看这个文档,它似乎需要以不同的格式编写。
我做了进一步的调查,我可以在社区上找到以下两个帖子,这可能会帮助你实现将优先级设置为高的目标。
- 使用firebase管理时设置FCM高优先级
- 如何指定FCM消息的优先级
另一篇文章-在Android中轻松使用FCM推送通知-可能会提供一些关于如何实现这一点的额外想法。
如果这些信息对你有帮助,请告诉我!