0
我需要调用一些函数来执行每次当我的浏览器输入通知,这意味着我需要调用服务工作者(sw.js)中的函数如何调用函数或如何克服我的问题,如何调用服务工作人员的功能
或任何解决方案来调用服务工作者文件中的功能。
'use strict';
const applicationServerPublicKey = 'BAMIcX0o2XlcagZ_tZgGA7YEyAFR_D0FD9r6zFAUdkULm2atRRpsYAP2W2s0A_HXaivtX1LnFCg80TIJFXQEbIY';
document.getElementById('logo').src = logo+"/hornoktext.png";
const pushButton = document.querySelector('.js-push-btn');
subscribed_check = false;
let isSubscribed = false;
let swRegistration = null;
var check = false;
document.getElementById('logo').src = logo+"hornoktext.png";
function urlB64ToUint8Array(base64String) {
const padding = '='.repeat((4 - base64String.length % 4) % 4);
const base64 = (base64String + padding)
.replace(/\-/g, '+')
.replace(/_/g, '/');
const rawData = window.atob(base64);
const outputArray = new Uint8Array(rawData.length);
for (let i = 0; i < rawData.length; ++i) {
outputArray[i] = rawData.charCodeAt(i);
}
return outputArray;
}
//pushButton.addEventListener('click', function() {
\t // tostartgcm();
//});
//function tostartgcm() {
\t if ('serviceWorker' in navigator && 'PushManager' in window) {
\t console.log('Service Worker and Push is supported');
\t
\t navigator.serviceWorker.register('sw.js')
\t .then(function(swReg) {
\t \t console.log('Service Worker is registered', swReg);
\t \t swRegistration = swReg;
\t \t initialiseUI();
\t \t
\t })
\t .catch(function(error) {
\t \t console.error('Service Worker Error', error);
\t });
\t
\t // from here
\t navigator.serviceWorker.controller.postMessage({'hello': 'world'})
\t navigator.serviceWorker.addEventListener('message', function(event) {
\t ChromeSamples.setStatus(event.data);
\t
\t \t var messageChannel = new MessageChannel();
\t \t messageChannel.port1.onmessage = function(event) {
\t \t console.log(event.data);
\t \t };
\t \t navigator.serviceWorker.controller.postMessage(message, [messageChannel.port2]);
\t \t evt.ports[0].postMessage({'hello': 'world'});
});
navigator.serviceWorker.register('sw.js')
// Wait until the service worker is active.
.then(function() {
return navigator.serviceWorker.ready;
})
// ...and then show the interface for the commands once it's ready.
.catch(function(error) {
// Something went wrong during registration. The service-worker.js file
// might be unavailable or contain a syntax error.
ChromeSamples.setStatus(error);
});
\t //till here
\t
\t } else {
\t //console.warn('Push messaging is not supported');
\t //pushButton.textContent = 'Push Not Supported';
\t }
\t
//}
//Sw.js
'use strict';
console.log('swjs');
//var callextrafunc = require('scripts/main.js');
var callerid;
self.addEventListener('push', function(event) {
\t //madhufucntioncall();
\t console.log(event.data.json());
\t console.log(event.data.json().phonenumber);
\t console.log(event.data.json().code);
\t
\t if(event.data.json().code === '99') {
\t \t
\t \t var phonenumber = event.data.json().phonenumber;
\t \t var callId = event.data.json().callId;
\t \t
\t \t var data = {
\t \t \t phonenumber: phonenumber,
\t \t \t callId: callId
\t \t };
\t \t const title = 'Calling....';
\t \t const options = {
\t \t \t body: 'Incoming Call from: ' + phonenumber,
\t \t \t icon: 'images/HornOKLOGO.png',
\t \t \t badge: 'images/badge.png',
\t \t \t data: data,
\t \t \t actions: [
\t \t {action: 'call', title: 'Accept', phonenumber: phonenumber}
\t \t ]
\t \t };
\t \t
\t \t event.waitUntil(self.registration.showNotification(title, options));
\t } else {
\t \t var phonenumber = event.data.json().phonenumber;
\t \t
\t \t
\t \t var data = {
\t \t \t phonenumber: phonenumber,
\t \t \t
\t \t };
\t \t const title = 'Calling....';
\t \t const options = {
\t \t \t body: 'Incoming Call from: ' + phonenumber,
\t \t \t icon: 'images/HornOKLOGO.png',
\t \t \t badge: 'images/badge.png',
\t \t \t data: data,
\t \t \t actions: [
\t \t {action: 'call', title: 'Accept', phonenumber: phonenumber}
\t \t ]
\t \t };
\t \t
\t \t event.waitUntil(self.registration.showNotification(title, options));
\t \t
\t }
});
self.addEventListener('notificationclick', function(event) {
console.log('[Service Worker] Notification click Received.');
event.notification.close();
if (event.action === 'call') {
var consumerphonenumber = event.notification.data.phonenumber;
var callerid = event.notification.data.callId;
clients.openWindow('pages/admin/GoodsRegistration.html?'+consumerphonenumber+'&'+callerid);
}
else if (event.action === 'reply') {
console.log(event);
clients.openWindow('pages/admin/Booking.html')
} else {
/*event.waitUntil(
clients.openWindow('pages/admin/GoodsRegistration.html')
);*/
}
});
请更好地描述你的情况,分享一些细节和一些代码。什么阻止你调用这些函数? –
一旦服务工作者从我得到通知开始,那段时间我需要执行一些函数(ajax调用)。 –