1

我已经使用Phonegap开发了一个 Web 应用程序,它使用Google-Feed API读取跨域Rss 提要,并在有新提要可用时向用户发送系统通知。

我已经使用这个Phonegap 系统通知插件来创建推送通知。

这是插件附带的SystemNotificaton.java 。

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

这是我的notification.js javascript 文件,我创建了两个函数来读取两个单独的 Rss 提要 url,并且我使用 setIntervals 每 1 分钟调用一次函数。我还调用了navigator.systemNotification.onBackground(); 方法在同一个函数中,这样当我的应用程序不活动时,此函数会在后台继续运行,并在出现新提要时向用户显示通知。

问题是一旦应用程序启动我就会收到通知,然后当我关闭应用程序时,我会收到更多通知,一两天后通知就停止了。我知道,因为我使用的是 google-feed api,所以它不是实时的,但即使在两天后它仍然不起作用。似乎 onbackground 方法不起作用。谁能指出我在做什么错误。

4

1 回答 1

2

我对Phonegap 了解不多,但我对Android 开发了解不少,在我看来通知不是你的问题。(顺便说一句,这些只是通知,而不是“推送”通知。这些完全是另一头野兽。)

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

基本上,您需要设置警报来照看您的服务并确保它保持活力。如果这在 PhoneGap 中是可能的,我建议完全摆脱 setInterval,只使用警报来唤醒您的应用程序并触发 RSS 轮询操作。这样做的好处是当设备进入睡眠状态时它仍然可以工作。

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

于 2011-09-07T16:32:34.933 回答