You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

关于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

火山引擎 最新活动