问题标签 [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.
firefox - 在 Firefox 上导致 CORS 问题的 Service Worker
按照这篇文章,我正在使用服务工作者进行推送通知。一切都适用于 Chrome,但使用 Firefox (v.44.0.2) 我有一个奇怪的问题。成功登录我的应用程序后,我注册了只等待推送事件的服务工作者;我看到它已正确注册(来自一些日志记录和about:serviceworkers)。现在,如果我刷新页面 (CTRL+R),我的所有 POST 都会由于这个服务工作者而出现 CORS 问题(缺少Access-Control-Allow-Origin标头),并且用户被重定向到登录页面;出于同样的原因,从这里开始,所有 POST 都不起作用。相反,如果我登录,请取消注册服务人员并然后刷新,完全没有问题。知道发生了什么吗?同样,我的服务人员只处理推送事件,没有缓存没有其他处理完成,它在 Chrome 上完美运行。
这是我的服务工作者代码( SOME_API_URL 指向一个真实的 API,它不需要用于测试目的,因为问题发生在服务工作者注册后,不需要推送事件)
javascript - PushManager 订阅承诺从不履行也不拒绝
我目前面临一些 Chrome (Chromium) 版本的问题,其中PushManager.subscribe
来自 ServiceWorker 的承诺保持在挂起状态。
代码本身非常简单:
我有一个有效且可访问的 JSON清单,提供GCM 发件人 ID。如本文所述,我还尝试了不同的实现,但结果仍然相同。
订阅部分适用于每个47+版本,问题出现在旧版本中。(我正在使用 Chromium 连续构建来测试不同的主要版本)。
另请注意,在 Ubuntu 上使用 Chromium 46(及更低版本)时,承诺会在15 分钟后以Internal Server Error
.
push-api - PushManager 端点包含“未定义”
在使用serviceWorkerRegistration.pushManager.subscribe
ServiceWorker 中的方法时,createdendpoint
有时会在字符串末尾包含一个“/undefined” 。
例如,通过 Chrome ServiceWorker :https://android.googleapis.com/gcm/send/xxx...xxx/undefined
我必须说我有一个有效的Android Sender ID,如果删除这个额外的部分,我可以向用户发送推送。
最后但并非最不重要的一点是, Chrome和Firefox订阅都发生了这种情况。
google-chrome - Chrome 推送通知:发送隐形推送
我不仅想发送带有消息的推送(通过获取),而且有时还发送不可见的推送(即根本不显示通知),只是为了检查有多少用户仍然订阅以及他们接收推送的速度。
我试过这段代码。它似乎有效,但在某些设备上,我收到“此站点已在后台更新”消息,这令人困惑。
我如何才能真正阻止浏览器显示任何内容?
google-chrome - `pushManager.subscribe` 和 `pushManager.getSubscription` Service Worker 的区别是什么
PushManager.getSubscription()
检索现有的推送订阅。它返回一个 Promise,该 Promise 解析为包含现有订阅详细信息的 PushSubscription 对象。如果不存在现有订阅,则这将解析为空值。
[...]
PushManager.subscribe()
订阅推送服务。它返回一个 Promise,该 Promise 解析为包含推送订阅详细信息的 PushSubscription 对象。如果当前服务工作者没有现有订阅,则会创建一个新的推送订阅。
根据 MDN 的pushManager
文档。方法几乎相同,只是在这种情况下getSubcription()
可能会用空值解决。
我基本上明白我可以简单地使用subscribe()
,Service Worker 将尝试获取订阅以防它可用,并创建新订阅以防它不可用。
=> 但我正在尝试做其他事情。我想先尝试订阅,如果解决了null
我会尝试订阅。
但后来我遇到了错误:
Uncaught (in promise) DOMException: Subscription failed - no active Service Worker
这令人困惑,我怀疑这是 Chrome 对 Service Worker 推送 API 的限制,或者可能是一个错误。有没有人有关于这种奇怪行为的任何信息?
node.js - 在 Mozilla Firefox 中使用服务人员推送通知
我是服务人员的新手,并试图学习它。我正在使用服务人员实现推送通知。我正在寻找用于在服务器端推送并在客户端接收通知的简单演示代码,作为开发我的 Web 应用程序的参考。建议将非常有帮助。我正在使用 node.js 来实现。
谢谢你。
html - 有什么方法可以将推送式网络通知发送到移动设备?
我发现本教程声称可以使用以下 HTML5 API 的组合来完成:
- 通知 API
- 服务工作者 API
- 推送 API
显然,这需要所有 3 个才能工作,但是当我在 caniuse 中搜索它们时,似乎没有任何一个移动浏览器支持所有三个 API。还有其他方法可以解决这个问题吗?
google-chrome - PushPad:站点刷新后删除订阅
我已经集成了 PushPad 并设法让它为静态推送工作。现在我想将它与一些 PHP 和 Javascript-Functions 结合起来使其动态化。这是我的代码:
乍一看,一切正常。如果我第一次访问该站点,所有警报都会弹出,直到“UID”警报。然后我被 Chrome 要求接受推送通知。我单击允许,然后弹出“已订阅”警报。
如果我现在刷新网站,一切都会重复到“订阅”警报(但我不再被要求允许 Chrome 推送通知)。我原以为应该显示“已订阅”警报,因为我以前订阅过,但没有。
如果有人可以提供帮助将不胜感激:-)
push-notification - 如何为推送通知添加分析
我正在开发渐进式网络应用程序,我想为推送通知实施分析。
如何为推送通知添加分析,以便我能够跟踪和记录有多少人点击了通知,以及有多少人在没有点击的情况下关闭了该通知。
google-chrome - PushPad:Chrome 不显示推送通知
这个问题来自以下问题(见评论部分):
我在使用 PushPad 时遇到问题。我创建了一个项目,实现了代码等等。我的问题是 Chrome不显示我发送的推送通知(桌面版和移动版)。使用 Firefox 一切正常。我在发送通知的那一秒内就会收到通知。
一段时间后,我在 Chrome 开发者工具(Ressources->Service Worker)中找到了“模拟推送事件”功能。单击此按钮时,Chrome 会显示我之前发送的推送通知。
那么推送通知似乎是由PushPad发送并被接收,但不会自动显示,就好像它们被Service Worker排队一样?但是我的网站用户不必进入开发者控制台并单击该按钮来接收通知(它应该就像在 Firefox 中一样)。
我已经尝试使用我的“项目 ID”和“项目编号”(来自我的 Google 项目)作为我的GCM 发件人 ID。两者都会导致上述问题。而且我还生成了一个新的 API-Key 并在我的 Pushpad-Project 中对其进行了更改,但没有任何改变。
当我使用Pushpad DEMO从官方 Pushpad-Homepage 发送演示通知时,我还注意到同样的问题。它也是排队的,只有在我按下开发者控制台中的按钮时才会显示。
我已经在 2 台不同的 PC 和一台 Nexus 4 上用 Chrome 尝试了我的所有测试,但总是同样的问题。
你有什么建议吗?也许(只是猜测)Pushpad 提供的 Service Worker 存在一些问题(因为它在他们的 HP 上是一样的)?