2011-08-18 154 views
1

未運行,我已經開發使用的PhoneGap讀取使用Google-Feed API跨域RSS訂閱和發送系統通知用戶是否有新的飼料可用的Web應用程序。系統通知在後臺

我已經使用此Phonegap System Notification Plugin來創建推送通知。

這是插件附帶的SystemNotificaton.java

這是該插件附帶的SystemNotification.js文件,該文件包含可在JavaScript文件中使用的所有方法。

這是我notification.js JavaScript文件中我已經創建了兩個函數來讀取兩個獨立的RSS訂閱網址​​,我已經使用setIntervals調用函數每隔1個min.I也呼籲navigator.systemNotification.onBackground();方法在同一個函數中,這樣當我的應用程序不活動時,這個函數會在後臺運行,並在出現新的提要時向用戶顯示通知。

問題是,一旦應用程序啓動,我就會收到通知,然後當我關閉應用程序時,我會收到幾個通知,一兩天後通知就會停止。我知道,因爲我使用的是谷歌飼料api它不是實時的,但即使兩天後它仍然無法正常工作。它看起來像onbackground方法不工作。任何人都可以指出我在做什麼錯誤。

回答

2

我對Phonegap瞭解不多,但我對Android開發知之甚少,聽起來像是通知不是您的問題。 (順便說一下,這些只是通知,而不是「推送」通知,這些都是另一種野獸)。

我懷疑你的應用程序只是簡單地停下來,而你沒有任何設置來啓動備份。 Android操作系統會因各種原因殺死任何後臺應用程序。如果作爲一項服務實施,操作系統應該在某個時候重新啓動它,但這並不完全可靠。

基本上,你需要設置一個鬧鐘來照顧你的服務,並確保它保持活着。如果在PhoneGap中這是可能的,我建議完全擺脫setInterval,並使用鬧鐘來喚醒您的應用程序並觸發RSS輪詢操作。這樣做的好處是它在設備進入睡眠狀態時仍然可以工作。

做了一些快速搜索似乎表明PhoneGap無法訪問AlarmManager。也許可以用插件來完成,但PhoneGap並不會將我作爲一般的後臺服務的良好框架。一個真正的本地應用程序在這種情況下會表現得更好。