系统通知未在后台运行

时间:2011-08-18 16:33:52

标签: android cordova android-notifications

我使用 Phonegap 开发了一个Web应用程序,使用Google-Feed API读取跨域 Rss供稿,并在新供稿可用时向用户发送系统通知

我已使用此Phonegap System Notification Plugin来创建推送通知。

这是插件附带的SystemNotificaton.java

这是插件附带的SystemNotification.js文件,其中包含可在javascript文件中使用的所有方法。

这是我的notification.js javascript文件,我创建了两个函数来读取两个单独的Rss Feed网址,我使用setIntervals每隔1分钟调用一次该函数。我还调用了 navigator.systemNotification。同一个函数中的onBackground(); 方法,这样当我的应用程序未处于活动状态时,此功能会在后台继续运行,并在新的供稿出现时向用户显示通知。

问题是,一旦应用程序启动,我就会收到通知,然后当我关闭应用程序时,我会收到更多信息,一两天后通知就会停止。我知道,因为我使用谷歌饲料api它不是实时,但即使两天后它仍然无法正常工作。它似乎是onbackground方法它不工作。谁能指出我在做什么错误。

1 个答案:

答案 0 :(得分:2)

我对Phonegap了解不多,但我对Android开发知之甚少,听起来好像通知不是你的问题。 (顺便说一下,这些只是通知,而不是“推送”通知。这些都是另一个野兽。)

我怀疑你的应用程序只是停止了,你没有任何设置来启动备份。由于各种原因,Android操作系统将终止任何后台应用程序。如果作为服务实现,操作系统应该在某个时刻重新启动它,但这并不完全可靠。

基本上,您需要设置闹钟来保管您的服务,并确保它保持活力。如果在PhoneGap中可以实现这一点,我建议完全删除setInterval,只需使用闹钟唤醒你的应用并触发RSS轮询操作。这样做的好处是它可以在设备进入睡眠状态时工作。

进行一些快速搜索似乎表明PhoneGap无法访问AlarmManager。也许可以用一个插件来完成,但是PhoneGap并没有让我成为一般背景服务的好框架。在这种情况下,一个真正的原生应用程序会表现得更好。