我的意思是在完全背景下工作,例如即使屏幕關閉,應用程序仍在運行,並可以通過聲音發送通知。Phonegap應用程序可以在後臺工作嗎?
我的應用程序用於觀看價格變化。價格變化時會有聲音提醒。
那麼,答案應該是或不是?謝謝。
我的意思是在完全背景下工作,例如即使屏幕關閉,應用程序仍在運行,並可以通過聲音發送通知。Phonegap應用程序可以在後臺工作嗎?
我的應用程序用於觀看價格變化。價格變化時會有聲音提醒。
那麼,答案應該是或不是?謝謝。
由於與iOS 7又來了一個可能的解決方案,我會提供的iOS 7,並進一步的用戶額外的答案。
新的Background Fetch功能可以定期更新後臺應用程序的內容。提取的時間間隔不能由用戶設置,而是由iOS根據用戶的統計信息(應用使用情況等)進行設置。
這個新功能可以通過插件訪問PhoneGap/Cordova - 幸運的是,已經有been developed a plugin提供這種訪問。 你可以將它通過
cordova plugin add https://github.com/christocracy/cordova-plugin-background-fetch.git
與插件提供給iOS's local notifications訪問安裝到您的科爾多瓦項目相結合,這可以創造奇蹟。這種插件也已開發出來,例如this one。 通過
cordova plugin add https://github.com/katzer/cordova-plugin-local-notifications.git
它安裝到你的科爾多瓦項目這些插件現在可以在你的JavaScript代碼相結合,以執行後臺活動:
function onDeviceReady() {
var Fetcher = window.plugins.backgroundFetch;
// Your background-fetch handler.
var fetchCallback = function() {
console.log('BackgroundFetch initiated');
// perform your ajax request to server here
$.get({
url: '/heartbeat.json',
callback: function(response) {
// process your response and whatnot.
window.plugin.notification.local.add({ message: 'Just fetched!' }); //local notification
Fetcher.finish(); // <-- N.B. You MUST called #finish so that native-side can signal completion of the background-thread to the os.
}
});
}
Fetcher.configure(fetchCallback);
}
這取插件使用的抓取間隔UIApplicationBackgroundFetchIntervalMinimum
值這會導致儘可能快的提取週期。
如果您爲ios 7 +構建cordova,並且準備逐出您的通用代碼到xcode中,則可以將'所需的背景模式'添加到ios版本的.plist文件中,並且它不會被覆蓋由一個新的版本。
例如我選擇了'從網絡上下載應用內容'選項
然後您需要做的就是確保您的應用每隔幾分鐘就會向外界推送一次(我正在使用firebase,因此我獲得了虛擬節點的值) 。
我還沒有提交到應用程序商店,但是如果請求不是太頻繁(我瞭解應用程序在被暫停前有大約10分鐘的背景),但無法看到應該如何失敗,以及您的資源背景/休息時的應用需求並不繁重。
這會將此問題的解決方案縮減爲代碼中的幾行內容。
試試這個插件 - https://github.com/katzer/cordova-plugin-background-mode –