0

変数messagingSenderIdの値をサービス担当者に設定します。ハードコーディングされたものではありません。出来ますか?サービスワーカー(Firebase)で変数messagingSenderIdを設定します

私はこのように私のサービスワーカーを登録します。

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

そして、私のfirebaseメッセージング・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 
}); 

ようfirebaseを初期化問題は、私は見つけることができないです私のサービスワーカーファイルにデータを渡す方法。何か案が? mentionnedとして

おかげ

+0

ここで実際にどのようなユースケースが使用されていますか?実際に何をしようとしているのかを記述すると、助けが簡単になります。 –

+0

私はWebプッシュ通知を送るWordPressプラグインを作っているので、ユーザーにFirebaseプロジェクトの作成を依頼します。それから私は彼らにウェブサイトの貼り付けをコピーするために必要なサーバーキーとJavaScriptコードを尋ねます。 messagingSenderIdはこのコードの一部です。問題はmessagingSenderIdがサービスワーカーにも必要で、この変数をこのファイルに渡す方法がわかりません。 – Cuti

答えて

1

は、Passing state info into a service worker before 'install'は質問に答えました。ありがとう。ここで

は、このユースケースのための答えです:

あなたがそうのようなURLに変数を渡す必要があります:firebaseサービスワーカー(firebaseメッセージング-SWで、

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

そして。 js)のように、この変数を得ることができます:

これは動作します。しかし、URL.searchParamsは非常に新しいツールです。 Firebase自体より互換性がありません。

URL.searchParams:クローム51+、Firefoxの:52+、オペラ:不明

Firebase:クローム50+は、Firefox 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; 
} 
関連する問題