【发布时间】:2022-01-27 01:03:39
【问题描述】:
我正在开发一个 TODO 列表 PWA,它应该在每天上午 8:00 显示当天的任务,即使应用程序关闭(类似于闹钟)。
有没有办法通过 PWA 实现这一目标? (主要针对 Chrome/Android)
到目前为止,在我的 Service Worker 中,我已经(简化了)
self.addEventListener("message", (event) => {
// Workflow: The app sends a message that the timer should be set.
const prom = new Promise((resolveIt) =>
self.setTimeout(() => showAlarmAndResolve(resolveIt, event.data), '<timeout_in_ms>')
);
// tell the service worker to remain alive until promise is resolved
event.waitUntil(prom);
}
});
async function showAlarmAndResolve(resolveIt, text) {
const options = {
body: text,
tag: "todo-alert",
};
await self.registration.showNotification(
"Your tasks for today",
options
);
resolveIt(); // allow the service worker to terminate
}
没有event.waitUntil,当我关闭手机上的应用程序(或关闭浏览器选项卡)时不会显示通知,有它会显示。
然而,让 Service Worker 存活半天似乎是一个非常糟糕的主意——而且,我读到(这里:Best practice for keeping timer running in PWA)在 Android 上,Service Worker 可能会在大约 20 分钟后终止。
如何实现这样的闹钟功能?
一些(较旧的)问题并没有真正提供太多帮助/希望...
Background events in progressive web apps? (building an alarm clock app)
Is it possible to set the alarm by PWA? (building a timer/alarm clock app)
【问题讨论】:
标签: progressive-web-apps service-worker