问题标签 [push-api]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
google-chrome - Google Chrome 静默推送通知
我一直在这里阅读 Chrome 实现 Web Push API 的文档,我注意到 API 说“你承诺在收到推送时显示通知”,并且在限制下它说“你必须在您收到一条推送消息”。
在我的本地主机上实现示例后,我使用 cURL 成功发送了推送通知。我很好奇,所以我注释掉了实际调用 showNotification 函数的行,并放入了一个 console.log,发现实际上我可以发送、接收和完全忽略推送通知。我什至尝试使用 if 语句来控制是否根据我从主页控制的全局布尔值来显示它们,并且有效。所以我想知道是否有人知道他们说你需要显示通知是什么意思,而无声推送通知不可用?
这不仅仅是为了它,我合法地可能需要控制是否在我的网络应用程序中显示这些通知,所以如果这实际上是可能的,那就太好了。下面的代码,以防你好奇。
编辑:在 Chrome 47 上,如果相关的话。
更新:经过进一步实验,我发现了一个明显的问题,即一旦用户离开然后重新导航到同一页面,我就无法更新原始全局变量。但是,我能够使用 serviceworker 本身的变量来规避这个问题,并使用此处描述的 API 向 service worker 发送消息来切换 showNotifications 布尔值。
google-chrome - chrome.gcm 仅适用于应用程序和扩展程序,我如何将其用作普通网站?
我听说 Chrome(包括 Android)现在支持推送通知作为网站,但我可以找到的文档谈论 chrome.gcm 仅在 Chrome 应用程序或 Chrome 扩展程序中可用。我该怎么办?
javascript - 如何向网络浏览器发送推送通知?
过去几个小时我一直在阅读有关Push Notification API和Web Notification API的内容。我还发现 Google 和 Apple 分别通过 GCM 和 APNS 免费提供推送通知服务。
我试图了解我们是否可以使用桌面通知向浏览器实现推送通知,我相信这就是 Web 通知 API 所做的。我在此处和此处看到了有关如何为 Chrome 完成此操作的谷歌文档。
现在仍然无法理解的是:
- 我们可以使用 GCM/APNS 向所有 Web 浏览器(包括 Firefox 和 Safari)发送推送通知吗?
- 如果不通过 GCM,我们可以拥有自己的后端来做同样的事情吗?
我相信所有这些都在一个答案中回答可以帮助很多有类似困惑的人。
service-worker - 是否可以在没有 GCM 的情况下在 Chrome 中使用新的推送通知支持?
将新的 Push API 与 Service Worker 一起使用时,我可以使用 Google 的GCM以外的推送服务吗?
service-worker - 如何在本机和渐进式 Web 应用程序之间删除重复通知?
如果我有一个本地应用程序和一个渐进式网络应用程序,使用由服务工作者提供支持的网络推送通知,如果用户选择接收来自网站的通知并且还安装了应用程序,有没有办法防止用户接收重复的通知?
google-chrome - 如何在 service worker 中读取 pushSubscription.endpoint?
我正在使用 Google Chrome Service Worker 为我的网络用户实现推送通知服务。
鉴于 Chrome 当前的安全限制无法发送有效负载,因此我从我的网络服务器获取内容,但是在服务端识别哪个最终用户正在查询推送有效负载非常复杂
是否可以获得 pushSubscription.endpoint 的信息或关于我的服务人员连接到的任何形式或唯一标识?
push-notification - Chrome 推送通知端点 + 用户标识
我计划为 Chrome 集成推送通知(推送 API 和通知 API)。
成功订阅后,Chrome 服务器会向客户端发送一些特殊令牌(“端点”),您可以使用它来识别客户端并发送任何推送消息。
从文档:
端点应该为每个用户保存在您的服务器上,因为您需要他们在以后发送推送消息。
我有几个问题:
- 您如何在服务器端管理“端点”?您是否会在通过 AJAX 成功订阅您的服务器后发送此“端点”并保存到数据库中。或者您将其保存到 cookie 中,然后在登录/注册请求后将其保存在服务器上。
- 我想知道,您如何将“端点”与真实用户联系起来?用户可以打开您的站点,单击“允许”以显示推送通知,但他没有会话 cookie,因此您无法在当时与真实用户识别此“端点”。
- 这个“端点”有一些 TTL 吗?
javascript - 如何安排 chrome 推送通知?
我正在为我的网站用户实施 chrome 推送通知。我可以通过服务人员成功地做到这一点。我正在关注这些文章/教程
- https://developers.google.com/web/updates/2015/03/push-notifications-on-the-open-web?hl=en
- http://www.html5rocks.com/en/tutorials/service-worker/introduction/
当我想现在发送通知时,这非常有效,即没有安排未来。
我的问题:
我想在当天晚些时候安排此通知可能会重复出现,我可以通过 cron 来完成。但是 GCM 不会像这里所说的那样向您发送有效负载https://developers.google.com/web/updates/2015/03/push-notifications-on-the-open-web?hl=en我引用。
目前在 Chrome 中实现 Push API 的一个缺点是您无法通过推送消息发送任何数据。不,什么都没有。这样做的原因是,在未来的实现中,有效负载数据必须在您的服务器上加密,然后才能发送到推送消息端点。这样,无论是什么推送提供者,端点都无法轻松查看推送消息的内容。这还可以防止其他漏洞,例如 HTTPS 证书验证不佳以及服务器和推送提供程序之间的中间人攻击。但是,尚不支持此加密,因此在此期间您需要执行提取以获取填充通知所需的信息。
因此,我无法弄清楚我在浏览器中收到了哪个计划通知的推送事件。因为可能有多个通知发送到 GCM。
我正在获取通知表中的最后一条记录,即我总是显示最后一条记录数据。因为我不知道我在 chrome 浏览器中收到推送事件的通知。
我的问题:
是否有解决方法来安排通知并向客户端/浏览器显示正确的通知?甚至可以在原生 chrome push api 中使用吗?
html - 如何从不同的域注册服务工作者
我正在尝试为 Google Chrome 实现推送通知。我想从不同的域注册服务人员。
示例:Service Worker 代码位于:https ://example.com/
我想从不同的域注册服务工作者(位于上述域):https ://example2.com/
有没有办法达到同样的效果。因为当我尝试将服务工作人员页面(示例)包含为 iFrame 时,服务工作人员在注册时会引发错误
“未捕获(承诺)DOMException:注册失败 - 权限被拒绝”
android - Chrome 推送通知如何检索推送数据?
我正在关注谷歌的本教程:
https://developers.google.com/web/updates/2015/03/push-notifications-on-the-open-web
我试过但不知道如何在推送通知中获取数据。
例如,我想检索这样的数据:
这data
是我推送到 Google Cloud Messaging 的字段之一: