Chrome 和 Firebase 推送通知服务人员未准备好

Posted

技术标签:

【中文标题】Chrome 和 Firebase 推送通知服务人员未准备好【英文标题】:Chrome & Firebase Push Notifications service worker not ready 【发布时间】:2016-11-07 17:54:35 【问题描述】:

在关注此代码实验室时: https://developers.google.com/web/fundamentals/getting-started/codelabs/push-notifications/

我下载了push-notifications.git 项目并将最终的/completed/08-unsubscribe 示例上传到我的HTTPS Web 服务器。

当我第一次访问这个页面时,控制台日志显示:

Service Worker is supported
sw.js:24 Started
sw.js:28 Installed
sw.js:32 Activated

第二次访问页面显示:

Service Worker is supported

我试图调试的问题是我没有从这个函数得到Service Worker is ready 输出:

if ('serviceWorker' in navigator) 
  console.log('Service Worker is supported');
  navigator.serviceWorker.register('/sw.js').then(function() 
    return navigator.serviceWorker.ready;
  ).then(function(serviceWorkerRegistration) 
    reg = serviceWorkerRegistration;
    subscribeButton.disabled = false;
    console.log('Service Worker is ready :^)', reg);
  ).catch(function(error) 
    console.log('Service Worker Error :^(', error);
  );

阻止我的订阅按钮启用并触发console.log('Service Worker is ready :^)', reg);console.log('Service Worker Error :^(', error); 消息的问题在哪里?

【问题讨论】:

【参考方案1】:

您的代码是正确的。 如果你给控制台,它应该打印。我验证了它,它有效。 只需提供控制台即可检查。

if ('serviceWorker' in navigator) 
  console.log('Service Worker is supported');
  navigator.serviceWorker.register('/sw.js').then(function() 
  return navigator.serviceWorker.ready;
).then(function(serviceWorkerRegistration) 

   console.log('Service Worker is ready :^)', reg);
).catch(function(error) 
   console.log('Service Worker Error :^(', error);
);

【讨论】:

嗯,这就是我看到的结果——订阅按钮永远不会启用,我也没有收到准备就绪或错误事件:i.imgur.com/X1dhsQM.png 在按钮启用前提供控制台日志。你能告诉你是如何初始化订阅按钮的吗

以上是关于Chrome 和 Firebase 推送通知服务人员未准备好的主要内容,如果未能解决你的问题,请参考以下文章

Chrome Firebase 云消息 - 未注册

chrome (macOS) 不显示桌面推送通知

Firebase 推送通知如何发送到设备

通过 Firebase 从 Laravel 服务器向 Android 应用发送推送通知

使用firebase问题推送通知(ios,swift 4)[关闭]

部署 Firebase 推送通知功能时出错