[#wp7dev] Aggiornamento della Live Tile principale via codice

wp7MangoLogoTra le interessanti novità di Windows Phone 7 Mango per noi sviluppatori, ci sono sostanziali miglioramenti al supporto per le Live Tile. Della possibilità di creare tile multiple ne ho già parlato (approfondirò comunque l’argomento su questo blog). Una delle cose che mi è stata chiesta (e che ho implementato in una applicazione su cui stò lavorando) è:

posso aggiornare la tile principale dell’applicazione?

Come sappiamo infatti, prima di Mango, l’unico modo per aggiornare la Tile principale era via Push Notification. Su mango invece, possiamo sfruttare lo stesso meccanismo delle tile secondarie per aggiornare la tile principale.

Il “flusso” da seguire è semplice:

  1. verifichiamo la presenza della tile principale
  2. ne recuperiamo eventualmente l’istanza
  3. definiamo le nuove caratteristiche con l’oggetto StandardTileData
  4. le applichiamo alla Tile

 

Come primo passo quindi, cerchiamo la Tile principale della nostra applicazione usando

var tileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString() == "/");

Dopo aver verificato l’effettiva esistenza della tile, creiamo il nuovo set di informazioni (ad esempio aggiornando il contatore) e procediamo all’aggiornamento:

if (tileToFind != null) {

    StandardTileData NewTileData = new StandardTileData();

    NewTileData.Count = 10;

    tileToFind.Update(NewTileData);

}

 

L’esecuzione dell’update aggiornerà fisicamente la tile principale con i nuovi dati (in questo caso aggiornando il contatore).

Questo snippet può essere particolarmente utile quando, ad esempio, vogliamo aggiornare le informazioni sulla Tile della nostra applicazione. Ad esempio, se la nostra app si interfaccia con qualche servizio (ad esempio Twitter), possiamo aggiornare il numero di messaggi non letti quando chiudiamo l’app. O ancora, se abbiamo un servizio in background che scarica informazioni, possiamo aggiornare la tile quando il servizio completa il download.