Chrome 分机 - Chrome 警报 API 为每个创建的新警报重新安排所有警报

Chrome Extension - Chrome Alarm API rescheduling all alarm after for each new alarm created

我开发了名为 Reminder App 的 chrome 扩展,我在其中使用了允许用户设置闹钟的 Alarm API,App 有两个部分用于创建单个提醒(例如 10:20 AM) 并创建多个提醒(例如每 50 分钟),在打包的应用程序中(上传到网上商店后)我设置了两个提醒

1.10:20 上午(10:18:10 上午)

2.Every 10 分钟(10:19:10 上午)

在本地(未打包的应用程序)两个警报都恰好在 10:20 AM 触发,但相同的场景在打包的应用程序中,第一个警报在 10:20 AM 响起,但第二个警报在 10:21 响起] 上午(而不是 10:20 上午)。

如何让它们同步?

是否因为Alarm API Doc中所述?

为了减少用户机器的负载,Chrome 将警报限制为最多每 1 分钟一次,但可能会延迟任意多的时间。 [...]

为了帮助您调试您的应用或扩展程序,当您解压加载它时,警报的触发频率没有限制。

Alarm API Doc 中所述以及您引用的:

Chrome limits alarms to at most once every 1 minute but may delay them an arbitrary amount more.

另一种可能对您有用的方法是 'appending' 新提醒的文本与具有相同 scheduledTime 的闹钟名称。

这可以通过检查新闹钟是否与已设置的所有闹钟的任何预定时间相匹配来完成。如果是这样,您可以清除该特定警报并创建一个带有附加文本的新警报。然后,您可以在触发 onAlarm() 时处理附加的文本。

[注意:我还没有尝试过]

我按照@Zig Mandel 的建议使用 settimeout() 或 setinterval() 函数解决了它,我现在不再使用 chrome 警报 API,我只是使用 Storage [=12] 存储数据=] 并在存储的后台页面中使用 setinterval 函数每 1 秒轮询一次。