e Windows con XAML e C# Sviluppare Universal app per

- Matteo Pagani -
Sviluppare Universal app per
Windows Phone
e Windows con XAML e C#
Windows Phone
Magazine Italia
Gli aspetti principali legati allo sviluppo di Windows Store app >>
Come supportare al meglio le due piattaforme >>
Interagire con l’hardware >>
Distribuire e vendere le proprie applicazioni >>
Libro_Universal.indb 2
31/07/14 15:13
Sviluppare Universal app per
Windows Phone
e Windows con XAML e C#
Matteo Pagani
Libro_Universal.indb 3
31/07/14 15:13
Sviluppare Universal app per Windows Phone e Windows con XAML e C#
Autore: Matteo Pagani
Collana:
Editor: Marco Aleotti
Progetto grafico: Roberta Venturieri
Immagine di copertina: per gentile concessione di Nokia
ISBN: 978-88-6895-041-5
Copyright © 2014 LSWR Srl
Via Spadolini, 7 - 20141 Milano (MI) - www.lswr.it
Finito di stampare nel mese di agosto 2014 presso “Rotolito Lombarda” s.p.a., Pioltello (MI)
Nessuna parte del presente libro può essere riprodotta, memorizzata in un sistema che ne permetta l’elaborazione, né trasmessa
in qualsivoglia forma e con qualsivoglia mezzo elettronico o meccanico, né può essere fotocopiata, riprodotta o registrata altrimenti, senza previo consenso scritto dell’editore, tranne nel caso di brevi citazioni contenute in articoli di critica o recensioni.
La presente pubblicazione contiene le opinioni dell’autore e ha lo scopo di fornire informazioni precise e accurate. L’elaborazione
dei testi, anche se curata con scrupolosa attenzione, non può comportare specifiche responsabilità in capo all’autore e/o all’editore per eventuali errori o inesattezze.
Nomi e marchi citati nel testo sono generalmente depositati o registrati dalle rispettive aziende. L’autore detiene i diritti per tutte le fotografie,
i testi e le illustrazioni che compongono questo libro, salvo quando diversamente indicato.
PrimePagine_Universal.indd 4
31/07/14 15:37
Sommario
PREFAZIONE............................................................................................................... 9
INTRODUZIONE........................................................................................................11
1.
INTRODUZIONE ALLE UNIVERSAL WINDOWS APP...........................19
Windows 8.................................................................................................................................. 20
Windows Phone..........................................................................................................................21
Le Windows Store app..............................................................................................................22
Il Microsoft Design Style..........................................................................................................24
2. IL PRIMO PROGETTO E I CONCETTI BASE DI XAML E C#................47
La licenza come sviluppatori...................................................................................................47
Creiamo il primo progetto....................................................................................................... 48
La struttura di una Universal Windows app....................................................................... 48
L’architettura a pagine: i file XAML e il code behind........................................................ 49
La classe App: il punto di partenza delle applicazioni..................................................... 50
La cartella Assets...................................................................................................................... 50
Il file di manifest..........................................................................................................................51
XAML............................................................................................................................................56
I converter....................................................................................................................................79
Strategie di condivisione di codice in una Universal Windows app............................. 84
La programmazione asincrona................................................................................................ 91
3. I CONTROLLI DI WINDOWS E WINDOWS PHONE.............................97
Controlli per il layout................................................................................................................ 98
Visualizzare informazioni.......................................................................................................104
Ricevere informazioni..............................................................................................................108
Mostrare messaggi di avviso all’utente............................................................................... 113
Mostrare lo stato di un’operazione in corso......................................................................120
Mostrare collezioni di dati..................................................................................................... 122
Mostrare liste semplici........................................................................................................... 125
Mostrare collezioni raggruppate per un campo............................................................... 126
Mostrare collezioni già raggruppate...................................................................................130
L’application bar: i controlli CommandBar e AppBar......................................................148
La StatusBar (solo Windows Phone 8.1)............................................................................ 152
Il controllo Flyout...................................................................................................................... 155
5
Libro_Universal.indb 5
31/07/14 15:13
Sviluppare Universal app per Windows Phone e Windows con XAML e C#
Il controllo ListPickerFlyout (solo Windows Phone 8.1)................................................. 158
Il controllo WebView...............................................................................................................160
4. I CONCETTI FONDAMENTALI: RISOLUZIONI, NAVIGAZIONE
E CICLO DI VITA............................................................................................ 165
Gestire differenti risoluzioni e schermi............................................................................... 165
5. ACCESSO AI DATI: FILE, DATABASE E IMPOSTAZIONI................... 203
Le diverse tipologie di storage............................................................................................. 203
Lavorare con le cartelle.......................................................................................................... 207
Lavorare con i file....................................................................................................................209
Accedere ai file tramite url..................................................................................................... 213
Testare il nostro codice: come verificare il contenuto dello storage...........................214
Gestire le impostazioni dell’applicazione........................................................................... 217
Accedere ad altre tipologie di storage............................................................................... 223
Importare un file dal dispositivo.......................................................................................... 224
Importare una cartella dal dispositivo in Windows 8.1.................................................. 234
Importare una cartella dal dispositivo in Windows Phone 8.1..................................... 235
Salvare un file sul dispositivo in Windows 8.1.................................................................. 236
Salvare un file sul dispositivo in Windows Phone 8.1..................................................... 238
Accedere alle librerie dell’utente......................................................................................... 239
Accedere alle memorie esterne in un’applicazione......................................................... 241
Simulare la presenza di una scheda SD in Windows Phone 8.1.................................. 243
Impedire l’installazione di un’applicazione Windows Phone
sulla memoria SD....................................................................................................................244
Memorizzare i dati dell’applicazione................................................................................. 245
Usare un database: SQlite.....................................................................................................250
Memorizzare dati sensibili....................................................................................................264
6. ACCESSO AI DATI: INTERAGIRE CON LA RETE...................................267
Gestire la privacy policy in Windows 8.1........................................................................... 267
Determinare la presenza di connettività........................................................................... 268
Effettuare operazioni di rete: la classe HttpClient.......................................................... 270
Eseguire operazioni di download e upload in background........................................... 279
Interagire con i servizi............................................................................................................284
7. INTERAGIRE CON IL MONDO REALE..................................................... 315
I servizi di geolocalizzazione................................................................................................. 315
I sensori di movimento.......................................................................................................... 343
Collegarsi ad altri dispositivi con le Proximity API.........................................................346
8. INTEGRARSI CON IL SISTEMA: CONTRATTI ED ESTENSIONI....... 363
I contratti................................................................................................................................... 363
Gestire l’aspetto visuale della pagina di condivisione....................................................374
Il contratto File Open Picker.................................................................................................380
6
Libro_Universal.indb 6
31/07/14 15:13
Sommario
Il contratto File Save Picker................................................................................................... 383
Gestire la ricerca all’interno delle applicazioni................................................................ 385
Implementare la ricerca nelle Windows Store app per Windows 8.1....................... 386
Implementare la ricerca nelle Windows Phone Store app
per Windows Phone 8.1......................................................................................................... 389
Le estensioni............................................................................................................................. 392
Interagire con le applicazioni native di Windows Phone 8.1 tramite
i protocolli..................................................................................................................................401
Interagire con la rubrica: i contatti.......................................................................................401
9. SVILUPPARE APPLICAZIONI MULTIMEDIALI...................................... 451
Integrare audio e video...........................................................................................................451
Gestire la comunicazione tra applicazione e background task..................................466
Acquisire foto e video............................................................................................................ 473
Interagire con la libreria multimediale................................................................................481
10. TILE E NOTIFICHE.........................................................................................491
Le tipologie di notifiche.......................................................................................................... 492
Le notifiche toast..................................................................................................................... 493
Personalizzare l’effetto sonoro di una notifica toast...................................................... 495
Gestire l’attivazione di una notifica toast.......................................................................... 497
Inviare notifiche toast con la libreria NotificationsExtensions....................................498
Programmare l’invio di una notifica toast.........................................................................499
Le notifiche toast e l’Action Center di Windows Phone 8.1..........................................500
Le notifiche tile.........................................................................................................................505
Le tile secondarie...................................................................................................................... 516
Le notifiche badge.................................................................................................................... 519
Mostrare informazioni sulla lock screen........................................................................... 522
Le notifiche push..................................................................................................................... 524
Inviare una notifica push....................................................................................................... 526
Gestione avanzata delle notifiche....................................................................................... 534
Ricevere una notifica: l’applicazione.................................................................................. 537
Intercettare una notifica quando l’applicazione è aperta.............................................. 539
Testare le notifiche push su Windows Phone 8.1............................................................. 541
11. MULTITASKING: EFFETTUARE OPERAZIONI
IN BACKGROUND........................................................................................ 543
I trigger.......................................................................................................................................544
I vincoli dei background task................................................................................................ 547
Aggiungere un background task.......................................................................................... 549
Registrare il background task nell’applicazione................................................................ 551
12. PUBBLICARE UN’APPLICAZIONE SUGLI STORE..................................567
Localizzazione: supportare diverse lingue........................................................................ 567
La modalità trial........................................................................................................................573
7
Libro_Universal.indb 7
31/07/14 15:13
Sviluppare Universal app per Windows Phone e Windows con XAML e C#
In-app purchase: acquisti all’interno dell’applicazione.................................................. 578
Pubblicare l’applicazione sullo Store.................................................................................. 586
Distribuire un’applicazione senza passare dallo Store..................................................602
INDICE ANALITICO.............................................................................................605
8
Libro_Universal.indb 8
31/07/14 15:13
Prefazione
Ricordo come fosse ieri il 21 maggio 2010 quando, in occasione del Whymca Spring
2010, la prima mobile developer conference italiana, ho incontrato Matteo e gli ho
parlato per la prima volta di Windows Phone 7, che sarebbe uscito ufficialmente
nell’ottobre di quell’anno. Da quel momento pian piano siamo diventati grandi amici,
partendo da quella passione per Windows Phone che via via ci ha accomunato, per
arrivare a condividere tantissime esperienze.
Matteo è diventato uno dei più grandi esperti mondiali di Windows Phone, conosciuto
e rispettato da tutti in Italia e nel mondo per la sua competenza tecnica e il suo grandissimo spessore umano, condito da un’umiltà e da una disponibilità ad aiutare gli altri
di altissimo livello.
Tanta acqua è passata sotto i ponti per Windows Phone; ricordo con affetto le uscite
di “Nodo”, “Mango”, “Tango”, “Apollo” e ora di “Blue”, il nome in codice di Windows
Phone 8.1, che finalmente porta con sé l’unificazione quasi totale con il modello delle
Windows Runtime app di Windows 8.x e la possibilità di scrivere Universal app per
entrambe le piattaforme con pochissimo sforzo.
In questo modo è possibile realizzare e vendere app su entrambi gli Store, Windows
e Windows Phone, in maniera semplice e coerente. Le Universal app condividono
tantissime cose sulle due piattaforme, ad esempio il Roaming Storage e i Roaming
Settings, le notifiche push possono essere inviate una sola volta e raggiungere l’utente su entrambe le piattaforme, gli acquisti in-app (tranne i consumabili) sono in
comune, così come (se lo sviluppatore decide in quel senso) l’acquisto dell’app. Le
Universal app possono essere realizzate in C# e XAML, HTML e JavaScript o in C++
(XAML o Direct X).
In questo libro Matteo vi mostra come farle in C# e XAML, una delle strade più praticate dai developer, soprattutto quelli che affondano le proprie radici nella programmazione .NET o Silverlight, che si troveranno sicuramente a casa con le novità di WinRT,
la piattaforma comune che astrae le differenze tra tablet, PC e telefoni.
9
Libro_Universal.indb 9
31/07/14 15:13
Sviluppare Universal app per Windows Phone e Windows con XAML e C#
Questo libro è utile anche a tutti gli sviluppatori Windows Phone che decidono di continuare a usare Silverlight per Windows Phone 8.1, per non dover riscrivere le loro app
realizzate per le versioni precedenti di Windows Phone, ma che vogliono sfruttare le
nuove API, in quanto quasi tutte le classi di WinRT (tranne quelle relative allo XAML e
poche altre) sono utilizzabili anche nel vecchio modello di sviluppo.
Non vedo l’ora di vedere pubblicate sugli Store le app che realizzerete grazie ai consigli
e alle informazioni presenti in questo libro e vi invito a seguire i canali Microsoft Developer italiani su Twitter (@msdev_ita) e Facebook per essere sempre aggiornati sulle
iniziative che abbiamo in serbo per gli sviluppatori italiani.
Lorenzo Barbieri
@_geniodelmale
Microsoft Technical Evangelist
10
Libro_Universal.indb 10
31/07/14 15:13
Introduzione
Microsoft ha dovuto affrontare, negli ultimi anni, un cambiamento epocale: da sempre
leader di mercato nel mondo dell’informatica, grazie alla diffusione di Windows, si è
trovata improvvisamente in un mondo dove i PC sono sempre più frequentemente
sostituiti o affiancati da altri dispositivi, come smartphone e tablet, soprattutto nel
mercato consumer.
Da qui la progressiva trasformazione di Microsoft, iniziata con la riorganizzazione voluta da Steve Ballmer e ora nelle mani del nuovo CEO Satya Nadella: non più la classica
azienda produttrice di software, ma una società orientata ai device e ai servizi.
Windows 8 e Windows Phone rappresentano due tasselli fondamentali in questa nuova direzione e costituiscono il primo segnale del cambiamento di Microsoft: un nuovo
approccio visivo, un nuovo modello di sviluppo per le applicazioni, una forte attenzione alla sicurezza e alla salvaguardia della privacy dell’utente, un occhio di riguardo ai
consumi e alle performance ecc.
Nonostante le due piattaforme abbiano condiviso sin da subito molte similitudini, dietro le quinte era possibile trovare parecchie differenze: Windows 8, infatti, ha introdotto un nuovo framework chiamato Windows Runtime, mentre Windows Phone è
nato sulle fondamenta di Silverlight e del framework .NET. Come conseguenza, agli
sviluppatori era richiesto uno sforzo non indifferente per realizzare applicazioni per
entrambe le piattaforme: pur presentando molti scenari comuni, spesso e volentieri le
API e l’approccio da utilizzare erano differenti.
Windows Phone 8.1 è il punto di svolta: introducendo un’implementazione quasi completa del Windows Runtime di Windows 8, ha portato finalmente all’unificazione del
modello di sviluppo tra le due piattaforme. Le Universal Windows app sono il frutto
di questa convergenza: grazie a questo speciale progetto di Visual Studio, è possibile
realizzare applicazioni per Windows e Windows Phone condividendo la maggior parte del codice. Non solo: in futuro, le Universal Windows app saranno estese anche a
11
Libro_Universal.indb 11
31/07/14 15:13
Sviluppare Universal app per Windows Phone e Windows con XAML e C#
Xbox One, consentendo agli sviluppatori di raggiungere schermi e dispositivi diversi
mantenendo una base di codice comune.
Questo libro è dedicato proprio alle Universal Windows app: nel corso dei vari capitoli saranno affrontate tutte le caratteristiche del Windows Runtime e come possono essere sfruttate per realizzare applicazioni all’avanguardia per Windows 8.1 e
Windows Phone 8.1.
Chi dovrebbe leggere questo libro?
Questo libro è stato scritto con l’obiettivo di essere d’aiuto sia a chi si sta avvicinando a Windows e Windows Phone per la prima volta, sia a chi ha già avuto esperienza, magari con le versioni precedenti della piattaforma. Inoltre, Windows Phone 8.1,
allineandosi con le funzionalità offerte dal Windows Runtime, costituisce un grosso
cambiamento rispetto al modello di Silverlight di Windows Phone 8.0: di conseguenza, se avete già sviluppato applicazioni per Windows Phone troverete sicuramente
un ambiente e dei concetti familiari, ma anche molte novità e aspetti nuovi, anche in
argomenti base come il ciclo di vita delle applicazioni o la navigazione.
Cosa contiene questo libro?
Il libro presenta gli argomenti relativi allo sviluppo di applicazioni Windows e Windows Phone secondo un percorso logico che vi accompagnerà dalle basi necessarie
per creare il vostro primo progetto fino a padroneggiare le tante caratteristiche offerte
dal Windows Runtime.
Nel primo capitolo imparerete a conoscere meglio le due piattaforme: come sono
nate, il modello di sviluppo, quali sono i framework e i linguaggi a disposizione degli
sviluppatori. Scoprirete anche quali sono i tool messi a disposizione da Microsoft per
creare le applicazioni, testarle e pubblicarle su entrambi gli Store.
Nel secondo capitolo apprenderete le conoscenze base necessarie per iniziare a
sviluppare un’applicazione, andando ad analizzare come è strutturato un progetto e
come sono caratterizzate le Universal Windows app. In più, farete la conoscenza dei
concetti chiave di XAML e C#, i due linguaggi che è importante conoscere per realizzare l’interfaccia grafica e scrivere il vostro codice.
Nel terzo capitolo faremo una panoramica di tutti i controlli che il Windows Runtime
ci mette a disposizione per realizzare l’interfaccia grafica dell’applicazione, partendo
da quelli base per poi trattare quelli specifici di entrambe le piattaforme.
Nel quarto capitolo affronteremo una serie di concetti chiave per sviluppare un’applicazione, come il ciclo di vita, la navigazione tra pagine e il supporto a dispositivi dotati
di risoluzioni e schermi dalle dimensioni molto differenti tra di loro.
12
Libro_Universal.indb 12
31/07/14 15:13
Introduzione
Il quinto capitolo è dedicato alla gestione dei dati locali: la presenza di connettività nei dispositivi di nuova generazione come tablet e smartphone è importante, ma
spesso ci si trova a dover gestire dati che invece sono memorizzati sul telefono o che
devono essere fruibili anche senza una connessione a Internet. Nel corso del capitolo
vedremo come salvare e caricare informazioni nello storage locale, quali tipologie di
storage abbiamo a disposizione, come sfruttare i database e come interagire con i file
presenti nel dispositivo.
Il sesto capitolo è dedicato all’interazione con il mondo esterno, grazie alla connessione a Internet: tratteremo il download e l’upload di file e l’interazione con servizi web.
Il settimo capitolo vi insegnerà, invece, a sfruttare la ricca dotazione hardware di cui
sono dotati tablet e smartphone Windows: dai servizi di geolocalizzazione, per identificare la posizione dell’utente, ai sensori di movimento passando per la connessione
con altri dispositivi tramite Bluetooth e NFC.
L’ottavo capitolo approfondirà, invece, uno dei concetti chiave del Windows Runtime: i contratti, ovvero il meccanismo che consente alle applicazioni di interagire
con il sistema operativo e con altre applicazioni. Impareremo a condividere dati,
a gestire url ed estensioni, a integrarci con la rubrica e il calendario e a sfruttare i
servizi vocali di sistema.
Smartphone e tablet non sono solamente strumenti di lavoro, ma anche di divertimento e con una spiccata vocazione multimediale: il nono capitolo è dedicato proprio
a questo aspetto. Impareremo a integrare audio e video nelle nostre applicazioni e a
interagire con le fotocamere presenti nei dispositivi.
Nel decimo capitolo introdurremo, invece, un argomento fondamentale per realizzare
applicazioni Windows e Windows Phone in grado di sfruttare al massimo una delle
caratteristiche peculiari della piattaforma: le tile e le notifiche, che consentono di mostrare informazioni all’utente in tempo reale anche quando l’applicazione non è in uso.
L’undicesimo capitolo è interamente dedicato al multitasking e alle possibilità che
Windows Phone offre agli sviluppatori di eseguire operazioni anche quando l’applicazione non è in esecuzione, tramite i background task.
Il dodicesimo capitolo, infine, affronta l’argomento finale del processo di sviluppo: la
pubblicazione sullo Store. Contestualmente vedremo una serie di aspetti collegati alla
promozione, come la localizzazione in diverse lingue e il supporto all’in-app purchase.
Cosa non contiene questo libro
Il Windows Runtime, come impareremo nel corso del primo capitolo, è uno strato di
API native che consentono di interagire con il kernel del sistema operativo per soddisfare gli scenari più comuni. Per venire incontro alle esigenze e alla versatilità degli svi-
13
Libro_Universal.indb 13
31/07/14 15:13
Sviluppare Universal app per Windows Phone e Windows con XAML e C#
luppatori moderni, Microsoft ha introdotto il concetto di projection, ovvero degli strati
che consentono di interagire con le API del Windows Runtime utilizzando differenti
tecnologie e linguaggi, come XAML, C#, C++, HTML e Javascript.
Questo libro è focalizzato sullo sviluppo di applicazioni usando XAML e C#: anche
se gli scenari descritti sono disponibili utilizzando uno qualsiasi degli altri linguaggi
disponibili per il Windows Runtime, non saranno trattati nel corso del libro.
Un altro importante concetto che imparerete nel corso del primo capitolo è che Windows Phone 8.1 ha introdotto una versione del Windows Runtime allineata quasi completamente a quella di Windows: come conseguenza, il modello di sviluppo è stato
allineato a quello delle Windows Store app, che gli sviluppatori avevano già imparato a
conoscere con Windows 8. Il framework precedente, ovvero Silverlight, però, è ancora
presente, per garantire la retro compatibilità con le applicazioni già esistenti e per non
costringere gli sviluppatori a riscrivere le loro applicazioni da zero. Lo sviluppo con
Silverlight, però, non sarà preso in considerazione: anche se la maggior parte degli
scenari descritti nel libro può essere utilizzata, usando il medesimo codice, anche in
un’applicazione Silverlight per Windows Phone 8.1, tutti gli scenari di sviluppo (ciclo di
vita, navigazione, condivisione di codice tra le due piattaforme) saranno specifici del
Windows Runtime.
Infine, il linguaggio per la scrittura di codice preso in considerazione è C#: per comprendere pienamente il contenuto del libro è consigliata una conoscenza almeno di
base. Non saranno, infatti, approfonditi argomenti specifici legati alle caratteristiche
del linguaggio, come LINQ, i delegate, i tipi ecc.
Se non è il vostro caso, potete approfondire l’argomento tramite il libro Programmare
con C# 5 – Guida Completa di Antonio Pelleriti, facente parte anch’esso della collana
DigitalLifeStyle Pro ed edito da LSWR. In alternativa, la Microsoft Virtual Academy
(MVA) offre un corso gratuito online in inglese all’indirizzo http://www.microsoftvirtualacademy.com/training-courses/c-fundamentals-for-absolute-beginners.
Feedback e codice di esempio
I feedback sono molto importanti per un autore, perché aiutano a capire la validità del
lavoro svolto e a raccogliere utili suggerimenti per i lavori futuri.
Per questo motivo, vi invito a farmi sapere le vostre impressioni, sia positive che negative, e i vostri suggerimenti su cosa si sarebbe potuto migliorare.
Potete farlo mandandomi una mail all’indirizzo [email protected].
Il codice di esempio utilizzato nei vari capitoli del libro sarà pubblicato sul mio blog
ufficiale all’indirizzo http://www.qmatteoq.com.
14
Libro_Universal.indb 14
31/07/14 15:13
Introduzione
Avvertenze
Tutti i contenuti di questo libro sono relativi al periodo in cui è stato scritto: alcuni
argomenti (in particolar modo l’utilizzo di librerie di terze parti e il processo di pubblicazione descritto nel Capitolo 12) potrebbero subire delle modifiche nel corso del
tempo, dato che seguono un ciclo di vita indipendente da quello delle due piattaforme.
Gli esempi sono forniti così come sono e nessuna garanzia è dovuta dall’autore o
dall’editore per eventuali danni che dovesse commettere l’utilizzatore, anche sulla
base di quanto contenuto in questo libro.
Risorse utili
Il mondo della tecnologia è in continua evoluzione: questo libro costituisce sicuramente una risorsa importante per iniziare a sviluppare applicazioni per Windows e
Windows Phone, ma è altrettanto importante rimanere aggiornati e stare al passo
con tutte le novità che vengono rilasciate. Inoltre, l’obiettivo di questo libro è quello di essere il più completo possibile, ma è impossibile essere esaustivi al 100% su
tutti gli argomenti.
Di conseguenza, ecco una serie di siti che vi possono aiutare nell’approfondire le tematiche trattate nel corso del libro:
• I miei blog in italiano (http://www.qmatteoq.com) e in inglese (http://
wp.qmatteoq.com), dove pubblico regolarmente articoli e tutorial sullo sviluppo.
• I portali ufficiali di Windows (http://dev.windows.com) e Windows Phone
(http://dev.windowsphone.com) che contengono, oltre alla documentazione
ufficiale, tantissimi tutorial, esempi di codice e risorse per il design.
• Microsoft Virtual Academy (http://www.microsoftvirtualacademy.com/) è
un’iniziativa di Microsoft che offre corsi gratuiti online per gli sviluppatori, con
esempi pratici e certificazione finale.
• Il portale di Nokia dedicato agli sviluppatori (http://www.developer.nokia.
com/), che contiene molti tutorial ed esempi di codice, soprattutto su Windows Phone.
• La pagina Facebook dedicata agli sviluppatori Nokia (https://www.facebook.
com/groups/SviluppatoriNokiaItalia/) è un luogo di ritrovo e di discussione
molto attivo per il supporto e il confronto su tematiche dedicate a Windows e
Windows Phone.
• I forum di supporto italiani Microsoft ospitano due sezioni specifiche dedicate a Windows (http://social.msdn.microsoft.com/Forums/it-IT/home?
15
Libro_Universal.indb 15
31/07/14 15:13
Sviluppare Universal app per Windows Phone e Windows con XAML e C#
forum=winstoreappsit) e Windows Phone (http://social.msdn.microsoft.com/
Forums/it-IT/home?category=phoneit).
• Il blog ufficiale del team di Windows e Windows Phone (http://blogs.windows.
com/windows/b/buildingapps/) pubblica regolarmente articoli tecnici inerenti lo sviluppo per entrambe le piattaforme.
• Twitter è una risorsa molto efficace per rimanere sempre aggiornati sulle
novità riguardanti lo sviluppo per Windows e Windows Phone: l’hashtag ufficiale è #wpdev.
• Windows e Windows Phone sono anche e soprattutto una piattaforma per gli
utenti finali: di conseguenza, è importante essere aggiornati anche sulle novità
in questo campo, come le nuove applicazioni, il rilascio di nuovi update, i nuovi
modelli di telefoni e tablet ecc. A tale scopo il portale da seguire è Windows
Phone Magazine Italia (http://www.wpmitalia.com/), con il quale ho collaborato per la pubblicazione di questo libro.
Un altro modo molto efficace per rimanere sempre aggiornati sulle novità nel mondo
dello sviluppo Windows e Windows Phone è la partecipazione al mondo community
e ai tanti eventi che Microsoft organizza durante l’anno. Per questo motivo vi invito a
seguire il portale MSDN Italia (http://msdn.microsoft.com/it-IT/), nel quale vengono
messi in evidenza i principali eventi tecnici.
Ringraziamenti
La stesura di un libro è un processo molto stimolante, ma allo stesso molto impegnativo, soprattutto in termini di tempo necessario per portare il progetto a termine. Il
ringraziamento più importante, perciò, va a mia moglie Angela, che ha sopportato con
pazienza i momenti sottratti alla nostra vita familiare nell’arco di questi mesi e che,
nonostante questo, mi ha sempre spronato e supportato.
Un ringraziamento speciale anche alle mie due famiglie: quella di origine, composta
dai miei genitori Daniela ed Elio e da mio fratello Stefano, che hanno sempre creduto
in me e nelle mie potenzialità; quella acquisita, ovvero i miei suoceri Rosy e Peppino e
mia cognata Michela, che mi hanno sempre accolto come un figlio.
Molti ringraziamenti importanti vanno anche agli amici, soprattutto a quelli che mi
hanno fatto scoprire la forza delle community e che hanno creduto in me, senza i
quali l’idea di scrivere un libro sarebbe solamente un sogno nel cassetto. Ugo Lattanzi che, supportandomi nell’apertura del mio primo blog e organizzando il mio primo speech a un evento community (a mia insaputa), mi ha dato la forza e il coraggio
di mettermi in gioco; Lorenzo Barbieri, a cui devo il mio primo contatto con Windows
16
Libro_Universal.indb 16
31/07/14 15:13
Introduzione
Phone e tante delle bellissime opportunità che ho avuto in questi anni; Roberto Freato, fondatore di DotNetLombardia, la community di cui ora faccio parte e che, per
prima, mi ha dato la possibilità di mettere a frutto la mia passione nonostante, ai
tempi, fossi un perfetto sconosciuto.
Un ringraziamento speciale anche a tutte le persone di Microsoft coinvolte nel programma MVP, sia in Italia (Alessandro Teglia, Cristina Gonzalez Herrero e Marjorie
di Clemente) sia a Redmond (Desiree Lockwood). Un grazie importante anche a tutte
le persone di Microsoft e Nokia che seguono gli sviluppatori in Italia: la divisione DX
(Developer Experience), Daniele Pagani, Luca De Bernardi e Frangino Lucarini.
Un grazie di cuore anche ai tanti amici che mi hanno accompagnato in questo percorso, sia quelli nuovi sia quelli di lunga data, come Giorgio Formica, Corrado Cavalli,
Marco Leoncini, Alessio Leoncini, Igor Antonacci, Marco Dal Pino e tutti gli amici di
DotNetToscana, Joost Van Schaik e Peter Nowak.
Un grazie va, inoltre, alle persone che hanno permesso a questo progetto di diventare
realtà: Maurizio Gasparro, il fondatore di Windows Phone Magazine Italia, che ha collaborato con me alla realizzazione di questo progetto, e Marco Aleotti, responsabile
editoriale della collana Digital LifeStyle Pro per la casa editrice LSWR.
Infine, un caloroso ringraziamento va a Funambol, l’azienda per la quale lavoro ormai
da più di due anni, nella quale ho trovato un ambiente stimolante, impegnativo, ma soprattutto accogliente e dove ho avuto la possibilità di conoscere persone eccezionali.
In particolare, un grazie di cuore a Stefano Fornari e Andrea Gazzaniga, che mi danno
l’opportunità di coniugare le attività community con il lavoro quotidiano, e ai miei colleghi di team Andrea Toccalini, Marco Magistrali, Luca Moscato, Roberto Oguntuyi,
Claudio Vecchio e Silvia Mazzocchi.
17
Libro_Universal.indb 17
31/07/14 15:13
Libro_Universal.indb 18
31/07/14 15:13
1
Introduzione
alle Universal Windows app
Il mondo dell’informatica ha dovuto affrontare numerose trasformazioni negli ultimi anni: se, fino a qualche tempo
fa, i
computer erano i dominatori incontrastati di questo
settore, negli ultimi anni hanno ceduto sempre più il passo a
smartphone e tablet. I personal computer rimangono uno
strumento fondamentale in molti scenari (soprattutto professionali), ma in tanti altri casi sono stati sostituiti o affiancati da dispositivi
di nuova generazione, concepiti per
un utilizzo in mobilità e dotati di interfacce più intuitive.
Microsoft è sicuramente la società che, più di tutte le altre, si è trovata a dover affrontare questo cambiamento, in virtù dell’enorme diffusione del sistema operativo Windows nel mercato dei computer, al contrario delle principali concorrenti (come Apple
e Google) che, invece, negli ultimi anni hanno visto nel mobile il loro terreno più fertile.
Windows 8 e Windows Phone sono la risposta di Microsoft a questo cambio generazionale, nati per offrire un approccio innovativo rispetto alla concorrenza. Le due piattaforme, in realtà, non sono nate nello stesso momento: Windows Phone, infatti, ha
fatto la sua prima comparsa nel 2010, mentre Windows 8 è stato lanciato solamente
due anni dopo, nel 2012. Come conseguenza, il cammino che ha portato alla convergenza di questi due mondi non è iniziato sin da subito, ma ha richiesto una serie di
19
Libro_Universal.indb 19
31/07/14 15:13
Sviluppare Universal app per Windows Phone e Windows con XAML e C#
raffinamenti successivi, che sono culminati con le due versioni a cui è dedicato questo
libro: Windows 8.1 e Windows Phone 8.1.
Nel corso dei paragrafi successivi andremo ad analizzare come sono nate le due piattaforme, le caratteristiche salienti e le fasi intermedie che hanno portato alla convergenza attuale.
Windows 8
Per quanto riguarda il mondo Windows se, per Apple e Google, mobile e desktop sono
due ambienti completamente separati, per Microsoft invece la parola chiave è convergenza. Al contrario degli altri produttori (che hanno scelto di considerare i tablet alla
stregua di grossi smartphone, offrendo un unico sistema per entrambi), Microsoft ha
definito Windows come un unico sistema operativo dotato di due anime: una tradizionale, che offre il classico desktop a cui gli utenti sono abituati da decenni e la cui principale modalità di interazione è l’accoppiata tastiera e mouse; una di nuova generazione,
pensata invece per un utilizzo prevalentemente touch e in grado di eseguire applicazioni
con una spiccata vocazione per l’uso in mobilità, sia per quanto riguarda l’interazione
che per i principi che le guidano. Windows 8 nasce, perciò, sia come sistema operativo
per i computer tradizionali, sia per i tablet. In più, la duplice natura di Windows 8 ha scatenato la fantasia dei produttori, che hanno lanciato nell’ultimo anno nuove tipologie di
dispositivi: da ultrabook dotati di schermo touch screen a convertibili in grado di essere
utilizzati sia come computer che come tablet. Microsoft stessa ha contribuito a dare
forma a questa nuova generazione di dispositivi, introducendo Surface, il primo ibrido tra
un computer e un tablet prodotto direttamente dalla casa di Redmond.
Windows 8 è stato lanciato ufficialmente a Ottobre 2012, dopo una fase di testing pubblico durata più di un anno e iniziata a Settembre 2011 durante BUILD, la conferenza Microsoft in cui Steven Sinofski (allora a capo della divisione Windows) svelò ufficialmente
la nuova piattaforma e consegnò agli sviluppatori la prima beta.
Windows 8 non è stato solamente una svolta epocale nel modo in cui Microsoft ha
concepito il proprio sistema operativo, ma ha anche segnato un nuovo approccio nella
gestione dei rilasci e degli aggiornamenti dei propri prodotti. In un mondo tecnologico
in continua evoluzione, rilasciare una nuova versione dei propri software ogni 3-4 anni
significa rimanere indietro con le ultime novità e gli ultimi standard offerti dal mercato.
Ecco, perciò, che Windows 8 è il primo prodotto di Microsoft (insieme a Visual Studio)
a cambiare il passo: non più un’unica grande release, intervallata dal rilascio di service
pack minori (volti principalmente a risolvere i bug riscontrati dopo il rilascio), ma vere
e proprie nuove versioni del sistema operativo rilasciate con maggiore frequenza, che
vanno ad aggiungere importanti novità sia per quanto riguarda le caratteristiche utente,
sia per quanto riguarda le opportunità per gli sviluppatori.
20
Libro_Universal.indb 20
31/07/14 15:13
Introduzione alle Universal Windows app
Capitolo 1
Windows 8.1 è il primo frutto di questa nuova strategia: rilasciato circa un anno dopo,
si tratta di un aggiornamento molto importante, che va a colmare alcuni limiti della
versione originale e introduce diverse funzionalità molto richieste dagli utenti. Anche
dal punto di vista degli sviluppatori è un aggiornamento piuttosto sostanzioso: sono
quasi 5000 le nuove API che sono state introdotte e che aumentano le potenzialità e
la flessibilità delle applicazioni che possono essere sviluppate.
Windows Phone
Windows Phone ha aperto la strada alla rivoluzione in casa Microsoft, anticipando
molti temi, soprattutto dal punto di vista visuale (il Microsoft Design Style, il concetto
di tile) che ora sono diventati il segno distintivo dei prodotti della società di Redmond,
partendo da Windows Phone e passando per Windows e XBox. Windows Phone nasce nel 2010 come risposta all’iPhone di Apple, che aveva cambiato completamente
le carte in tavola, rendendo di punto in bianco obsoleti sistemi come Windows Mobile
basati ancora sull’uso di touch screen gestiti tramite pennino o sprovvisti di sensori
quali movimento, geolocalizzazione ecc.
La filosofia alla base di Windows Phone, per quanto riguarda i dispositivi, può essere
considerata un ibrido tra l’approccio di Apple e quello di Google. Microsoft, infatti,
ha messo a disposizione la sua piattaforma a tutti i produttori hardware, che sono in
grado perciò di realizzare dispositivi dalle caratteristiche più variegate. Il punto di forza
di questa scelta è che troviamo dispositivi per tutti i gusti e, soprattutto, per tutte le
tasche: da telefoni economici, dotati ad esempio di uno storage ridotto e di fotocamere senza flash, a dispositivi di fascia alta, dotati di caratteristiche all’ultimo grido e di
fotocamere equiparabili a prodotti professionali.
Allo stesso tempo, però, Microsoft ha definito una serie di paletti che i produttori devono rispettare, in termini di dotazione hardware: di conseguenza, come sviluppatori
possiamo fare affidamento sul fatto che certe funzionalità (come il GPS o i sensori di
movimento) saranno sempre disponibili su qualsiasi modello, semplificando perciò il
nostro lavoro.
Al primo rilascio di Windows Phone 7.0 è seguito il primo importante aggiornamento,
caratterizzato dal numero di versione 7.5: si trattava di un update piuttosto consistente, che aveva migliorato l’esperienza utente e introdotto diversi scenari molto richiesti
dagli sviluppatori, come il supporto ai database o la possibilità di eseguire operazioni
in background.
Windows Phone 8.0 è stato un punto di svolta, in quanto rappresentava la prima versione
uscita dopo il rilascio di Windows 8 e, di conseguenza, iniziava a mostrare qualche accenno di convergenza tra le due piattaforme: il più importante era sicuramente la presenza
21
Libro_Universal.indb 21
31/07/14 15:13
Sviluppare Universal app per Windows Phone e Windows con XAML e C#
del medesimo kernel, che andava a sostituire quello di Windows Phone 7, basato ancora
sulla vecchia piattaforma Windows Mobile. Inoltre, trovavamo anche un primo allineamento della piattaforma di sviluppo, grazie a una serie di API in comune tra i due sistemi
operativi (relative a scenari quali la gestione dello storage, i sensori di movimento ecc.).
Questo cambiamento così importante ha avuto, però, un lato negativo: Windows Phone
8.0 non è stato reso disponibile come aggiornamento per i dispositivi con Windows Phone 7.5, ma solamente preinstallato sugli smartphone di nuova generazione.
Windows Phone 8.1, nonostante il numero di versione possa far pensare a un aggiornamento minore, rappresenta un nuovo punto di partenza: la novità principale è sicuramente l’allineamento quasi completo con Windows 8 in termini di funzionalità,
di architettura e di piattaforma di sviluppo, che rende possibile per gli sviluppatori
realizzare in maniera molto più semplice applicazioni in grado di funzionare sia su
tablet che su smartphone.
Windows Phone 8.1 è anche un aggiornamento importante dal punto di vista utente,
grazie a una nutrita serie di nuove funzionalità, quali:
• Cortana, un assistente vocale digitale in grado di aiutarci a gestire al meglio
la nostra vita digitale, pianificando appuntamenti, creando promemoria e tracciando le nostre attività.
• Il centro notifiche, che consente di avere accesso velocemente alle impostazioni del telefono e tutte le notifiche ricevute dalle applicazioni.
• Un nuovo calendario.
• La tastiera Word Flow, che consente di scrivere testi senza staccare il dito
dallo schermo.
• Backup completo del telefono, inclusa la disposizione della Start Screen e i dati
delle applicazioni.
• Possibilità di proiettare lo schermo del telefono tramite connessione USB o wireless.
• Possibilità di installare le applicazioni sulle schede SD.
Inoltre, nel corso dell’anno Microsoft ha aggiunto un nuovo e importante tassello all’ecosistema, acquisendo la divisione Devices & Services di Nokia: in questo modo, la
società di Redmond sarà in grado di far crescere l’integrazione tra software e hardware
di pari passo.
Le Windows Store app
Lo spartiacque che ha dato una forte scossa al mondo mobile è stata sicuramente la nascita degli Store di applicazioni, che hanno reso più semplice per gli utenti espandere le
funzionalità dei telefoni, mentre per gli sviluppatori distribuire il frutto del proprio lavoro.
22
Libro_Universal.indb 22
31/07/14 15:13
Introduzione alle Universal Windows app
Capitolo 1
Windows e Windows Phone non sono da meno: entrambe le piattaforme mettono a
disposizione il loro Store, all’interno dei quali potremo pubblicare le applicazioni che
andremo a sviluppare grazie alle informazioni contenute in questo libro.
All’interno dell’ecosistema Microsoft tali applicazioni prendono il nome di Windows
Store app e sono nate all’interno di Windows 8, nel momento in cui Microsoft ha iniziato a ripensare il suo sistema operativo per un utilizzo non solo con mouse e tastiera,
ma anche in mobilità e con interfacce touch screen: le classiche applicazioni desktop,
a cui gli utenti sono abituati, infatti, non sono adatte per scenari di questo tipo. Innanzitutto per una questione di usabilità: nella maggior parte dei casi, si tratta di applicazioni pensate per essere utilizzate con mouse e tastiera e, quindi, difficilmente
utilizzabili in modalità touch. La seconda questione è tecnica: le applicazioni desktop
sono pensate per essere utilizzate tipicamente in scenari ove ottimizzazione delle performance e dei consumi non sono una priorità i quali, invece, sono fondamentali quando si pensa a un dispositivo che deve essere utilizzato in mobilità.
Per questo motivo Microsoft ha introdotto le Windows Store app: applicazioni di nuova generazione, che nascono per essere utilizzate sui tablet o, più in generale, su dispositivi dotati di schermo touch screen. In realtà, le Windows Store app possono
essere utilizzate tranquillamente anche sui computer tradizionali, dato che sono ottimizzate anche per la classica combinazione mouse e tastiera: è sui dispositivi touch
screen, però, che danno il meglio di loro.
L’approccio pensato da Microsoft per le Windows Store app è quello tipico del mondo
mobile: ottimizzazione dei consumi e delle prestazioni, interfaccia grafica pensata per
l’utilizzo tramite touch screen, distribuzione controllata tramite uno Store ecc.
Le Windows Store app abbandonano, perciò, il vecchio approccio basato su finestre, per offrire un’interfaccia più immersiva e basata su una struttura gerarchica
di pagine, attraverso le quali l’utente può navigare. Anche il modello applicativo è
profondamente diverso: al fine di garantire maggiore sicurezza agli utenti e offrire
un approccio più controllato, le Windows Store app girano all’interno di un ambiente
protetto, una sorta di sandbox dalla quale non possono uscire se non dietro specifico
consenso dell’utente.
Anche dal punto di vista dello sviluppo, le Windows Store app rappresentano uno
stacco rispetto al passato, abbandonando il framework .NET (e le tecnologie basate
su di esso, come WPF o Silverlight) per introdurne uno nuovo, chiamato Windows
Runtime, che approfondiremo nel corso del capitolo.
Il tocco personale di Microsoft, rispetto alla concorrenza, è nell’approccio visivo, basato sul Microsoft Design Style, che ha visto la sua prima reale espressione in Windows
Phone e del quale ripropone alcuni concetti familiari, come quello delle tile.
23
Libro_Universal.indb 23
31/07/14 15:13