Javascript 未调用服务辅助进程的推送事件

Javascript 未调用服务辅助进程的推送事件,javascript,push-notification,google-cloud-messaging,service-worker,progressive-web-apps,Javascript,Push Notification,Google Cloud Messaging,Service Worker,Progressive Web Apps,我正在尝试从GCM接收推送消息。我只是按照教程进行操作,并按如下方式注册了服务人员:- function urlB64ToUint8Array(base64String) { const padding = '='.repeat((4 - base64String.length % 4) % 4); const base64 = (base64String + padding) .replace(/\-/g, '+') .rep

我正在尝试从GCM接收推送消息。我只是按照教程进行操作,并按如下方式注册了服务人员:-

      function urlB64ToUint8Array(base64String) {
      const padding = '='.repeat((4 - base64String.length % 4) % 4);
      const base64 = (base64String + padding)
        .replace(/\-/g, '+')
        .replace(/_/g, '/');

      const rawData = window.atob(base64);
      const outputArray = new Uint8Array(rawData.length);

      for (let i = 0; i < rawData.length; ++i) {
        outputArray[i] = rawData.charCodeAt(i);
      }
      return outputArray;
    }
    var subscribeForPush = function() {
        navigator.serviceWorker.ready.then(function(serviceWorkerRegistration) {
            serviceWorkerRegistration.pushManager.subscribe({
                    userVisibleOnly: true,
                    applicationServerKey : urlB64ToUint8Array('<API-KEY>')
                })
                .then(function(subscription) {
                    console.log("Subscription for Push successful: ", subscription);
                })
                .catch(function(error) {
                    console.log("Subscription for Push failed", error);
                });
        });
    };
    if ('serviceWorker' in navigator) {
          window.addEventListener('load', function() {
            navigator.serviceWorker.register('/sw.js').then(function(registration) {
              // Registration was successful
              console.log('ServiceWorker registration successful with scope: ', registration.scope);
              subscribeForPush();
            }).catch(function(err) {
              // registration failed :(
              console.log('ServiceWorker registration failed: ', err);
            });
        });
    }
我能够使用终端向gcm发送消息并获取消息:-

   {"multicast_id":4983340130324592129,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1483043226210433%cc9b4facf9fd7ecd"}]}

但我不知道为什么在push listener中看不到日志?我被这个问题困扰了两天多。有人能帮我吗?我正在本地主机上执行此操作。

您没有返回pushManager订阅

navigator.serviceWorker.ready.then(function(serviceWorkerRegistration) {
    return serviceWorkerRegistration.pushManager.subscribe({
        'userVisibleOnly': true
}).then(function(subscription) {
        if (!subscription) {
            // Set appropriate app states.
            return;
        }
        console.log(subscription.endpoint);

    }).catch(function (err) {
        console.log('error in subcription .. '+ err);
    });

})
检查我的github项目


如果您需要任何详细信息,请告诉我

,我想通过声明

applicationServerKey: convertedVapidKey
在pushManager中订阅。我在互联网上找到的大多数教程都使用了bvakiti的方法,大多数遵循该教程的开发人员在接收推送通知时都遇到了问题。

如果有帮助,您可以检查并尝试给出的解决方法。有时候,推送需要时间才能到达,所以请检查您发送的推送内容。
applicationServerKey: convertedVapidKey