Skip to content

Instantly share code, notes, and snippets.

@GitHub30
Last active August 3, 2022 08:59
Show Gist options
  • Save GitHub30/ba8c5895f240b121a7e1b5fb05b59982 to your computer and use it in GitHub Desktop.
Save GitHub30/ba8c5895f240b121a7e1b5fb05b59982 to your computer and use it in GitHub Desktop.
const applicationServerKey = 'BDd3_hVL9fZi9Ybo2UUzA284WG5FZR30_95YeZJsiApwXKpNcF1rRPF3foIiBHXRdJI2Qhumhf6_LFTeZaNndIo'
async function send() {
let reg = await navigator.serviceWorker.getRegistration()
if (!reg) reg = await navigator.serviceWorker.register('./service-worker.js')
let subs = await reg.pushManager.getSubscription()
if (!subs) subs = await (await navigator.serviceWorker.ready).pushManager.subscribe({ userVisibleOnly: true, applicationServerKey })
const subscription = subs.toJSON()
await fetch('https://web-push-server.vercel.app/api/send', {
method: 'POST',
body: JSON.stringify({ subscription, payload: { title: 'ใ‚„ใ‚๐Ÿ˜ธ' } })
})
}
if (Notification.permission === 'default') {
Notification.requestPermission().then(permission => {
if (permission === 'granted') send()
else if (permission === 'default') {
addEventListener('click', () => Notification.requestPermission().then(permission => permission === 'granted' && send()), { once: true })
}
})
} else if (Notification.permission === 'granted') {
send()
}
@GitHub30
Copy link
Author

GitHub30 commented Aug 3, 2022

const permission = await Notification.requestPermission()
if (permission === 'default') console.log('show button')

const applicationServerKey = 'BDd3_hVL9fZi9Ybo2UUzA284WG5FZR30_95YeZJsiApwXKpNcF1rRPF3foIiBHXRdJI2Qhumhf6_LFTeZaNndIo'
let reg = await navigator.serviceWorker.getRegistration()
console.log('registration', reg)
if (!reg) reg = await navigator.serviceWorker.register('./service-worker.js')
let subs = await reg.pushManager.getSubscription()
console.log('subscription', subs)
if (!subs) subs =  await reg.pushManager.subscribe({ userVisibleOnly: true, applicationServerKey })
const subscription = subs.toJSON()

await fetch('https://web-push-server.vercel.app/api/send', {
  method: 'POST',
  body: JSON.stringify({ subscription, payload: { title: 'ใ‚„ใ‚๐Ÿ˜ธ' } })
})

registration undefined
VM673:9 subscription null
Uncaught DOMException: Failed to execute 'subscribe' on 'PushManager': Subscription failed - no active Service Worker
at :10:42

image

(await navigator.serviceWorker.getRegistration()).active is null if first time
image

@GitHub30
Copy link
Author

GitHub30 commented Aug 3, 2022

@GitHub30
Copy link
Author

GitHub30 commented Aug 3, 2022

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment