我正在尝试在 Ruby On Rails 中注册一个服务 worker 来实现推送通知 GCM。但是没有任何反应。请看下面我的代码:
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/assets/service-worker.js')
.then(initialiseState);
} else {
window.Demo.debug.log('Service workers aren\'t supported in this browser.');
这部分工作正常。但是,当我调用 navigator.serviceWorker.ready.then(function(serviceWorkerRegistration)
时,没有任何反应。
我在搜索引擎上搜索,没有什么可以帮助我的。
谁能帮帮我?
最佳答案
查看 serviceworker-rails gem 。
正如 Jeff 提到的,service worker 所在的路径必须“在范围内”。这个 gem 允许您将根目录(或任何其他路径)的服务 worker 请求代理到 Rails Assets 管道中的资源。
例如,如果您的 serviceworker 脚本入口点位于 Rails 项目的 app/assets/javascripts/nested/directory/serviceworker.js
中,您可以将应用程序配置为从 /serviceworker.js
一些简单的配置设置:
# config/application.rb
config.serviceworker.routes.draw do
match "/serviceworker.js" => "nested/directory/serviceworker.js"
end
关于ruby-on-rails - 如何在 Ruby on Rails 中注册服务 worker ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32878876/