2017-11-03 2 views
1

로그 캣에 표시 서비스 작업자에서 CONSOLE.LOG 출력을하면 WebView (here 참조), 자바 스크립트에서 어떤 console.log() 출력에서 ​​볼 수 있습니다 logcat.웹보기 : 그,에 <code>WebChromeClient</code>를 추가하여 <code>WebView</code>에서 실행되는 자바 스크립트 그것은 디버깅을 위해 정말 편리합니다

그러나 웹 페이지가 service worker의 사용을 할 때, 서비스 노동자로부터 어떤 console.log() 출력 가 로그 캣에 영향을하지 않는 것 같다.

이렇게하는 방법이 있습니까?

+0

무엇을 했습니까? 해결책을 찾았습니까? – ishaan

+0

@ishaan 나는 일하는 것을 무언가로 만들었지 만, "best practice"인지 확실하지는 않지만 ... 내 새로운 대답을 보시라. https://stackoverflow.com/a/48226303/4070848 – drmrbrewer

답변

1

이것이 최선의 방법인지 잘 모르겠습니다 만, 제 목적을 위해 다소 도움이되었습니다. 받았을 때 그냥 console.log 메시지 내용 (HTML) 제어 페이지에서 다음

const sendMessageToPage = function (message) { 
    return self.clients.matchAll().then(clients => { 
     return Promise.all(clients.map(client => { 
      return client.postMessage('(service worker message) ' + message); 
     })); 
    }); 
}; 

: 그것은 서비스 작업자에 다음과 같은 기능을 자사의 통제하에 각 페이지에 서비스 노동자에서 메시지를 보내는 포함

navigator.serviceWorker.onmessage = function (event) { 
    console.log(event.data); 
}; 

그러면 페이지의 console.log 메시지가 logcat에 표시됩니다.

내가 볼 수있는 주된 단점은 서비스 작업자가 기록한 메시지가 페이지에 직접 기록 된 메시지와 반드시 엄격한 시간 순서로 일치하지는 않지만 실제로는 문제가되지 않는다는 것입니다.

더 나은 방법을 찾고 싶습니다 ...

+1

깔끔한 해킹! :) 아마 이것이 지금은 유일한 길일 것 같습니다. – ishaan