2017-06-08 5 views
2

私の角型アプリでfirebaseを使用してweb.Iでプッシュ通知を送信しています。アプリがフォアグラウンドにあるときに通知を受け取るためにmessaging.onMessage()を実装しました。アプリがbackground.Iにあるときにmessaging.setBackgroundMessageHandler()に通知を受け取るためには問題なく通知を受け取ります。通知は受信されます。messaging.onMessage()を使用して更新できますが、messaging.setBackgroundMessageHandler()を使用するとどうすればよいでしょうか。 受信した値をローカルに保存して、アプリで取得することもできます。JavascriptでFirebaseを使用しているときにsetBackgroundMessageHandler()から角型アプリケーションにデータを渡す方法は?

これは多くの場所で研究しましたが、解決策が見つかりませんでした。 これを手伝ってくれる人がいますか? ありがとう!

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

var config = { 
    apiKey: "MY_API_KEY", 
    authDomain: "MY_AUTH_DOMAIN", 
    databaseURL: "MY_DB_URL", 
    storageBucket: "URL", 
    messagingSenderId: "VALID_ID" 
}; 

firebase.initializeApp(config); 
const messaging = firebase.messaging(); 
messaging.setBackgroundMessageHandler(function(payload) { 
console.log('[firebase-messaging-sw.js] Received background message ', payload); 
return self.registration.showNotification("Title", {body: 'New notification.',}) 
}); 

答えて

0

日を検索した後、解決策が含まれているGithubページが見つかりました。

あなたができることは、あなたのオリジナルのタブのリストを返すウィンドウクライアントのリストを取得し、各ウィンドウクライアントにメッセージを投稿することです。 (このコードはsetBackgroundMessageHandler()にあります)。ページのリストを取得するには

は次のとおりです。次に

const promiseChain = clients.matchAll({ 
type: 'window', 
includeUncontrolled: true 
}) 
.then((windowClients) => { 
for (let i = 0; i < windowClients.length; i++) { 
    const windowClient = windowClients[i]; 
    windowClient.postMessage(data); 
} 
}) 
.then(() => { 
return registration.showNotification('my notification title'); 
}); 
return promiseChain; 

そうのようなリスナーを追加し、ページにメッセージを受信する:GitHubのに貢献した人たちたくさん

navigator.serviceWorker.addEventListener('message', function(event) { 
console.log('Received a message from service worker: ', event.data); 
}); 

感謝。複数の基準については

https://web-push-book.firebaseapp.com/chapter-05/04-common-notification-patterns/#message-page-from-a-push-event

に行くが、それはあなたがguys.Pingのために役に立つことか、実施に疑問を得れば、私のコメントを願っています。

関連する問題