PushManager订阅承诺永远不会履行或拒绝

时间:2016-03-03 14:54:24

标签: javascript service-worker web-push push-api chrome-gcm

我目前面临一些Chrome(Chromium)版本的问题,其中来自ServiceWorker <flow...> .... <!-- flows with http or other inbounds --> <objectstore:retrieve config-ref="ObjectStore__Configuration" key="cacheLoad" defaultValue-ref="#[false]" targetProperty="flowVars.cacheLoad" doc:name="retrieve cacheLoad"/> </flow> <flow> ... <!--load data from postgress--> <objectstore:store config-ref="ObjectStore__Configuration" key="cacheLoad" value-ref="#[true]" doc:name="store cacheLoad"/> </flow> 承诺保持待处理状态

代码本身非常简单:

PushManager.subscribe

我有一个有效且可访问的JSON 清单,提供 GCM发件人ID 。我也尝试了不同的实现,如this post中所述,但结果仍然相同。

订阅部分适用于每个 47 + 版本,旧版本会出现此问题。 (我正在使用Chromium连续版本来测试不同的主要版本。)

另请注意,在Ubuntu上使用Chromium 46(及以下版本)时,承诺在15分钟后使用return serviceWorkerRegistration.pushManager.subscribe({ userVisibleOnly: true }); 拒绝

6 个答案:

答案 0 :(得分:1)

问题在于userVisibleOnly:true作为参数。

这仅在chrome 47中引入。在此之前,您需要将其作为清单参数传递。 https://johnme-gcm.appspot.com/manifest.json是一个很好的例子。

答案 1 :(得分:1)

Chromium团队似乎是working on it。 如果我没有弄错的话,将在 Chrome 55

上发布修复程序

答案 2 :(得分:0)

此问题可在Windows 7上的chrome 55.0.2883.87上重现。订阅承诺既不解决也不拒绝。但这只发生在一台提到组合的机器上

答案 3 :(得分:0)

我在Chrome 67中遇到了相同的问题,并且浏览器重新启动已解决了该问题。

答案 4 :(得分:0)

更新并重新启动我的Google chrome已为我解决

答案 5 :(得分:0)

使用公司代理时,我遇到了同样的问题。因为没有Internet连接,所以无法建立订阅,并且Promise永远无法解决。