0

가변 메시징 처리자에서 가변 messagingSenderId 값을 설정하고 싶습니다. 가능한가?서비스 작업자 (Firebase)에서 messagingSenderId 변수 설정

내가 이렇게 내 서비스 노동자를 등록 :

navigator.serviceWorker.register('firebase-messaging-sw.js') 
.then(function(registration) { 
    messaging.useServiceWorker(registration);  
}); 

그리고 내 중포 기지 메시징-sw.js에서

, 나는 초기화이

importScripts('https://www.gstatic.com/firebasejs/3.9.0/firebase-app.js'); 
importScripts('https://www.gstatic.com/firebasejs/3.9.0/firebase-messaging.js'); 

firebase.initializeApp({ 
    'messagingSenderId': 'my-id' // <- I want this to be variable 
}); 

같은 중포 기지 문제는 내가 찾을 수있다 내 서비스 작업자 파일에 데이터를 전달하는 방법 어떤 생각?

감사

했나요으로
+0

실제 사용 사례는 무엇입니까? 실제로 무엇을하려고하는지 설명하면 도움이 될 것입니다. –

+0

웹 푸시 알림을 보내는 WordPress 플러그인을 만들고 있으므로 사용자에게 Firebase 프로젝트를 만들도록 요청합니다. 그런 다음 웹 서버에 붙여 넣기 복사에 필요한 자바 스크립트 코드와 서버 키를 묻습니다. messagingSenderId는이 코드의 일부입니다. 문제는 messagingSenderId가 서비스 작업자에게도 필요하며이 변수를이 파일에 전달하는 방법을 모른다는 것입니다. – Cuti

답변

1

Passing state info into a service worker before 'install'는 질문에 대답했다. 감사.

당신과 같이 URL에 변수를 전달해야 : 다음

var myId = 'write-your-messaging-sender-id-here'; 
navigator.serviceWorker.register('firebase-messaging-sw.js?messagingSenderId=' + myId) 
.then(function(registration) { 
    messaging.useServiceWorker(registration);  
}); 

그리고, 중포 기지 서비스 노동자 (중포 기지 메시징-SW에서 여기

이 사용 사례에 대한 답변입니다. js)를 사용하면 다음과 같이이 변수를 얻을 수 있습니다.

importScripts('https://www.gstatic.com/firebasejs/3.9.0/firebase-app.js'); 
importScripts('https://www.gstatic.com/firebasejs/3.9.0/firebase-messaging.js'); 

var myId = new URL(location).searchParams.get('messagingSenderId'); 

firebase.initializeApp({ 
    'messagingSenderId': myId 
}); 

이것은 작동합니다. 그러나 URL.searchParams는 매우 새로운 도구입니다. Firebase 자체보다 호환성이 낮습니다.

URL.searchParams : 크롬 51+, 파이어 폭스 : 52+, 오페라 : 알 수없는

Firebase :

크롬 50 +, 파이어 폭스 44+, 오페라 37+

그래서 대신 :

var myId = new URL(location).searchParams.get('messagingSenderId'); 

사용을 제안합니다.

var myId = get_sw_url_parameters('messagingSenderId'); 

function get_sw_url_parameters(param) { 
    var vars = {}; 
    self.location.href.replace(self.location.hash, '').replace( 
     /[?&]+([^=&]+)=?([^&]*)?/gi, // regexp 
     function(m, key, value) { // callback 
      vars[key] = value !== undefined ? value : ''; 
     } 
    ); 
    if(param) { 
     return vars[param] ? vars[param] : null;  
    } 
    return vars; 
}