2

我正在关注这个非常清晰的教程

一切正常,除了当我到达使用 pushManager 订阅用户的阶段时,当我打电话时,pushManager.subscribe()我没有从状态为pending.

也许我的设置遗漏了一些明显的问题,如下所示:

    if ('serviceWorker' in navigator && 'PushManager' in window) {
      console.log('Service Worker and Push is supported');

      navigator.serviceWorker.register('service-worker.js')
      .then(function(swReg) {
        console.log('Service worker successfully registered.');

        navigator.serviceWorker.ready.then(function() {

          const subscribeOptions = {
            userVisibleOnly: true,
            applicationServerKey: ... // My application server key.
          };

          let promise = swReg.pushManager.subscribe(subscribeOptions)
          console.log(promise) // Promise {[[PromiseStatus]]: "pending", [[PromiseValue]]: undefined}
          promise
          .then(function(pushSubscription) {

            console.log('Received PushSubscription: ', pushSubscription); // Never gets called.
          })
          .catch(function(err) {
            console.error('Unable to subscribe.', err); // Never gets called.
          });
        })
      })
      .catch(function(err) {
        console.error('Unable to register service worker.', err);
      });
    }

是否应该在其他地方进行额外的配置?任何建议表示赞赏。

4

1 回答 1

4

刚遇到这个线程

建议是删除GCM Store位于以下位置的目录:

C:\Users\[username]\AppData\Local\Google\Chrome\User Data\Default\GCM Store

我首先必须退出 Chrome,删除该文件夹,然后重新启动以使其正常工作。

似乎是一个可以追溯到 2016 年 6 月(Chrome 51)的错误,即使现在是 2017 年 10 月(Chrome 61),它似乎仍然是一个问题。

希望这可以帮助某人。

于 2017-10-17T11:26:25.270 回答