我有一个网站,该网站可以在多个域上运行,并且每个域都有自己的Firebase messagesSenderId。因此,Firebase初始化被延迟,直到我从JSON端点获取messages.SenderId为止。一切正常,直到接收到推送消息的工作程序终止然后重新启动为止:由于没有立即分配后台消息处理程序,因此它错过了第一条推送消息。
如何避免这种情况?是否有waitUntil
的类似物用于工作者初始化?或者如何推迟错过推送处理?
这是服务人员的简化代码:
const getServiceWorkerConfig = () =>
fetch('/service_worker_config').then((response) => response.json());
getServiceWorkerConfig().then(
({ messagingSenderId }) =>
firebase
.initializeApp({ messagingSenderId })
.setBackgroundMessageHandler(/* Here comes a handler */)
);