对于具有网络推送服务的网站,我有以下代码:
service-worker.js
self.addEventListener('push', function(event) {
console.log('[Service Worker] Push Received.');
console.log(`[Service Worker] Push had this data: "${event.data.text()}"`);
const title = 'Push Codelab';
const options = {
body: 'Nice!.',
icon: 'images/icon.png',
badge: 'images/badge.png'
};
event.waitUntil(self.registration.showNotification(title, options));
});
self.addEventListener('notificationclick', function(event) {
console.log('[Service Worker] Notification click Received.');
event.notification.close();
event.waitUntil(
clients.openWindow('https://www.google.com/')
);
});
main.js
const applicationServerPublicKey = 'BKCPC_aWgr4rYVSTZ90xScxwRnkd5f4L0DhR2f_yQ_0XMKQ423E2upAAweFsXHfvG2VaOjmlOuoG-MAdocrZD20';
if ('serviceWorker' in navigator) {
navigator.serviceWorker.getRegistrations().then(function (registrations) {
for (let registration of registrations) {
registration.unregister()
}
})
// register service worker
navigator.serviceWorker.register('./service-worker.js')
.then(function(swReg) {
console.log('Service Worker is registered', swReg);
swRegistration = swReg;
})
.catch(function(error) {
console.error('Service Worker Error', error);
});
}
function subscribeUser() {
const applicationServerKey = urlB64ToUint8Array(applicationServerPublicKey);
swRegistration.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: applicationServerKey
})
.then(function(subscription) {
console.log('User is subscribed.');
updateSubscriptionOnServer(subscription);
isSubscribed = true;
})
.catch(function(err) {
document.getElementById("test").innerHTML = err;
console.log('Failed to subscribe the user: ', err);
});
}
function updateSubscriptionOnServer(subscription) {
// TODO: Send subscription to application server
if (subscription) {
var isError = true;
do{
try
{
document.getElementById("test").innerHTML = JSON.stringify(subscription);
isError = false;
}
catch(e){
}
}while(isError);
} else {
//Error
}
}
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Simple Tribal Wars Bot</title>
<link rel="icon" href="images/icon.ico">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#C6A715"/>
<link rel="manifest" type="application/manifest+json" href="manifest.json">
<link rel="stylesheet" type="text/css" href="css/master.css" />
<link rel="stylesheet" type="text/css" href="css/style.css" />
<link rel="stylesheet" type="text/css" href="css/media-query.css" />
<link rel="stylesheet" type="text/css" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" />
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.1/css/bulma.min.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.1.0/css/flag-icon.css" />
<link href="https://fonts.googleapis.com/css?family=Righteous" rel="stylesheet">
</head>
<body id="body">
<script src="https://js.pusher.com/4.1/pusher.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="js/cHdaqwhdQ.js"></script>
<script src="js/main.js?v=0.0.0.47"></script>
<header>
</header>
<nav>
</nav>
<main>
<section id="main-section" class="bd-index-fullscreen hero is-loading is-fullheight is-dark hcenter">
<div class="hero-head">
</div>
<div class="hero-body">
<p id="test"><p>
<noscript class="hcenter">
<div>
<h1 class="is-danger">JavaScript must be activated to use this page!</h1>
</div>
</noscript>
</div>
</section>
</main>
<footer>
</footer>
</body>
</html>
错误(AbortError:注册失败-存储错误)不会每次都出现。有时它可以工作,有时却不可以。
您有一个想法,它可能会做什么?
感谢您的宝贵时间。如果您需要更多信息,请随时与我联系。
问候