迁移到Manifest v3后,内部开发的chrome扩展上的报警API无法正常工作

c9qzyr3d  于 2023-03-06  发布在  Go
关注(0)|答案(1)|浏览(137)

两年前,我们使用manifest v2开发了一个自定义Chrome扩展,它可以定期 (每45分钟或休眠后20分钟) 或按计划 (每天或每周) 触发弹出窗口。
Extension允许使用chrome.alarms API来安排代码“定期运行或在将来的指定时间运行”,从而实现可配置的时间间隔。
在升级扩展以使用manifest v3后,按照Manifest v3 migration checklist中的说明,我们运行了多次测试,但均失败。我们认为这是因为如果扩展闲置一天或更长时间,chrome.alarms API将不会触发或被触发。
迁移到manifest v3后出现问题。chrome.alarms API不会每天触发,也不会按设置的时间间隔触发,并且不会显示任何通知。
关于我们如何在manifest v3中实现这个目标,就像我们在manifest v2中所做的那样,有什么想法吗?我们应该关注什么?其他人看到这个问题了吗?

function triggerAlarm() {
    chrome.storage.local.get(['delayInMinutes'],function(res){
        console.log(res);
//code for creating alarm
chrome.alarms.create('createAlarm', {
            delayInMinutes:delayInMinutes
        });
    });
//code to listen the alarm
chrome.alarms.onAlarm.addListener(alarmListener);
    chrome.alarms.get('createAlarm', function (alarm) { });
}
function alarmListener(alarm) {
//business logic
}
brjng4g3

brjng4g31#

这不起作用,因为您是异步注册alarms.create事件侦听器的。如中所述,必须从根范围中的页的开头同步注册事件侦听器。
如果将事件侦听器移出triggerAlarm()并移入根范围,则事件处理程序将按预期触发。
查看完整答案:https://bugs.chromium.org/p/chromium/issues/detail?id=1295683

相关问题