Skip to content

Instantly share code, notes, and snippets.

var vapidPublicKey = new Uint8Array(#{Base64.urlsafe_decode64($vapid_public).bytes});
function checkNotifs(obj){
if (!("Notification" in window)) { //1
console.error("This browser does not support desktop notification");
}
// Let's check whether notification permissions have already been granted
else if (Notification.permission === "granted") { //2
console.log("Permission to receive notifications has been granted");
getKeys();
$ gem install webpush
@lachlanagnew
lachlanagnew / gist:cb2ba9513b63f195bb59ce8cb6c8700c
Last active December 20, 2017 05:09
install serviceworker gem
$ gem install serviceworker-rails
@lachlanagnew
lachlanagnew / gist:8008a0cc5ccc3011719019f958b95e83
Last active December 20, 2017 05:09
get webpush vapid keys
#In rails console
require 'webpush'
# One-time, on the server
vapid_key = Webpush.generate_key
# Save these in our application server settings
vapid_key.public_key
# => "BC1mp...HQ="
# app/assets/javascript
{
"name":"My App",
"short_name":"my-app",
"start_url":"/",
"icons":[
{
"src":"/images/my-push-logo-192x192.png",
"sizes":"192x192",
<!-- index.html -->
<link rel="manifest" href="/manifest.json" />
@lachlanagnew
lachlanagnew / gist:d5311b1ca46d714678d1abbdb304e992
Last active December 20, 2017 05:07
install serviceworker files
$ rails g serviceworker:install
@lachlanagnew
lachlanagnew / gist:ba462f4f9122033d085e24cf15aa081d
Last active December 20, 2017 05:07
Add files that shall be accessed by the serviceworker
#config/initializers/serviceworker.rb
WebPushDemo::Application.configure do
config.serviceworker.routes.draw do
# map to assets implicitly
match "/serviceworker.js"
match "/manifest.json"
match "/logo.png"
end
end
@lachlanagnew
lachlanagnew / gist:9386c0151d3ce486cdf008d97f6451a9
Last active December 20, 2017 05:06
Create service worker
// app/assets/javascript/serviceworker.js
self.addEventListener("push", function(event) {
var title = (event.data && event.data.text().split("-")[0]) || "Message recieved";
var body; body = event.data.text().split("-")[1];
var tag = "push-simple-demo-notification-tag";
var icon = 'logo.png';
event.waitUntil(
self.registration.showNotification(title, {
@lachlanagnew
lachlanagnew / gist:30759d6d1936c80875ab9a8a334816fa
Last active June 6, 2019 14:20
Subscribe and register service worker
//app/views/content/index.html.erb
javascript:
var vapidPublicKey = new Uint8Array(#{Base64.urlsafe_decode64($vapid_public).bytes});
function checkNotifs(obj){
if (!("Notification" in window)) { //1
console.error("This browser does not support desktop notification");
}
// Let's check whether notification permissions have already been granted