2017-06-12 63 views
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') 
 
);*/ 
 
    } 
 
});

+0

请更好地描述你的情况,分享一些细节和一些代码。什么阻止你调用这些函数? –

+0

一旦服务工作者从我得到通知开始,那段时间我需要执行一些函数(ajax调用)。 –

回答

相关问题