我可以完全在Web服务辅助程序中运行Firebase Cloud Messaging吗?

问题描述 投票:0回答:1

TLDR:如果您没有在应用程序的前台运行FCM代码,是否有问题?将所有内容都放在网络工作者中是否会引起任何问题?


我有以下服务人员:

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

firebase.initializeApp({ ... });

const messaging = firebase.messaging();

self.addEventListener('activate', event => {
    console.log('Service worker activating...');

    // Add the public key generated from the console here.
    messaging.usePublicVapidKey();

    // Get Instance ID token. Initially this makes a network call, once retrieved
    // subsequent calls to getToken will return from cache.
    messaging.getToken().then((currentToken) => {
        console.log("currentToken", currentToken);

        if (currentToken) {
            // sendTokenToServer(currentToken);
        } else {
            console.error('No Instance ID token available. Request permission to generate one.');
        }
    }).catch((err) => {
        console.error('An error occurred while retrieving token. ', err);
    });

    messaging.setBackgroundMessageHandler(function(payload) {
        console.log('[firebase-messaging-sw.js] Received background message ', payload);
    });
});

如果此服务启动程序是这样启动的:

if ('serviceWorker' in navigator) {
    window.addEventListener('load', () => {
        navigator.serviceWorker.register('js/service-worker.js')
        .then(registration => {
            console.log('Service Worker is registered', registration);
        })
        .catch(err => {
            console.error('Registration failed:', err);
        });
    });
}

如果从未处理过onTokenRefresh回调,这是一个问题,因为这只能在前台处理。

FCM的这种设置看起来正确吗?

javascript firebase firebase-cloud-messaging service-worker web-worker
1个回答
0
投票

您是否想使用指定一个已命名为js/service-worker.js的现有服务人员?

Firebase消息传递默认服务工作者文件名是firebase-messaging-sw.js

如果要使用,请指定一个现有的服务程序,然后应该使用useServiceWorker指定一个现有的服务程序。

参见:

您的应用程序必须在firebase-messaging-sw.js中定义Firebase消息传递服务工作程序。另外,您可以使用useServiceWorker指定现有的服务工作者。

© www.soinside.com 2019 - 2024. All rights reserved.