因此,我目前正在开发PWA。
我现在正在使用推送通知,我已经能够通过以下非常简单的JSON结构来收到背景和前景通知。
{
"message":{
"token":"aValidToken",
"notification": {
"title": "New Content!",
"body": "A new video has been uploaded."
}
}
}
我也能够在其中添加一个数据成员,并在没有不便的情况下获得通知。
现在的问题是,如果我想将另一个成员添加到JSON,例如例如 click_action ,我会发布以下内容:
{
"message":{
"token":"aValidToken",
"notification": {
"title": "New Content!",
"body": "A new video has been uploaded.",
"click_action":"https://www.google.com.ar/"
}
}
}
我会收到以下错误:
{
"error": {
"code": 400,
"message": "Invalid JSON payload received. Unknown name "click_action" at 'message.notification': Cannot find field.",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.BadRequest",
"fieldViolations": [
{
"field": "message.notification",
"description": "Invalid JSON payload received. Unknown name "click_action" at 'message.notification': Cannot find field."
}
]
}
]
}
}
几乎所有其他成员都发生在我身上,例如:优先级,图标,声音,徽章等。
最后,我尝试了硬编码 ICON 和 click_action 在 setbackgroundMessageHandler (确实被调用(中,以无用。没有图标出现,单击通知时什么也不会发生。
messaging.setBackgroundMessageHandler( (notif) => {
const notificationTitle = notif.notification.title;
const notificationOptions = {
body : notif.notification.body,
icon : '/assets/icon/icon72x72.png',
click_action : 'https://www.google.com.ar/'
};
return self.registration.showNotification(notificationTitle, notificationOptions);
});
这纯粹是离子PWA 项目,旨在在移动浏览器和桌面上运行。我会感谢您可以给我的所有技巧!谢谢!
看起来您正在使用新的API:https://firebase.google.com/docs/reference/fcm/rest/rest/v1/projects.messs.messages
,但试图使用遗产API的字段:https://firebase.google.com/docs/cloud-messaging/http-server-ref
您可以使用所使用的API定义图标,但是您的有效载荷必须是:
{
"message": {
"token": "aValidToken",
"webpush": {
"notification": {
"title": "New Content!",
"body": "A new video has been uploaded.",
"icon": "your_icon"
}
}
}
}
您可以在此处找到有关WebPush通知字段的更多信息。
fyi,您提到的其他大多数字段(优先,声音,徽章(是不是尚未在Web上支持的API。
编辑(2018年5月10日(:现在,新的API支持所有通知属性(优先,图标,声音,徽章等(。有关详细信息,请参见本指南。