我发现chrome.alarms api与chrome扩展程序存在一些不一致之处,我无法理解。
背景
我每天早上9:30都会发出一个警报,但是它不会在上午9:30左右开火。当它发生时,它似乎就是在我被唤醒的时候。通过与弹出窗口交互,或者在扩展名上切换启用/禁用来扩展扩展。我没有看到任何一致性,否则我会认为它是某种类型的时区问题。
我已经确认警报确实已设置,并设置了正确的时间。在弹出窗口中,我做了一个简单的chrome.alarms.getAll
并抛弃了所有警报&他们的时代。
所以一切似乎都设置正确并准备好了,但是他们甚至在他们准备好的一整天之后甚至不会开火。
我的想法
我唯一能想到的是background.js
正在unloaded as it isn't "needed"。但理论上,alarms Api should load background.js在他们开火时会备份。
我还需要将"background": { "persistent": false }
明确添加到background.js
吗?或许我应该咬紧牙关说true
......但理想情况下,我认为不应该坚持不懈。
如何使我的闹钟保持一致并按照我的预期行事,于上午9:30开火?
文件
background.js
// Create alarm when receiving an onMessage with 'createAlarm'
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){
if(request.action == 'createAlarm') {
chrome.alarms.create('MyAlarm', {
when: moment().hour(9).minute(30).unix() * 1000
});
}
});
// onAlarm, create notification
chrome.alarms.onAlarm.addListener(function(alarm) {
chrome.notifications.create({
type: 'basic',
iconUrl: 'images/icon-128.png',
title: 'Hello World!',
message: 'I am a notification!'
});
});
的manifest.json
{
...
"background": {
"scripts": [
"bower_components/moment/min/moment.min.js",
"scripts.es5/background.js"
]
},
"permissions": [
...
"background",
"notifications",
"alarms"
]
}