我有一个定时器的要求,那应该发出通知(我使用一个信号API通知)后,一个特定的用户设置值达到。
例如,如果用户将值设置为7分钟,计时器应在7分钟后发送通知。 用户可以设置的时间从1-59分钟不等。 但是,即使使用后台模式插件(https://github.com/katzer/cordova-plugin-background-mode),我也无法在5分钟后使setInterval/setTimeout函数工作。
尝试使用递归setTimeout方法:
function startTimerCounter() {
this.timerCounter = 0;
const objThis = this; //store this.
if (this.timerCounter >= this.setTime) {
this.backgroundMode.disable();
this.goalTimerReached = true;
} else {
this.backgroundMode.enable();
this.timer = setTimeout(function request() {
if (objThis.timerCounter === objThis.setTime) {
//onesignal notification
clearTimeout(objThis.timer);
} else {
++objThis.timerCounter;
objThis.timer = setTimeout(request, 1000);
}
}, 1000);
}
}
尝试使用setInterval方法:
function startTimerCounter() {
this.timerCounter = 0;
const objThis = this; //store this.
if (this.timerCounter >= this.setTime) {
this.backgroundMode.disable();
this.goalTimerReached = true;
} else {
this.backgroundMode.enable();
this.timerCounter = 0;
const objThis = this; //store this.
this.timer = setInterval(() => {
if (objThis.timerCounter === objThis.setTime) {
//onesignal notification
clearInterval(objThis.timer);
} else {
++objThis.timerCounter;
}
}, 1000);
}
}
顶部的后台激活通知和我可以看到后台模式是激活的。 但5分钟后计时器似乎不在运行。
知道怎么解决吗?
使用以下插件:cordova-plugin-background
document.addEventListener('deviceready', function () {
cordova.plugins.backgroundMode.enable();
cordova.plugins.backgroundMode.onactivate = function () {
setInterval(function () {
YourFunctionHere();
}, 300000);
}
}, false);
你的应用程序每隔5分钟就会更新一次
300000毫秒=5分钟