我正在使用FCM来促进自定义服务工作者中的推送消息。我遵循了FCM入门指南,但是遇到了JavaScript客户端无法在chrome上接收已发送消息的问题,但是firefox可以按预期工作。
消息是从托管服务器发送的,消息的发送没有失败,并且消息ID与每个注册的客户端相关联。
下面是页面脚本,下面是相关的服务工作者代码。
页面html
<script>
// Initialize Firebase
var config = {
<CONFIG SETTINGS>
};
firebase.initializeApp(config);
var messaging = firebase.messaging();
</script>
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', function () {
navigator.serviceWorker.register('/sw.js').then(function (registration) {
console.log('ServiceWorker registration successful with scope: ', registration.scope);
messaging.useServiceWorker(registration);
resetUI();
}).catch(function (err) {
console.log('ServiceWorker registration failed: ', err);
});
});
}
const permissionDivId = 'permission_div';
messaging.onTokenRefresh(function () {
messaging.getToken()
.then(function (refreshedToken) {
console.log('Token refreshed.');
setTokenSentToServer(false);
sendTokenToServer(refreshedToken);
resetUI();
})
.catch(function (err) {
console.log('Unable to retrieve refreshed token ', …Run Code Online (Sandbox Code Playgroud)