Состояние запуска локальных уведомлений Ionic v1
$rootScope.$on('$cordovaLocalNotification:trigger', function(event, notification, state) {
//code
});
Я пробовал приведенный выше код, но это только для того, когда приложение уже открыто во время уведомления. Я хочу сосчитать все уведомления, которые запускаются, когда приложение не было открыто. Там в любом случае?
2 ответа
Я нашел решение, которое заключается в том, что я имею эти уведомления в своем локальном хранилище, на устройстве готово, я сравниваю текущее время с запланированным временем и вычисляю все уведомления, которые запущены, а которые нет.
- Когда приложение закрыто (например, не только в фоновом режиме с помощью Android), и
- уведомление активируется или отображается, затем
код приложения не может работать, чтобы поддерживать счетчик в актуальном состоянии, хранящемся в localStorage или Sqlite-DB (например).
Так что единственный способ увеличить счетчик, чтобы ваш запрос был выполнен:
Я хочу сосчитать все уведомления, которые были запущены, когда приложение не было открыто
Вы должны использовать:
$rootScope.$on('$cordovaLocalNotification:click', function(event, notification, state) {
// increase counter in your localStorage or Sqlite-DB here
});
потому что, как говорится в этом документе:
Событие click также вызывается после deviceready, если приложение не было запущено.
Событие click всегда вызывается при нажатии на уведомление, независимо от того, открыто ваше приложение или нет.
Если вы хотите считать только те уведомления, которые были нажаты
- Пока ваше приложение не было открыто ИЛИ
- Ваше приложение запущено, но пользователь находится за пределами вашего приложения (актуально для iOS, потому что код приложения не запускается, когда он помещен в фоновый режим или закрыт).
тогда вы можете сделать это следующим образом:
$ionicPlatform.ready(function() {
// ....
$rootScope.$on('$cordovaLocalNotification:click', function(event, notification, state) {
if(state === "background"){
console.log("increase counter");
}
});
// or if the first does not fire like with me, then use this instead:
cordova.plugins.notification.local.on('click', function (notification, state) {
if(state === "background"){
console.log("increase counter");
}
});
// ....
});
Надеюсь, это поможет.