Javascript chrome上的Firebase消息服务工作者

Javascript chrome上的Firebase消息服务工作者,javascript,google-chrome,firebase,firebase-cloud-messaging,Javascript,Google Chrome,Firebase,Firebase Cloud Messaging,我试图在EclipseIDE上实现FCMChrome客户端 使用Javascript,我试图注册默认的服务工作者:firebase-messaging-sw.js,但此js文件的路径无法由project解析 SDK正在主机级别搜索此文件:/firebase-messaging-sw.js,即,但不是在 因此,我得到一个错误: 使用GWT时未找到Firebase服务工作程序(404错误) 如何解决此问题?默认情况下,服务工作者应驻留在应用程序的根目录上。要在默认位置以外的其他位置注册service

我试图在EclipseIDE上实现FCMChrome客户端

使用Javascript,我试图注册默认的服务工作者:firebase-messaging-sw.js,但此js文件的路径无法由project解析

SDK正在主机级别搜索此文件:/firebase-messaging-sw.js,即,但不是在

因此,我得到一个错误: 使用GWT时未找到Firebase服务工作程序(404错误)


如何解决此问题?

默认情况下,服务工作者应驻留在应用程序的根目录上。要在默认位置以外的其他位置注册service worker st,可以使用以下代码

if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register('/sw-test/sw.js', {scope: '/sw-test/'})
  .then(function(reg) {
    // registration worked
    console.log('Registration succeeded. Scope is ' + reg.scope);
  }).catch(function(error) {
    // registration failed
    console.log('Registration failed with ' + error);
  });
}
,

  • 外部块执行功能检测测试,以确保在尝试注册服务人员之前支持服务人员
  • 接下来,我们使用ServiceWorkerContainer.register()函数为这个站点注册服务工作者,它只是一个JavaScript 文件驻留在我们的应用程序中(注意,这是相对于 原点,而不是引用它的JS文件。)
  • scope参数是可选的,可用于指定希望服务工作者控制的内容子集。在里面 在本例中,我们指定了“/sw test/”,这意味着所有内容 在应用程序的源代码下。如果您不使用它,它将默认为此 值,但我们在此处指定它是为了进行说明
  • .then()promise函数用于将成功案例链接到我们的promise结构中。当允诺成功解决时 它内部的代码执行
  • 最后,我们将一个.catch()函数链接到如果承诺被拒绝将运行的一端
  • 这将注册一个在工作上下文中运行的服务工作程序,并 因此没有DOM访问权限。然后在服务工作者中运行代码 在正常页面之外控制其加载