ruby-on-rails - 如何在 Ruby on Rails 中注册服务 worker ?

标签 ruby-on-rails ruby push-notification google-cloud-messaging service-worker

我正在尝试在 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/

相关文章:

ruby-on-rails - 测试 rspec Hartl 教程第 10.3.3 章

javascript - rails : Accessing instance variable from not inline JS

ruby - 如何从 Sass 混合方程中删除测量单位?

ruby - 如何匹配字符串中给定的字符

ios - swift 和 iOS 7.1 的远程通知错误

iphone - 使用不同的标识符上传应用程序更新

ruby-on-rails - Elasticsearch 实现为微服务

ruby-on-rails - 具有 Bootstrap 按钮类的 rails link_to 和 button_to 行为不同

ruby - 如何卸载旧版本的 Ruby,这是明智之举吗?

swift - App Store 审核中的推送通知