关于FCM Webpush中click_action字段是否已不再支持的技术问询
关于FCM Web Push中
click_action字段的支持情况 对,你没看错——click_action字段确实已经不再支持Web Push消息,而且其实从FCM Web Push功能上线以来,这个字段就从未被纳入Web端的支持范围里。
我来给你理清楚其中的区别:
- 在FCM的移动平台(Android、iOS)旧版API中,
click_action是官方支持的字段,用来指定用户点击通知后跳转的目标页面或动作。但这个是移动端专属的自定义字段,和Web Push遵循的标准协议完全不兼容。 - 你提到的那篇2017年的官方博客,核心聚焦的是移动端消息的自定义能力,对Web Push的细节几乎没有涉及,所以找不到明确的Web端说明也很正常。
那Web Push里要实现点击通知跳转的需求,该怎么做呢?得用Web Push标准支持的data字段来自定义参数,然后在Service Worker的notificationclick事件里手动处理跳转逻辑。举个简单的实现例子:
发送消息的Payload示例
{ "notification": { "title": "您有新通知", "body": "点击查看详情" }, "data": { "target_url": "https://your-app.com/detail" }, "webpush": { "headers": { "TTL": "86400" } } }
Service Worker中的事件处理代码
self.addEventListener('notificationclick', (event) => { // 先关闭通知弹窗 event.notification.close(); // 从通知的data中读取自定义的跳转URL const targetUrl = event.notification.data.target_url; if (targetUrl) { // 打开指定URL,waitUntil确保操作完成后再结束事件 event.waitUntil( clients.openWindow(targetUrl) ); } });
本质上,FCM的Web Push是基于标准Web Push协议封装的,所以必须遵循Web Push的规范来实现自定义行为,而click_action这种移动端专属的字段,Web端的Service Worker根本不会识别处理,自然也就没有效果。
内容的提问来源于stack exchange,提问作者Nick




