【问题标题】:System Notification not running in background系统通知未在后台运行
【发布时间】:2011-09-08 00:32:34
【问题描述】:

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

我用这个Phonegap System Notification Plugin 来创建推送通知。

这是插件自带的SystemNotificaton.java

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

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

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

【问题讨论】:

    标签: android cordova android-notifications


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-12
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 2013-02-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多