Firebase: 서비스 작업자의 위치 변경
파이어베이스 메시징(웹)을 사용하려고 합니다.Firebase는 기본적으로 서비스 작업자를 포함하는 "firebase-messaging-sw.js" 파일을 검색합니다.
서비스 작업자 스크립트는 애플리케이션의 절대 경로에 있어야 합니다!예: http://localhost/firebase-messaging-sw.js
이 기본 위치를 변경하는 방법?!공식 문서를 검색한 결과 다음과 같은 방법이 발견되었습니다.useServiceWorker
이것은 서비스 근로자 등록을 수락하지만, 그것을 사용하려고 하면 메소드가 존재하지도 않는다는 오류가 발생합니다!
그렇다면 파이어베이스 메시징을 위해 서비스 직원의 위치를 변경하는 방법은 무엇입니까?
Michael이 말했듯이, 사용하는 방법은 다음과 같습니다.useServiceWorker(<registration>)
.
https://firebase.google.com/docs/reference/js/firebase.messaging.Messaging#useServiceWorker
Messaging 클래스는 호출 시 반환되는 클래스입니다.firebase.message()
.
샘플은 다음과 같습니다.
navigator.serviceWorker.register('./example/sw.js')
.then((registration) => {
messaging.useServiceWorker(registration);
// Request permission and get token.....
});
저는 이것을 Github의 데모 앱에서 문제없이 시도했습니다: https://github.com/firebase/quickstart-js/tree/master/messaging .
나는 그것이 오래된 질문이라는 것을 알고 있지만,useServiceWorker
지금은 더 이상 사용되지 않습니다. 서비스 직원을 직접 고객에게 전달할 수 있다는 점을 언급하는 것이 좋습니다.getToken
현재 문서
const registration = await navigator.serviceWorker.ready;
const messaging = firebase.messaging();
const token = await messaging.getToken({
serviceWorkerRegistration: registration,
vapidKey: "",
});
당신은 할 수 있어야 합니다.firebase.messaging().useServiceWorker(registration)
기존 서비스 근로자 등록을 전달합니다.이 작업은 가능한 한 빨리 수행해야 합니다(예를 들어 전화를 걸기 전에 수행해야 합니다. getToken()
또는onMessage()
.
제 생각엔 그렇습니다.
const vapidKey = 'foo123...';
const serviceWorkerRegistration = await navigator
.serviceWorker
.register('/build/firebase-messaging-service-worker.js');
await getToken(messaging, {
vapidKey,
serviceWorkerRegistration,
})...
그러나 이 코드를 복사하면 스코프가 잘못되었다고 생각합니다(예: 경로 때문에)./build/...
).
을 사용하여useServiceWorker(registration)
사용할 수 있습니다.notificationonclick
이벤트가 종료된 서비스 작업자를 통해 Firebase 푸시 메시지에 표시됩니다.
firebase.messaging().useServiceWorker(registration)
작동 중이고 문제를 해결했지만, 다음과 같은 경우에는 알 수 없다는 점을 명심하십시오.
서버에서 페이로드를 가져오는 안전한 방법입니다.
푸시 알림을 처리하는 가장 좋은 방법입니다.
언급URL : https://stackoverflow.com/questions/41659970/firebase-change-the-location-of-the-service-worker
'programing' 카테고리의 다른 글
전력 쿼리에서 COALESCE를 수행하려면 어떻게 해야 합니까? (0) | 2023.06.09 |
---|---|
응답 svg xmlns:xlink 식별자가 필요합니다. (0) | 2023.06.09 |
사례 및 IN을 사용한 업데이트 - Oracle (0) | 2023.06.09 |
dotnet dev-certs https --trust'를 실행하는 방법은 무엇입니까? (0) | 2023.06.09 |
Promise.()에 해당하는 작업은 무엇입니까? (0) | 2023.06.09 |