Poiché ci fu un'altra soluzione possibile con iOS 7, sarò fornire una risposta supplementare per gli utenti di iOS 7 e oltre.
La nuova funzione Background Fetch consente di aggiornare regolarmente il contenuto di un'app in background. L'intervallo di tempo del recupero non può essere impostato dall'utente, ma è impostato piuttosto da iOS in base alle statistiche dell'utente (utilizzo dell'app, ecc.).
Questa nuova funzionalità è accessibile tramite PhoneGap/Cordova tramite plug-in: fortunatamente è già disponibile lo been developed a plugin. È possibile installarlo sul progetto di Cordova da
cordova plugin add https://github.com/christocracy/cordova-plugin-background-fetch.git
In combinazione con un plugin che fornisce l'accesso a iOS's local notifications, questo funziona a meraviglia. È stato anche sviluppato un tale plugin, ad esempio this one. installarlo sul progetto di Cordova da
cordova plugin add https://github.com/katzer/cordova-plugin-local-notifications.git
Questi plugin possono essere combinati nel codice javascript, per eseguire attività in background:
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);
}
Questo plugin recupero sta usando il valore UIApplicationBackgroundFetchIntervalMinimum
per l'intervallo di recupero , questo si traduce nella periodicità di recupero più veloce possibile.
prova anche questo plugin - https://github.com/katzer/cordova-plugin-background-mode –