SetInterval/setTimer не запускается через 5 минут фонового времени – IonicAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 SetInterval/setTimer не запускается через 5 минут фонового времени – Ionic

Сообщение Anonymous »

Мне требуется таймер, который должен отправлять уведомление (я использую уведомление API onesignal) после достижения определенного значения, установленного пользователем.
Например, если пользователь устанавливает значение 7 минут, таймер должен отправить уведомление через 7 минут. Время, которое может установить пользователь, варьируется от 1 до 59 минут. Но даже при использовании плагина фонового режима (https://github.com/katzer/cordova-plugi ... round-mode) я не могу заставить функции setInterval/setTimeout работать через 5 минут.
Попробовал использовать рекурсивный метод 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 минут.
есть идеи, как это можно решить?
*** Обновление ** **
Пытался вызывать функцию каждые 4 минуты в фоновом режиме, чтобы она продолжала работать, но у меня не получилось:
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);

this.backgroundMode.on('activate').subscribe(() => {
setInterval(function () {
this.startTimerCounter();
}, 240000);
})
}
}


Подробнее здесь: https://stackoverflow.com/questions/628 ... time-ionic
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»