1

푸시 알림을 내 앱에 구현하고 있습니다. 브라우저 (Chrome)에 알림을 표시하도록 서비스 담당자를 만들었습니다.Angular.js 컨트롤러와 서비스 작업자를 교환하려면

이제 Angular Controller 안에있는 함수를 호출해야합니다. 나는 봉사 사업 종사자에게서 이와 같은 사건을 일으키려고했다.

self.addEventListener('push', function(event) { 
event.waitUntil(
    fetch(self.CONTENT_URL, {headers: headers}) 
    .then(function(response) { 
    if (response.status !== 200) { 

    } 
    return response.json().then(function(data) { 

     /* some stuff*/ 

     document.dispatchEvent('myEvent'); 

     return notification; 
    }); 
    }) 
); 
}); 

이 이벤트에서 나는 알림을 처리하고 이벤트를 사용하려고합니다.

내가

document.addEventListener('myEvent', function(){ 
console.log("im here"); 
}); 

아래의 코드를 작성 컨트롤러에서

그러나 브라우저는이 작업을 완료하는 데()

어떤 아이디어을 console.log를 표시하지 않습니다? 고마워요! 여기

+0

'dispatchEvent()'에 대한 문서를 읽습니다. 이벤트 객체가 없습니다. 콘솔에서 해당 이벤트 코드를 실행하면 오류가 표시됩니다. – charlietfl

+0

예 각도 이벤트를 대신 사용하고 싶지만 서비스 담당자는 각도 파일이 아닙니다 –

답변

2

내가 서비스 노동자 어딘가에 당신의 각 응용 프로그램에


으로 (창/문서면 또는 무엇이든) 각 사이의 통신을 위해 한 일이다. 서비스 노동자

let angularClient; 
self.addEventListener('message', event => { 
    // if message is a "ping" string, 
    // we store the client sent the message into angularClient variable 
    if (event.data == "ping") { 
    angularClient = event.source; 
    } 
}); 

을의 시작에서


if ('serviceWorker' in navigator) { 

    // ensure service worker is ready 
    navigator.serviceWorker.ready.then(function (reg) { 

    // PING to service worker, later we will use this ping to identifies our client. 
    navigator.serviceWorker.controller.postMessage("ping"); 

    // listening for messages from service worker 
    navigator.serviceWorker.addEventListener('message', function (event) { 
     var messageFromSW = event.data; 
     console.log("message from SW: " + messageFromSW); 
     // you can also send a stringified JSON and then do a JSON.parse() here. 
    }); 
    } 
} 
당신은 push

,536받을 때
// In your push stuff 
self.addEventListener('push', function(event) { 
event.waitUntil(
    fetch(self.CONTENT_URL, {headers: headers}) 
    .then(function(response) { 
    if (response.status !== 200) { 

    } 
    return response.json().then(function(data) { 

     /* some stuff*/ 

     angularClient.postMessage('{"data": "you can send a stringified JSON here then parse it on the client"}'); 

     return notification; 
    }); 
    }) 
); 
}); 
+1

좋은 친구 야 !! – MarBVI

관련 문제