Rispetto a PhoneGap, Titanium Mobile ci permette di accedere a funzionalità specifiche del sistema su cui andiamo a sviluppare.
Ad esempio, su Android, possiamo realizzare semplici servizi in background che sopravvivono alla chiusura dell’app, ottimi per gestire le notifiche.
Per prima cosa, è necessario creare un file .js (Es. UpdateService.js), contenente il codice che il nostro servizio andrà ad eseguire a intervalli regolari, ad esempio la presenza di un nuovo elemento in un feed RSS. Se l’elemento è stato trovato, invieremo anche una notifica sulla barra e salveremo l’ultimo elemento per le successive verifiche:
//Verifico presenza di nuova notifica var loader = Titanium.Network.createHTTPClient(); loader.open("GET",[URL DEL FEED]); loader.onload = function() { var xml = Ti.XML.parseString(this.responseText); var items = xml.documentElement.getElementsByTagName("item"); Push = items.item(0).getElementsByTagName("title").item(0).text; var LastPush = Titanium.App.Properties.getString("LastPush"); if (LastPush != Push) { sendNotify(SiteName,"Nuovo Articolo:" + Push,SiteName + ", nuovo articolo!"); //Aggiorno LastPush Titanium.App.Properties.setString("LastPush",Push); } } loader.send(); function sendNotify(titolo,testo, ticker) { //Creo notifica var activity = Ti.Android.currentActivity(); var intent = Ti.Android.createIntent({ action : Ti.Android.ACTION_MAIN, url : 'app.js', flags : Ti.Android.FLAG_ACTIVITY_NEW_TASK | Ti.Android.FLAG_ACTIVITY_SINGLE_TOP }); intent.addCategory(Titanium.Android.CATEGORY_LAUNCHER); var pending = Ti.Android.createPendingIntent({ intent : intent, type : Ti.Android.PENDING_INTENT_FOR_ACTIVITY, flags : Ti.Android.FLAG_ACTIVITY_NO_HISTORY }); var notification = Ti.Android.createNotification({ contentIntent : pending, contentTitle : titolo, contentText : testo, tickerText : ticker, when : new Date().getTime(), icon : Ti.App.Android.R.drawable.appicon, flags : Titanium.Android.ACTION_DEFAULT | Titanium.Android.FLAG_AUTO_CANCEL | Titanium.Android.FLAG_SHOW_LIGHTS }); Ti.Android.NotificationManager.notify(1, notification); }
La funzione sendNotify può essere riutilizzata in molti contesti, permette di inviare in maniera agevole informazioni sulla barra delle notifiche: l’icona utilizzata sarà quella di default della applicazione, mentre l’action da effettuare quando viene eseguito il tap sulla notifica è definita con la proprietà url dell’intent (nel nostro caso viene caricata app.js, la finestra principale dell’app).
Una volta definite le istruzioni che dovrà eseguire, è necessario creare il servizio e avviarlo con questo frammento di codice:
var SECONDS = 600; var intent = Titanium.Android.createServiceIntent({ url: 'UpdateService.js' }); intent.putExtra('interval', SECONDS * 1000); Titanium.Android.startService(intent);
la proprietà interval dell’intent definisce l’intervallo in millisecondi (600000, 10 minuti) che dovrà intercorrere tra un’esecuzione e l’altra del codice presente in UpdateService.js.


Il codice in questione può essere richiamato all’avvio dell’app: quando poi l’applicazione viene messa in secondo piano, il servizio rimane in esecuzione e nel caso rilevi un cambiamento invia una notifica sulla barra.
Come ultima cosa, bisogna registrare nel manifest dell’applicazione il servizio, inserendo nel tiapp.xml del progetto queste righe:
Per chi fosse curioso, l’applicazione negli screenshots è QUESTA