如何让Chrome扩展程序chrome.alarms持续发射

时间:2017-02-06 16:00:13

标签: javascript google-chrome google-chrome-extension

我发现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"
    ]
}

相关:How to use chrome.alarms for Google Chrome extension

0 个答案:

没有答案