Системное уведомление не работает в фоновом режиме - PullRequest
1 голос
/ 18 августа 2011

Я разработал веб-приложение с использованием Phonegap , которое считывает междоменный RSS-каналы , используя Google-Feed API и отправляет системное уведомление пользователю, если доступен новый канал.

Я использовал этот Плагин системных уведомлений Phonegap для создания push-уведомлений.

Это SystemNotificaton.java , который поставляется с плагином.

Это файл SystemNotification.js , который поставляется вместе с плагином и содержит все методы, которые можно использовать в вашем файле JavaScript.

Это мой messages.js файл javascript, в котором я создал две функции для чтения двух отдельных URL-адресов фида Rss и использовал setIntervals для вызова функции каждые 1 минуту. Я также вызвал navigator.systemNotification.onBackground (); метод внутри той же функции, поэтому, когда мое приложение не активно, эта функция продолжает работать в фоновом режиме и отображает уведомление для пользователя, если появляется новый канал.

Проблема в том, что я получаю уведомления, как только приложение запускается, затем, когда я закрываю приложение, я получаю еще пару, через один или два дня уведомление перестает приходить. Я знаю, так как я использую API-интерфейс google-feed, это не в режиме реального времени, но даже после двух дней он не работает. Кажется, что метод onbackground это не работает. Кто-нибудь может указать, какую ошибку я делаю.

1 Ответ

2 голосов
/ 07 сентября 2011

Я мало что знаю о Phonegap, но я знаю немало о разработке Android, и мне кажется, что уведомления - не ваша проблема.(Между прочим, это просто уведомления, а не «Push-уведомления». Это вообще еще один зверь.)

Я подозреваю, что ваше приложение просто останавливается, и у вас ничего не настроено для его запуска.ОС Android уничтожит любое фоновое приложение по ряду причин.Если реализована как служба, ОС должна перезапустить ее в какой-то момент, но это не совсем надежно.

По сути, вам нужно установить будильник, чтобы присматривать за вашим обслуживанием и убедиться, что он остается в живых.Если это возможно в PhoneGap, я рекомендую полностью избавиться от setInterval и просто использовать будильник, чтобы разбудить ваше приложение и запустить действие опроса RSS.Преимущество этого состоит в том, что оно все еще будет работать, когда устройство перейдет в спящий режим.

Выполнение небольшого быстрого поиска, похоже, указывает на то, что PhoneGap не имеет доступа к AlarmManager.Возможно, это можно сделать с помощью плагина, но PhoneGap не кажется мне хорошей основой для фоновых сервисов в целом.По-настоящему родное приложение будет гораздо лучше вести себя в этом контексте.

...