HTTP v1 API:用于 webpush 通知的“click_action”

Posted

技术标签:

【中文标题】HTTP v1 API:用于 webpush 通知的“click_action”【英文标题】:HTTP v1 API: "click_action" for webpush notification 【发布时间】:2018-03-08 16:02:17 【问题描述】:

FCM 中的文档主要关注 android/ios,而我卑微的 webpush 正在与 click_action 斗争。

click_action 是一个可用于旧 API 的密钥,但似乎不再可用于 webpush

对此的唯一具体参考是在这篇博文中:https://firebase.googleblog.com/2017/11/whats-new-with-fcm-customizing-messages.html,它再次关注 iOS 和 Android。

我正在寻求澄清,click_action 现在确实不支持 webpush 消息。

【问题讨论】:

见我的answer here。虽然这是为 Legacy 准备的。我看不出他们为什么会在 v1 中删除它 如果受支持,则不会记录为 WebpushConfig 选项、配置标头属性或 WebpushNotification 选项。 【参考方案1】:

Click_action 对我有用,但我认为它还没有记录。

我在 webpush -> 通知 -> click_action 中添加了它。

编辑:HTTP v1 API 中提供了一个新选项。

【讨论】:

你使用的是FCM HTTP v1 API? 当然。因为旧版并未授权通知的所有参数。 我可以确认click_actionFCM HTTP v1 中不起作用。具体来说:“消息”:“收到无效的 JSON 有效负载。'message.webpush' 处的未知名称 \"click_action\":找不到字段。 对我来说效果很好。我正在寻找为什么它对我没问题而不是对你。 "message":"topic":"push-test","webpush":"notification":"actions":[],"tag":123456,"title":"Titre de test"," body":"取消通知","image":".\/images\/icon.png","badge":".\/images\/badge.png","icon":".\/图片\/icon256.png","振动":[50,200,50],"click_action":"\/","数据":"time":"1531396372","headers":"TTL" :"60" 在 message.webpush.notification 中添加 click_action。【参考方案2】:

使用您的WebpushNotification.Builder 对象并调用putCustomData() 方法,其中click_action 作为键,您的click_action URL 作为值。

使用 Java Firebase Admin SDK,它看起来像这样:

wpnb.putCustomData("click_action", "<your_url_here>");

【讨论】:

【参考方案3】:

您可以在 Web 推送负载的数据字段中包含您想要的任何键=>值对。

在您的 Service Worker 中注册一个 notificationclick 事件侦听器,这些数据值在您的通知被点击时触发的事件中可用。访问您的数据,然后执行所需的点击操作。

【讨论】:

我可能会误解,但据我所知,FCM HTTP v1 API 没有关于使用服务人员的文档。 这是 FCM API 的文档,所以我不希望它涵盖服务人员。他们记录了您可以在这里创建的不同类型的通知firebase.google.com/docs/reference/fcm/rest/v1/…,并且有许多网站解释了 service workers api。使用 Web Push 格式为您提供了更多选项来自定义通知以及跟踪用户与它们的交互【参考方案4】:

得到多个消息来源的证实。 Firebase 云消息传递上的 HTTP V1 中的 WebPush 目前不支持 click_action。伤心!

【讨论】:

为什么不把它放在一个单独的任意数据数组中?

以上是关于HTTP v1 API:用于 webpush 通知的“click_action”的主要内容,如果未能解决你的问题,请参考以下文章

WebPush 发送失败

PHP:创建网络推送通知

webpush 如何在 TCP/IP 网络层工作

面向匿名用户的 Firebase 推送网络通知

网络推送 201 但在设备上看不到通知

使用 REST api 发送通知