I nuovi tool di sviluppo per Mango in dettaglio

Print Content | More

Come promesso, iniziamo a vedere qualche dettaglio tecnico di Mango dal punto di vista di uno sviluppatore e partiamo proprio dalla nuova versione dei tool di sviluppo, rilasciata settimana scorsa.

I tool di sviluppo si installano sopra la versione corrente dei tool, perciò non avete bisogno di disinstallarli prima di procedere: l’unico accorgimento è che, come da tradizione Microsoft, le versioni beta dei tool non sono localizzate. Se perciò avete installata sul vostro computer la versione italiana dei tool, solo in questo caso dovrete disinstallarli prima di installare la nuova beta.

One tool to rule them all

SNAGHTML212934f2

Come anticipato nel post dedicato al lancio di Mango, i nuovi tool di sviluppo hanno la caratteristica di prevedere due target diversi per i progetti mobile: Windows Phone 7.0 (che rappresenta la versione corrente installata sui device in commercio) e Windows Phone 7.1 (che rappresenta invece Mango). Questo significa che potremo utilizzare un’unica versione per lavorare su entrambe le piattaforme: in questo modo possiamo continuare a sviluppare e mantenere applicazioni da pubblicare sul Marketplace, senza però perdere la possibilità di iniziare a sperimentare con le nuove API. Si tratta sicuramente di una feature molto gradita, considerando il fatto che come saprete tool di sviluppo e macchine virtuali non vanno molto d’accordo, dato che l’emulatore è una virtual machine esso stesso.

Per i nuovi progetti, una volta selezionato uno dei template disponibili per le applicazioni Windows Phone, vi verrà chiesto il target; per i progetti già esistenti, invece, troverete la voce Upgrade to Windows Phone 7.1 facendo clic con il tasto destro sul progetto.

Occhio però che ci sono un paio di accorgimenti da tenere a mente: il primo è che il nuovo emulatore contiene l’immagine del sistema operativo di Mango. Questo significa che il testing dell’applicazione sull’emulatore non è affidabile al 100%, in quanto la versione dell’OS differisce da quella installata sui device in commercio. E’ perciò importante testare sempre le vostre applicazioni su un device reale prima di fare il submit sul Marketplace.

Il secondo accorgimento è quello di prestare attenzione ai report del Marketplace in caso di fallimento del processo di certificazione: se vi segnalano problemi che voi non riscontrate, il disclaimer “con i tool di sviluppo per Mango la mia applicazione funziona perfettamente” non è accettato, dato che le applicazioni vengono testate e certificate per Windows Phone 7.0. In quel caso, l’unica soluzione è fare il revert e tornare ai tool ufficiali, oppure procurarsi un altro computer dove fare il testing.

I nuovi template

Rispetto alla versione ufficiale dei tool, Mango introduce diversi nuovi template predefiniti tra quelli disponibili nella categoria Silverlight for Windows Phone:

  • Windows Phone 3D Graphics Application: questo template crea lo scheletro base per la realizzazione di un’applicazione che sfrutti la nuova interoperabilità tra XNA e Silverlight (ovvero la possibilità di realizzare applicazioni tradizionali in grado però di renderizzare in uno specifico controllo grafica XNA).
  • Windows Phone Audio Playback Agent: questo template crea un progetto base per la realizzazione di un background agent di tipo audio, da utilizzare nelle applicazioni che fanno uso delle nuove API per la riproduzione di audio in background.
  • Windows Phone Audio Streaming Agent: analogo a quanto sopra, solo che è dedicato alle applicazioni che fanno uso di audio in streaming.
  • Windows Phone Task Scheduler Agent: questo template viene utilizzato per lo sviluppo di background agents, ovvero la tecnologia introdotta in Mango che ci da la possibilità di eseguire operazioni in background anche quando la nostra applicazione è chiusa.

SNAGHTML212cd601

Le novità dell’emulatore

SNAGHTML231ac5a7

La nuova versione dell’emulatore non si limita però a portare con sé una immagine minimale di Mango, ma introduce anche una serie di tool che facilitano il testing di scenari che prima ci erano preclusi. Sto parlando dell’utilizzo dei sensori di movimento e dei servizi di geolocalizzazione. Questi tool sono accessibili premendo il pulsante >>, visualizzato nella barra dei comandi dell’emulatore sotto il simbolo della lente d’ingrandimento.

L’accelerometro

Per testare applicazioni che fanno uso dell’accelerometro i nuovi tool ci mettono a disposizione un render 3D di un generico device, che possiamo ruotare a piacimento usando il mouse. Le rotazioni del render 3D scateneranno gli eventi della classe Accelerometer che rilevano la posizione del device nello spazio: in questo modo, se la nostra applicazione prevede modalità di interazione basate sul movimento, saremo in grado di testarla senza avere per forza a disposizione un device reale.

In più, il tool inlcude una serie di gestures predefinite, che possiamo simulare: al momento, l’unica gesture disponibile è Shake, che simula una serie di scosse decise al device.

Nota molto importante: questo nuovo tool permette di simulare solo gli eventi scatenati dalla classe Accelerometer. Attualmente, non sono supportate le nuove classi di Mango per la gestione dei sensori di movimento, come Motion, Gyro e Compass.

image

I servizi di geolocalizzazione

I servizi di geolocalizzazione sono un’altra feature che era impossibile testare con l’emulatore, se non utilizzando il tool GPS Emulator di cui vi ho parlato nel mio articolo pubblicato su MSDN Italia. Inoltre, anche con un device reale, non era così semplice testare la localizzazione, soprattutto in caso di applicazioni che non si limitano ad una rilevazione spot della posizione (es., un client Twitter) ma che hanno bisogno di un tracciamento preciso e continuo (es., un navigatore satellitare).

Questo nuova utility integrata nei tool si comporta come GPS Emulator, ma in meglio: essendo integrata con i tool, infatti, non richiede l’utilizzo di una libreria a parte ma si aggancia direttamente alle API native (la classe GeoCoordinateWatcher) esposte dal device.

Il tool mette semplicemente a disposizione una mappa di Bing, sulla quale possiamo posizionare dei segnaposto: ogni posizionamento fa scatenare l’evento PositionChanged della classe GeoCoordinateWatcher, il quale riceverà le coordinate del segnaposto. Possiamo anche inserire più segnaposto e, disabilitando la modalità Live con l’apposito pulsante e premendo il bottone Play, simulare un percorso: in questo modo la nostra applicazione riceverà in automatico una notifica ogni qualvolta verrà simulato lo spostamento da un segnaposto all’altro.

image

Cosa ci aspetta nel futuro?

Al MIX Microsoft ha annunciato una serie di altri tool che andranno a integrarsi con l’emulatore: sto parlando di Isolated Storage Explorer, che ci permetterà di accedere all’isolated storage della nostra applicazione e navigarne il file system, e di una utility per scattare screenshot, molto utile in fase di submit sul Marketplace.

Al momento questi due tool non sono ancora presenti nella beta corrente: è probabile però che Microsoft rilasci delle beta intermedie prima della versione finale, perciò dobbiamo solo aspettare Smile


Windows Phone , Microsoft , Mango

4 comments

Windows Phone Workshop One: it’s Mango time!

Print Content | More

Roberto Freato e Andrea Romeo di DotNetLombardia hanno organizzato un evento interessantissimo per chiunque sia interessato allo sviluppo di applicazioni per Windows Phone: l’evento, chiamato Windows Phone Workshop One, si terrà il 23 Giugno in sede Microsoft e sarà una giornata di approfondimento su tutte le novità per gli sviluppatori introdotte in Mango.

L’idea è quella di realizzare un’applicazione completa dall’inizio alla fine (stiamo ancora fissando le idee su quale sarà il risultato finale, vi terrò aggiornati): partendo dallo studio di User Experience e terminando con il deploy sul Marketplace, ogni speaker presenterà una delle nuove feature di Mango e mostrerà concretamente come implementarla all’interno dell’applicazione. Poche slide e molto codice insomma!

L’agenda non è ancora definitiva al 100%, ma potete farvi un’idea degli argomenti che verranno trattati: SQL CE, multitasking e background agents, integrazione con Azure, ecc.

Io avrò il grandissimo piacere di dare il mio contributo con il keynote (in cui faremo un breve riassunto delle novità di Mango e dei nuovi tool di sviluppo) e con una sessione, in cui svilupperò la parte dell’applicazione che farà uso di background agents, live tile e notifiche locali.

Come da tradizione per ogni evento community che si rispetti, il workshop è completamente gratuito e aperto a tutti. Cosa aspettate a iscrivervi? Vi lascio con il link al sito ufficiale dell’evento, che verrà aggiornato nel tempo man mano che nuove informazioni saranno disponibili:

http://wp7one.dotnetlombardia.org/


Windows Phone , Microsoft , Mango , DotNetLombardia

0 comments

Mango svelato e disponibilità dei tool di sviluppo!

Print Content | More

Mango è qui! O quasi Smile Ieri infatti Microsoft ha tenuto un evento a New York dove ha presentato ufficialmente le novità lato utente che verranno introdotte nella prossima release di Windows Phone. C’è stato spazio anche per gli sviluppatori: la presentazione è infatti coincisa con il lancio pubblico della prima beta dei tool, che consente lo sviluppo di applicazioni usando le oltre 1500 nuove API introdotte in Mango.

Potete scaricare i nuovi tool da qui: si installeranno sopra la versione attuale e vi daranno la possibilità, in fase di creazione di un nuovo progetto, di scegliere se sviluppare un’applicazione per Windows Phone 7.0 (la versione attuale) o Windows Phone 7.1 (il nome provvisorio dato a Mango). In questo modo, potrete utilizzare un’unica versione sia per fare esperimenti che per mantenere le applicazioni che avete attualmente sul Marketplace (o che vorrete sviluppare e pubblicare sul Marketplace nei prossimi mesi).

Microsoft ha inoltre aggiornato la documentazione per gli sviluppatori, inserendo anche nuovi esempi di codice e hands-on-lab. Ma non voglio soffermarmi troppo ora sui tool di sviluppo: nelle prossime settimane pubblicherò una serie di tutorial che andranno a coprire in profondità più o meno tutte le novità.

Parliamo invece delle novità consumer, che sono veramente tante e che innalzano di una spanna la qualità generale del sistema operativo, che ora a mio parere non teme più il confronto con gli altri OS concorrenti. Le novità sono state raggruppate in tra ambiti differenti: Comunicazione, Connettività e Applicazioni.

Comunicazione

Per quanto riguarda questo aspetto, Microsoft ha puntato molto su un’integrazione ancora più profonda con i social network, nonchè su una serie di migliorie ad Outlook e all’organizzazione dei nostri contatti.

  • Outlook: sono fondamentalmente due le novità principali relative alla gestione della posta. La prima sono le Linked Inbox, che ci danno la possibilità di collegare tra di loro diversi account di posta e gestirli come se si trattasse di uno solo. Un approccio molto più intelligente, a mio avviso, di quanto fanno alcune piattaforme concorrenti offrendo un’unica vista di tutte le mail ricevute, creando così confusione tra mail personali e mail professionali. L’altra novità è il supporto alle conversazioni, che sono identificate da una barra posta a lato della mail: facendo tap sulla conversazione, l’intero thread viene espanso.
  • Maggiore integrazione con i social network: Windows Phone offre già un ottimo grado di integrazione con Facebook, che in Mango verrà ulteriormente espanso, con il supporto ai check in di Places e al tagging delle foto direttamente in fase di upload. In più, ci sarà il supporto nativo a Twitter e LinkedIn.
  • Supporto nativo alle chat di Facebook e Messenger: Mango supporterà nativamente la chat con i nostri contatti di Facebook e Messenger in un modo decisamente originale; entrambe le chat infatti confluiranno nell’hub Messagging, quello attualmente dedicato agli sms. In questo modo, si creerà un flusso di comunicazione unico con i nostri contatti in base al miglior servizio disponibile in quel momento (se l’utente è connesso a Messenger useremo la chat, se è disconnesso gli invieremo un sms).
  • Threads: sotto questo generico “cappello” vengono indicate una serie di feature che ci permettono di tracciare lo storico delle comunicazioni con i nostri contatti. L’hub People ora è in grado di mostrare più informazioni (ad esempio, le immagini caricate sui social network) e di mostrare tutte le conversazioni avute con una persona, indipendentemente dal mezzo utilizzato (mail, sms, chat, ecc.)
  • Servizi vocali avanzati: Mango ci darà la possibilità di interagire con i nostri contatti via chat e via sms semplicemente dettandone il testo.
  • Gruppi: sarà possibile raggruppare i contatti in gruppi e interagire con essi grazie a chat di gruppo e a invii multipli di mail o sms. In più, le nuove funzionalità di raggruppamento delle informazioni introdotte per i singoli contatti saranno disponibili anche per i gruppi.

The Groups feature in the next release of Windows PhoneThe next release of Windows Phone includes linked in boxes and other great new features

 

 

 

 

 

 

 

 

 

 

 

 

Connettività

Per quanto riguarda la connettività con Internet, ovviamente la parte del leone la fa Internet Explorer 9, con il suo supporto nativo ad HTML5 e all’accelerazione hardware. Non da meno sono però i nuovi servizi integrati in Bing e che saranno accessibili premendo il pulsante Search del device:

  • Bing Audio, una sorta di Shazam integrato, permetterà di riconoscere titolo e autore di una canzone semplicemente facendola ascoltare al device.
  • Bing Vision: tramite l’accesso allo stream della fotocamera, è in grado di riconoscere oggetti fisici e di trovare informazioni ad esso collegate sul web. Nell’evento di Milano Luca Callegari di Microsoft Italia ha utilizzato questa funzione puntando il device verso la copertina di un libro. Windows Phone ha riconosciuto titolo e autore del libro e ha dato la possibilità di avere maggiori informazioni, di vedere le recensioni degli utenti nonchè di acquistarlo online dalle principali librerie sul web.
  • Local scout: avete presente Around Me, la celebre applicazione che consente di trovare i punti di interesse intorno ad un luogo? Ecco, Local Scout svolge la stessa funzione, solo offrendo un’esperienza molto migliore in quanto integrata direttamente nel device, senza bisogno di usare applicazioni di terze parti.
  • Cards: avevamo già avuto un assaggio al MIX di questa funzione, che permette agli sviluppatori di agganciare le loro applicazioni ai risultati della ricerca (l’esempio mostrato è la ricerca di un film, alla quale si può agganciare l’applicazione IMDB per mostrare i dettagli del film scelto).

The mobile version of Internet Explorer 9 is HTML5 compatible and has more room to display web pages.The Local Scout feature in the next release of Windows Phone makes it easy to find place to go and things to do.

Applicazioni

Non mi soffermerò molto su questo punto, dato che Microsoft si è limitata ad enfatizzare alcune delle novità già note agli sviluppatori e presentate al MIX, come il multitasking o il supporto alle live tile multiple. E’ stata però l’occasione per Microsoft per presentarle in una forma meno tecnica e più comprensibile per i consumatori, parlando dei vantaggi che queste avranno per l’utente finale piuttosto che dei dettagli tecnici sull’implementazione.

Nuovi vendor

Microsoft ha colto l’occasione per presentare nuove partnership con nuovi vendor, che entreranno sul mercato già con telefoni dotati di Mango: sto parlando di Acer, Fujitsu e ZTE (una compagnia cinese che probabilmente si distinguerà per una proposta di device dal prezzo più contenuto) e, ovviamente, Nokia.

Arrivederci in autunno!

Non c’è una data ufficiale di rilascio di Mango: il periodo però sarà quello autunnale o, in gergo, la Holiday Season per gli americani (che è il periodo che va dal giorno del Ringraziamento fino a Natale). E’ stato confermato comunque che l’aggiornamento verrà rilasciato gratuitamente e per tutti i device attualmente in commercio. Non ci resta che aspettare con ansia Smile

Vi lascio con un video di Joe Belfiore in cui vengono mostrate dal vivo molte delle novità di cui vi ho parlato in questo post. In più, vi segnalo il post ufficiale del team di Windows Phone e un post fatto sul blog ufficiale di Live in cui viene spiegata in dettaglio l’integrazione con Messenger. E se siete sviluppatori, non preoccupatevi: il post di oggi è stata solo una parentesi, a breve tornerò ad annoiarmi con tecnicismi vari come tutorial ed esempi di codice sulle tante nuove API introdotte in Mango Smile

Colgo infine l'occasione per ringraziare Lorenzo per avermi dato la possibilità di partecipare all'evento di ieri, in una location spettacolare (l'ultimo piano del Pirellone a Milano) e con dolci e pietanze tutte rigorosamente a base di mango :)


Windows Phone , Mango , Microsoft

10 comments

WhyMCA Conference 2011: the week after

Print Content | More

whymca-logo

Venerdì e sabato si è tenuto a Milano il WhyMCA, una delle più importanti conferenze italiane dedicate al mobile a 360°, con track dedicate allo sviluppo per iOS, Android , Windows Phone e crossplatform.

Innanzitutto voglio fare i miei complimenti ad Alfredo e a tutti gli altri organizzatori dell’evento: se consideriamo che la conferenza è solo al suo secondo anno ed è riuscita a radunare più di 400 persone, possiamo definire il risultato davvero eccellente! Non posso dare un giudizio sulla qualità delle sessioni, dato che non ne ho seguite tantissime: su Twitter mi è capitato di leggere a volte commenti piuttosto negativi di persone deluse da questa o quell’altra sessione. Personalmente, non condivido i toni pesanti usati da alcune persone: in primis, perchè si tratta di un evento community e completamente gratuito, il cui scopo reale è quello di creare aggregazione tra le persone, interesse verso il mondo mobile e nuove occasioni di collaborazione e conoscenza. In più, in un evento di questo tipo, con sessioni della durata di meno di un’ora, non si può pensare di entrare e uscire trasformati in guru sull’argomento: l’obiettivo deve essere quello di fornire le basi e far scattare quella scintilla di curiosità che poi ci spinge, una volta tornati a casa, ad approfondire le tematiche che ci hanno colpito di più.

Polemiche a parte, personalmente mi ha fatto molto piacere vedere un crescente interesse verso Windows Phone: il numero di persone che nell’arco dei due giorni si è affollata attorno al banchetto di Microsoft per avere informazioni più approfondite sulla piattaforma e sulle possibilità per lo sviluppo di applicazioni è stato decisamente elevato. In più, la giornata di Sabato è stata un’ottima occasione sia per fare il punto sulla situazione attuale, sia per lanciare Mango, con una serie di sessioni di approfondimento sulle principali novità.

Per quanto riguarda il sottoscritto, ho proposto una sessione dedicata al multitasking in Mango, offrendo una panoramica sulle novità introdotte, sia in termini di passaggio veloce da un’applicazione all’altra (il nuovo ciclo di vita), sia in termini di operazioni che le nostre applicazioni possono eseguire in background (Alarms, Background Transfers, Background Agents, ecc.). Ricordo, come ho detto sia all’inizio che alla fine della sessione, che sono a completa disposizione nel caso abbiate dei dubbi su quanto vi ho esposto: il form di contatto del mio blog è lì per questo Smile

Se non avete avuto modo di partecipare, ho pubblicato su SlideShare le slide che ho preparato: in più, fra qualche settimana saranno disponibili sul sito ufficiale le registrazioni delle sessioni.

Chiudo il post rinnovando i complimenti agli organizzatori e ringraziando per avermi dato la possibilità di dare il mio contributo in questa bellissima occasione!


WhyMCA , Windows Phone , Microsoft , Mango , Multitasking

0 comments

Sviluppare e testare applicazioni geolocalizzate con GPS Emulator

Print Content | More

msdnlogo

Vi segnalo che su MSDN Italia è stato pubblicato un mio articolo in due parti su come sviluppare un’applicazione che fa uso dei servizi di geolocalizzazione di Windows Phone e su come testarla con GPS Emulator, un tool sviluppato dal team di Windows Phone che vi permette di simulare la posizione del segnale GPS fissando dei punti su una mappa di Bing Map.

Se vi interessa l’argomento, leggetelo con attenzione: fra qualche giorno pubblicherò un tutorial sul mio blog che vi mostrerà come utilizzare un controllo Bing Maps in un’applicazione Windows Phone e che richiederà come conoscenza base proprio gli argomenti trattati nell’articolo pubblicato su MSDN.

Ecco i link:

Buona lettura!


Windows Phone , Microsoft , Msdn

0 comments

Altre novità su Mango svelate al TechEd North America

Print Content | More

Con l’avvicinarsi del 24 di Maggio stanno emergendo pian piano altre informazioni riguardo le novità che verranno introdotte in Mango dal punto di vista dell’utente finale. Se siete sviluppatori o professionisti del mondo IT (legato soprattutto agli ambienti Microsoft), saprete che ieri è iniziato il Tech Ed ad Atlanta, una delle più importanti conferenze del settore.

Il taglio, rispetto al MIX ad esempio, è molto più “business”: ecco perciò che si è parlato soprattutto di cloud, di ALM e di virtualizzazione. C’è stato spazio però anche per Windows Phone: Microsoft ha infatti colto l’occasione per presentare alcune novità che verranno introdotte in Mango pensate soprattutto per il mondo business. Vediamole insieme:

  • Novità in Outlook: verrà introdotta la possibilità di raggruppare le mail per conversazione e di “pinnare” direttamente in home page le cartelle della nostra casella, così da poterci accedere più agevolmente. In caso di account Exchange, inoltre, avremo inoltre la possibilità di estendere la ricerca non solo alle mail scaricate sul device ma anche a quelle più vecchie memorizzate sul server.
  • Integrazione con Office 365 e Skydrive: del supporto a Skydrive incluso in Office si sapeva già, l’integrazione con Office 365 è invece una novità molto gradita, che ci darà la possibilità di caricare e modificare i documenti salvati nel cloud direttamente dal device.
  • Lync: Lync è il nuovo strumento di comunicazione aziendale introdotto con Office 365. Potete pensarlo come una sorta di Messenger aziendale, che offre servizi di instant messaging, video conferenza, condivisione file, ecc. Mango integrerà un client Lync, che ci permetterà di interagire con i nostri contatti aziendali esattamente come facciamo con il client tradizionale.

In più, Mango introdurrà tutta una serie di feature minori, ma non per questo meno importanti, come il supporto alle reti Wi-Fi nascoste e a IRM (Information Rights Management), un sistema usato solitamente nelle grandi imprese per proteggere i documenti aziendali (ad esempio, consente di impedire l’inoltro delle mail).

Qualche altra indiscrezione sulle novità consumer

Settimana scorsa la trasmissione Windows Phone Dev Podcast aveva svelato alcune delle novità ancora tenute nascoste che verranno introdotte in Mango per gli utenti finali: questa settimana i creatori della trasmissione non sono stati da meno e hanno avuto modo di darci un altro assaggio di quello che ci aspetterà a fine anno:

  • Supporto alla chat direttamente nell’hub People, tramite Messenger e Facebook.
  • Restyling grafico dell’hub Games, più in linea con il look & feel dell’XBox 360, e nuove funzioni di sincronizzazione.
  • Possibilità di raggruppare i contatti in gruppi, per invii di SMS o mail massivi.
  • Possibilità, in fase di riproduzione di musica, di mostrare nella lock screen la copertina del cd che si sta ascoltando.

Si parla inoltre di nuove funzioni per il risparmio della batteria e per l’utilizzo del device come hotspot Wi-Fi. E’ bene sottolineare però che tutte queste novità sono per ora solamente delle indiscrezioni (anche se supportate da screenshot), al contrario delle novità emerse settimana scorsa che erano state presentate da Brandon Watson in persona. Il 24 Maggio comunque è ormai vicino, settimana prossima sapremo con certezza quali funzionalità entreranno a far parte delle novità di Mango.

Vi lascio con una serie di screenshot sia delle funzionalità business presentate al TechEd che di quelle emerse durante il podcast.

Threaded email, coming in the next version of Windows Phone, makes it even easeir to keep track of who said what. By popular request, the next version of Windows Phone also makes it possible to read rights-managed emails. Lync Mobile brings Microsoft Lync to your phone so it's easy to keep in touch with co-workers.
Messaging Office Hub Games Hub
Group Contacts Artist on Lock Screen  


Windows Phone , Microsoft , Mango , TechEd , Lync , Office 365 , SkyDrive , Outlook

1 comments

Nuovo aggiornamento delle guidelines di Windows Phone

Print Content | More

Tramite un comunicato sul blog ufficiale del team, Microsoft ha aggiornato le linee guida che le applicazioni Windows Phone devono rispettare per poter superare la fase di certificazione per la pubblicazione sul Marketplace. Microsoft, inoltre, ha approfittato dell’occasione per introdurre anche alcune modifiche al formato della documentazione.

Vediamo le novità:

Modifiche alle guidelines

2.14 Your application must have distinct, substantial and legitimate content and purpose other than merely launching a webpage.

Questa nuova regola è stata introdotta con lo scopo di limitare le molte applicazioni che fungono da semplice “aggregatore di contenuti” che vengono quotidianamente pubblicate sul Marketplace: in soldoni, non sarà più possibile pubblicare applicazioni che si limitano a visualizzare una serie di link che aprono pagine web su Internet Explorer, ma dovranno offrire un maggior numero di contenuti che sfruttino al meglio le caratteristiche della piattaforma.

3.7 (part) Applications that enable legal gambling in the applicable jurisdiction where legal gambling is allowed may be permitted, subject to the Application Provider's acceptance of additional contract terms.

Questa regola “ammorbidisce” un po’ la linea dura nei confronti di applicazioni legate al mondo delle scommesse, ammettendo quelle legate al mondo delle scommesse legalizzate.

4.7.1 Applicable application tile images

Il team di Windows Phone chiede una maggiore attenzione ai dettagli, invitando gli sviluppatori a realizzare delle icone per le proprie applicazioni che siano rappresentative dell’applicazione stessa.

5.1.3 Application Responsiveness: If an application performs an operation that causes the device to appear to be unresponsive for more than three seconds, such as downloading data over a network connection, the application must display a visual progress or busy indicator.

Le linee guida di Windows Phone imponevano già in passato allo sviluppatori di indicare in maniera visuale (ad esempio, con una progress bar) ogni qualvolta l’applicazione stesse caricando dei dati, bloccando così l’interazione con l’interfaccia. Ora questa regola è stata modificata introducendo un riferimento temporale ben preciso: l’utilizzo di un indicatore visuale è richiesto ogni qualvolta l’operazione di caricamento (e il conseguente blocco della UI) richieda più di tre secondi per essere completata.

6.5.4 The SoundEffect class must not be used to play a continuous background music track in an application.

Anche questa regola era già presente, ma è stata rafforzata: se nelle linee guida precedenti si trattava solamente di un consiglio, ora è invece diventato un obbligo. Non si deve in alcun modo utilizzare la classe SoundEffect di XNA per riprodurre musica in background all’interno della nostra applicazione. L’oggetto disponibile tra le API di Windows Phone per questo scopo è MediaPlayer.

Integrazione con la documentazione MSDN

La nuova documentazione non è più, come in passato, un PDF distribuito tramite App Hub ma è stata integrata nella documentazione MSDN relativa a Windows Phone ed è disponibile all’indirizzo http://go.microsoft.com/fwlink/?LinkID=183220.

Test steps

Nella migrazione al nuovo formato (da PDF a pagine web del portale MSDN) sono stati introdotti i test steps: per ognuno dei punti delle guidelines troverete questa nuova voce che vi indicherà passo per passo quali sono le operazioni da compiere per verificare che quel punto venga rispettato.

Appuntamento al 3 di Giugno!

Queste nuove linee guida saranno valide a partire dal 3 di Giugno: dopo tale data, le applicazioni inviate che non rispetteranno i punti segnalati in precedenza non verranno più accettate. Ovviamente, il mio consiglio è quello di mettervi in pari già da adesso: se avete intenzione di pubblicare un’applicazione prima di tale data, assicuratevi che anche questi nuovi punti vengano rispettati, così da evitare brutte sorprese ed avere problemi poi in futuro.


Windows Phone , Microsoft , Marketplace

3 comments

“A VIP Preview”: un nuovo evento su Mango il 24 Maggio

Print Content | More

11x0509n8adsfvx

Microsoft ha spedito nei giorni scorsi un invito per un evento dedicato a Mango che si terrà il 24 Maggio alle 10 (ora americana). Non ci sono dettagli su cosa verrà presentato, ma il testo dell’invito è abbastanza eloquente:

On May 24th we lift the curtain on the next major release of Windows Phone

ovvero il 24 Maggio sveleremo la nuova versione di Windows Phone.

E’ probabile perciò che in questa data:

  • Verrà rilasciata la prima beta dei tool di sviluppo per Mango: al MIX, infatti, era stato fissato il mese di Maggio come data per il rilascio.
  • Verranno svelate le novità che introdurra Mango dal punto di vista utente, le quali sono ancora sconosciute per la maggior parte (se escludiamo quelle che sono state svelate al Mobile World Congress, come Internet Explorer 9, l’integrazione con Twitter o il supporto completo a Skydrive).

A suggellare la seconda ipotesi ci ha pensato Brandon Watson, uno dei responsabili dello sviluppo di Windows Phone, che nell’ultimo episodio di Windows Phone Dev Podcast ha anticipato alcune di queste novità:

  • Bing Audio: una sorta di Shazam integrato in Bing, che vi permetterà di identificare titolo e autore di una canzone semplicemente facendola “ascoltare” al telefono.
  • Bing Visual: un servizio che vi permetterà di scansire codici QR, copertine di libri o cd , codici a barre, ecc. e di visualizzare le informazioni collegate.
  • Navigazione integrata in Bing Maps, tramite l’introduzione delle indicazioni vocali turn by turn in grado di guidare l’utente durante il percorso.
  • Supporto vocale per gli sms, con la possibilità di dettare un sms invece che scriverlo.
  • Supporto integrato per i podcast, con funzioni di ricerca, download e riproduzione.

In più, sono circolate voci (non ancora confermate) di una possibile integrazione di Messenger direttamente all’interno dell’hub People, con la possibilità di spedire messaggi in tempo reale ai nostri contatti in linea.

Vi lascio con una serie di screenshot delle nuove funzionalità e vi do appuntamento dopo il 24 Maggio per scoprire insieme le novità annunciate!

BingImage1 BingImage2 BingImage3
Drive1 Podcast4 Podcast3
     


Windows Phone , Microsoft , Mango

0 comments

Push notifications: realizziamo l’applicazione Windows Phone

Print Content | More

Dopo aver messo in piedi il servizio e l’applicazione server necessarie per l’invio delle notifiche push, è giunto il momento di realizzare il client vero e proprio per Windows Phone che riceverà le notifiche. Come già spiegato in precedenza, ogni device che vuole utilizzare le notifiche push deve aprire un canale (identificato da un URL) verso il Push Notification Server di Microsoft. Questo è proprio quello che andremo a fare nell’applicazione: apriremo un canale e, una volta ottenuto l’URL, lo memorizzeremo sul database grazie al servizio WCF che abbiamo creato in precedenza.

Vediamo come fare.

Il client Windows Phone

L’interfaccia grafica che useremo non ha bisogno di commenti: ci limiteremo infatti a inserire un pulsante che, alla pressione, andrà a registrare e aprire il canale. In una applicazione reale, questa operazione potrebbe essere fatta nella pagina delle impostazioni, in cui l’utente può scegliere se attivare o meno la ricezione delle notifiche (ricordatevi che per le notifiche toast questa richiesta è obbligatoria, pena il rifiuto dell’applicazione durante la fase di certificazione).

Partiamo dal vedere cosa succede nel momento in cui premiamo il pulsante per registrare il canale:

private void btnRegisterChannel_Click(object sender, RoutedEventArgs e)
{
    Channel = HttpNotificationChannel.Find(CHANNEL_NAME);
    if (Channel == null)
    {
        Channel = new HttpNotificationChannel(CHANNEL_NAME);
        Channel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(Channel_ChannelUriUpdated);
        Channel.ShellToastNotificationReceived += new EventHandler<NotificationEventArgs>(Channel_ShellToastNotificationReceived);
        Channel.HttpNotificationReceived += new EventHandler<HttpNotificationEventArgs>(Channel_HttpNotificationReceived);
        Channel.Open();
        Channel.BindToShellToast();
        Channel.BindToShellTile();
    }
    else
    {
        Channel.ChannelUriUpdated+=new EventHandler<NotificationChannelUriEventArgs>(Channel_ChannelUriUpdated);
        Channel.ShellToastNotificationReceived += new EventHandler<NotificationEventArgs>(Channel_ShellToastNotificationReceived);
        Channel.HttpNotificationReceived+=new EventHandler<HttpNotificationEventArgs>(Channel_HttpNotificationReceived);
        ChannelUri = Channel.ChannelUri;
    }
}

L’oggetto fulcro dell’operazione è Channel, di tipo HttpNotificationChannel. Ogni canale è identificato da un nome ben preciso, che nel nostro caso abbiamo memorizzato in una costante chiamata CHANNEL_NAME.

Come prima cosa, viene richiesto al Microsoft Push Notification Server se esiste già un canale con quel nome, sfruttando il metodo statico Find esposto dalla classe HttpNotificationChannel. In caso non esista, la richiesta non ritornerà alcun oggetto e perciò il nostro oggetto Channel, non essendo mai stato istanziato, sarà a null. In questo caso, andremo a creare il canale prima di effettuare qualsiasi altra operazione, altrimenti sfrutteremo quello già esistente.

Il canale viene creato semplicemente istanziando il nostro oggetto Channel e specificandone il nome. Dopodichè dobbiamo aprire la connessione (tramite il metodo Open) e scegliere a quali notifiche push vogliamo sottoscrivere l’applicazione. Per le notifiche di tipo RAW non c’è bisogno di specificare alcunchè, altrimenti possiamo usare i metodi BindToShellToast per iscriverci alle notifiche toast e BindToShellTile per iscriverci alle notifiche tile.

Dopodichè abbiamo a disposizione una serie di eventi che possiamo sottoscrivere, sia in caso il canale sia appena stato creato sia che esista già.

L’evento ChannelUriUpdated

L’evento principale è ChannelUriUpdated, che viene invocato nel momento in cui la richiesta di apertura del canale è stata elaborata e il MPNS ce ne ha restituito l’URL. Vediamo cosa succede nel momento in cui viene scatenato questo evento:

void Channel_ChannelUriUpdated(object sender, NotificationChannelUriEventArgs e)
{
    ChannelUri = e.ChannelUri;
    PushServiceClient client = new PushServiceClient("BasicHttpBinding_IPushService");

    IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;

    Guid guid;

    if (settings.Contains("guid"))
        guid = (Guid)settings["guid"];
    else
    {
        guid = Guid.NewGuid();
        settings.Add("guid", guid);
    }

    client.SaveChannelUriCompleted += (obj, args) => MessageBox.Show("Channel saved");
    client.SaveChannelUriAsync(e.ChannelUri.ToString(), guid);
}

Il metodo restituisce tra gli argomenti di ritorno, all’interno della proprietà ChannelUri, l’URL del canale, che provvediamo a memorizzare nella variabile ChannelUri. Quello che dobbiamo fare ora è comunicare al nostro servizio WCF che abbiamo un nuovo device che si è registrato da memorizzare nel database: ecco perciò che creiamo una nuova istanza del servizio PushServiceClient, così da poterne utilizzare il metodo SaveChannelUri definito qualche post fa.

Se vi ricordate, abbiamo deciso in fase di definizione del servizio WCF di utilizzare il tipo Guid per identificare univocamente il device: lo stratagemma che utilizziamo è quello, quando il canale viene creato per la prima volta, di salvare nell’Isolated Storage l’id, così che quando l’applicazione verrà avviata le volte successive venga mantenuto sempre lo stesso id. Ecco perciò che andiamo a controllare se tale id esiste nell’Isolated Storage (grazie alla classe IsolatedStorageSettings): in caso negativo ne generiamo uno nuovo. In qualsiasi caso, questo sarà l’id che passeremo al servizio: se ci ricordiamo la definizione del metodo SaveChannelUri, ci penserà lui a determinare se si tratta di una operazione di aggiornamento o di inserimento ex-novo.

Infine, chiamiamo il metodo SaveChannelUriAsync (generato in fase di importazione del servizio da Visual Studio) passando come parameri l’URL del canale e l’id. Ci sottoscriviamo anche all’evento SaveChannelUriCompleted, che viene invocato nel momento in cui il device è stato salvato sul database: il metodo non include alcuna informazione di ritorno, perciò ci limitiamo a mostrare un messaggio a video che notifica l’esito dell’operazione.

Nota importante: ci siamo sottoscritti a questo evento sia in caso di creazione ex-novo del canale che in caso questi esista già. Questo perchè l’URL associato al canale potrebbe cambiare: quello che ci aspettiamo è che, alla creazione del canale, l’evento ChannelUriUpdated venga sempre scatenato. Se il canale esiste già, invece, questo evento potrebbe non essere invocato, nel caso in cui l’URL restituito dal MPNS rimanga invariato.

L’evento ShellToastNotificationReceived

Sappiamo bene che la caratteristica principale delle notifiche toast è quella di poter essere ricevute anche (e soprattutto) quando l’applicazione è chiusa: non tutti sanno però che tali notifiche possono essere intercettate anche ad applicazione aperta, nel caso in cui l’invio della notifica da parte dell’applicazione server coincida con un momento in cui l’utente sta utilizzando la nostra app.

L’evento ShellToastNotificationReceived serve proprio a questo: viene scatenato nel momento in cui riceviamo una notifica toast relativa all’app che stiamo usando in quel momento e possiamo gestirlo nel modo che riteniamo più adatto.

void Channel_ShellToastNotificationReceived(object sender, NotificationEventArgs e)
{
    Dispatcher.BeginInvoke(() => MessageBox.Show("Toast received"));
}

In questo semplicissimo esempio ci limitamo a mostrare un messaggio a video, utilizzando il Dispatcher di Silverlight dato che l’evento di callback viene eseguito in un thread diverso da quello che gestisce la UI (e quindi non sarebbe in grado di mostrare il MessageBox).

L’evento HttpNotificationReceived

Le notifiche RAW, al contrario di quelle toast e tile, possono essere ricevute solo ad applicazione aperta: l’evento HttpNotificationReceived viene scatenato proprio nel momento in cui è stata ricevuta una notifica di tipo RAW. Occhio che c’è un particolare rispetto alle altre notifiche: la notifica RAW, potendo veicolare qualsiasi tipo di informazione, contiene uno stream di dati generico e non un on oggetto specifico (come una stringa). Nell’esempio che vediamo qui di seguito, prendiamo lo stream in arrivo e lo convertiamo in una stringa, dato che nell’applicazione server abbiamo fatto l’opposto, ovvero abbiamo convertito la stringa in un array di byte, come possiamo vedere di seguito:

RawPushNotificationMessage raw = new RawPushNotificationMessage
{
    RawData = Encoding.ASCII.GetBytes(rawMessage),
    SendPriority = MessageSendPriority.High
};

Ecco invece l’evento HttpNotificationReceived vero e proprio:

void Channel_HttpNotificationReceived(object sender, HttpNotificationEventArgs e)
{
    string message;
    using (StreamReader reader = new StreamReader(e.Notification.Body))
    {
        message = reader.ReadToEnd();
    }
    Dispatcher.BeginInvoke(() => MessageBox.Show(message));
}

E per quanto riguarda le notifiche tile?

Per le notifiche tile non esiste alcun evento dedicato, dato che non possono essere intercettate all’interno dell’applicazione: se vogliamo usarle, l’importante è abilitare l’applicazione alla ricezione chiamando il metodo BindToShellTile in fase di creazione del canale.

Testiamo il tutto!

Testare se tutto funziona correttamente è molto semplice: lanciamo contemporaneamente sia l’applicazione client che quella server (facendo tasto destro su entrambi i progetti e scegliendo Debug – Start new istance siamo in grado di lanciarle entrambe, mantenedo il debugger di Visual Studio collegato a tutte e due). Una volta aperto l’emulatore di Windows Phone, premiamo sul pulsante Register channel e rimaniamo in attesa del messaggio di conferma di registrazione del canale. A questo punto possiamo usare l’applicazione server per spedire i tre tipi di notifiche: ricordiamoci che per testare le notifiche tile dobbiamo prima pinnare l’icona in home page, altrimenti l’esito dell’invio sarà negativo.

toast tile raw

Conclusione

E’ stato lungo ma è stato un bel viaggio: spero che questa serie di tutorial vi sia servita per familiarizzare con le notifiche push. Ovviamente non vuole essere un tutorial esaustivo al 100%, ma spero che vi abbia fornito almeno le basi per gestire gli scenari reali che andrete a realizzare nelle vostre applicazioni.

Di seguito trovate il link per scaricare il codice sorgente della soluzione con tutti i progetti: client WPF, client Windows Phone e servizio WCF.

Scarica il codice sorgente


Windows Phone , Microsoft , Push notifications

1 comments

Push notifications: realizziamo l’applicazione server

Print Content | More

Nel post precedente abbiamo realizzato il servizio che, per il nostro progetto di esempio sulle notifiche push, fa da ponte tra l’applicazione server e la nostra applicazione Windows Phone. E’ giunto il momento di realizzare l’applicazione server vera e propria, che si occuperà di inviare le notifiche push verso i device registrati

Premessa: l’esempio che andremo a realizzare è molto semplice, in uno scenario reale avrebbe senso implementare nella nostra applicazione molte più feature. Ci torneremo in un secondo momento.

Mettiamoci al lavoro: un client WPF

La tecnologia scelta per realizzare l’applicazione server è WPF, il “fratello maggiore” di Silverlight. Realizzeremo una semplicissima applicazione Windows che, alla pressione di un tasto, invierà la notifica al device e mostrerà a video la risposta ottenuta dal Microsoft Push Notification Server (che, vi ricordo, è il servizio on the cloud di Microsoft che si occupa di inviare le notifiche ai device per conto vostro).

Apriamo Visual Studio e, nella stessa soluzione che abbiamo creato nel post precedente per il servizio, aggiungiamo un nuovo progetto di tipo WPF Application (che troviamo sotto la voce Windows).

Come prima cosa cosa, dobbiamo predisporre l’applicazione per utilizzare la Push Notication Server Library di Microsoft: come anticipato nel post introduttivo a questo tutorial, si tratta di una “recipe” pubblicata dal team di Windows Phone che vi facilità la vita nella gestione delle notifiche push nella vostra applicazione server. Come sapete, le notifiche push non sono nient’altro che XML che vengono spediti tramite una chiamata HTTP in POST verso l’URL del canale: in condizioni normali, nella vostra applicazione dovreste definire il formato dei vari XML, aggiungere tutti gli header necessari, formattarli correttamente e poi, dopo l’invio, predisporvi a leggere la risposta del Push Notification Server. La libreria di Microsoft vi fa risparmiare tempo, facendo tutto questo per voi ed evitando di dover riscrivere sempre lo stesso codice in ogni progetto: tale libreria vi mette a disposizione tre oggetti diversi, uno per ogni tipo di notifica push, che accettano in input i vari parametri che identificano la notifica (ad esempio, nel caso di una notifica toast titolo e messaggio) e che espongono il metodo Send, che effettua l’invio vero e proprio, e che tramite un evento di callback, vi restituisce le informazioni sull’esito dell’operazione.

Scarichiamo perciò la recipe dal sito ufficiale e scompattiamola in una cartella: uno dei progetti contenuti all’interno della soluzione si chiama WindowsPhone.Recipes.Push.Messasges. Questa è la libreria vera e propria, che dovremo aggiungere allla nostra soluzione: possiamo aggiungere direttamente l’intero progetto (tasto destro sulla soluzione e scegliamo Add Existing Project) oppure possiamo aprirlo, compilarlo e aggiungere solo una reference alla DLL chiamata WindowsPhone.Recipes.Push.Messasges.dll.

Ora che è tutto pronto possiamo iniziare lo sviluppo e vero proprio. Partiamo dall’interfaccia grafica, molto semplice, ovvero tre pulsanti per inviare i tre tipi di notifica esistenti. Ecco il codice della MainWindow.xaml, ovvero la pagina che viene caricata all’avvio della nostra applicazione.

<Grid>
    <Button Content="Send toast" Height="23" HorizontalAlignment="Left" Margin="33,27,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click" />
    <Button Content="Send tile" Height="23" HorizontalAlignment="Left" Margin="155,27,0,0"  VerticalAlignment="Top" Width="75" Click="Button_Click_1"/>
    <Button Content="Send raw" Height="23" HorizontalAlignment="Left" Margin="279,27,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click_2" />
</Grid>

Il secondo step è quello di aggiungere una reference al nostro servizio WCF, così da poter recuperare l’elenco dei device: clicchiamo con il tasto destro sul nostro progetto e scegliamo Add Service Reference. Dato che il servizio fa parte della stessa soluzione, non abbiamo bisogno di fare l’host su un server Web, ma ci penserà direttamente Visual Studio. Ci basta premere il pulsante Discover e automaticamente verranno trovati tutti i servizi disponibili: a questo punto possiamo aggiungere una reference a PushService.

Vediamo ora il codice di esempio dell’evento Button_Click, che viene invocato quando mandiamo una notifica toast a tutti i device.

private void Button_Click(object sender, RoutedEventArgs e)
{
    List<Device> devices = new List<Device>();

    PushServiceClient client = new PushServiceClient();
    ToastPushNotificationMessage toast = new ToastPushNotificationMessage
    {
        SendPriority = MessageSendPriority.High,
        SubTitle = "Subtitle",
        Title = "Title"
    };

    client.RetrieveAllDevicesCompleted += (obj, parameter) =>
                                              {
                                                  devices = parameter.Result;
                                                  foreach (Device device in devices)
                                                  {
                                                      toast.SendAsync(new Uri(device.ChannelUri),
                                                                      result =>
                                                                      MessageBox.Show(
                                                                          result.NotificationStatus.ToString()),
                                                                      error =>
                                                                      MessageBox.Show(error.Exception.Message));
                                                  }
                                              };
    client.RetrieveAllDevicesAsync();
}

La prima cosa che facciamo è definire la nostra notifica, creando una nuova istanza della classe ToastPushNotificationMessage. Ogni notifica espone proprietà specifiche per il suo tipo: ecco perciò che questo oggetto espone le proprietà Title e SubTitle, la notifica di tipo Tile espone invece le proprietà Count e BackgroundImageUri e così via. Una proprietà in comune a tutti è SendPriority, che identifica la priorità che ha la nostra notifica. Viene accettato uno dei tre valori dell’enumeratore di tipo MessageSendPriority, ovvero Low, Medium e High. Più è bassa la priorità, maggiore sarà il tempo necessario affinchè questa venga ricevuta dal device. Siccome in questo momento vogliamo testare subito se la nostra applicazione funziona, utilizziamo la priorità High, che consiste nell’invio in tempo reale.

E’ giunto il momento di chiamare il nostro servizio per recuperare tutti i device: creiamo una istanza del PushServiceClient e ci sottoscriviamo all’evento RetrieveAllDevicesCompleted, che viene invocato nel momento in cui il servizio ha terminato le operazioni lato server ed ha restituito il risultato dell’elaborazione. La sintassi che utilizziamo è quella degli anonymous delegates, ovvero non definiamo un nuovo evento con un nome ben preciso al di fuori del blocco di codice corrente  ma lo facciamo direttamente inline. In questo modo, possiamo accedere agli oggetti e alle variabili dichiarate all’interno del metodo Button_Click (nel nostro caso, l’oggetto toast) senza bisogno ad esempio di definirle come variabili globali.

L’oggetto parameter (che contiene gli argomenti di ritorno della callback) espone la proprietà Result, che contiene il risultato dell’elaborazione, ovvero la collection con tutti i device memorizzati nel database. Con un ciclo foreach passiamo in rassegna tutti i device disponibili e, per ognuno di essi, chiamiamo il metodo SendAsync esposto dalla notifica (di questo metodo esiste anche la versione sincrona, chiamata semplicemente Send, ma per evitare che la UI della nostra applicazioni si blocchi fino a che non è stata ricevuta una risposta ho preferito usare il metodo asincrono).

Il metodo SendAsync accetta tre parametrI:

  • l’URL del canale a cui spedira la notifica, di tipo Uri, che recuperiamo dall’oggetto di tipo Device che stiamo iterando in quel momento.
  • Un evento di callback che viene chiamato nel momento  in cui l’operazione è andata a buon fine. Nel nostro caso, mostriamo semplicemente un messaggio a video con lo stato dell’invio.
  • Un evento di callbak che viene chiamato nel momento in cui si è verificato un errore. Nel nostro caso, mostriamo un messaggio di errore con l’eccezione.

L’argomento di ritorno del metodo SendAsync (nel nostro esempio si chiama Result) espone parecchie informazioni sull’esito dell’invio (come il codice della risposta), che sarebbe utile mantenere e tracciare in una applicazione client più completa.

Come dicevo all’inizio, infatti, l’esempio che abbiamo realizzato è molto semplice. Un client vero e proprio potrebbe implementare una serie di feature ulteriori quali:

  • Salvare in un database lo storico delle risposte ricevute in seguito agli invii delle notifiche, così da mantenere per ogni device un log di quello che è stato fatto.
  • Sfruttare i codici di ritorno per implementare un rudimentale QoS: il Push Notification Service di Microsoft infatti non offre un servizio che assicuri la corretta ricezione della notifica, ma si limita a riportarvi l’esito dell’invio. Sarebbe interessante implementare, ad esempio, un meccanismo di retry automatico dell’invio dopo un certo periodo di tempo nel caso in cui la notifica sia stata rifiutata per problemi di connettività (ad esempio, il device si trovava in quel momento in una zona dove non c’era segnale). Oppure ancora un meccanismo di fallback, per cui se ad esempio inviamo una notifica raw ma il MPNS ci risponde che l’applicazione in quel momento è chiusa, optare per una toast.
  • Dare la possibilità di inviare una notifica ad un singolo device (o ad un gruppo di device): abbiamo già implementato un metodo nel servizio per ottenere questo risultato, ma al momento non è stato utilizzato nella realizzazione dell’applicazione server.

Largo alla fantasia perciò: scopo di questo post era darvi le basi necessarie per capire il meccanismo di invio delle notifiche push e la gestione dei relativi messaggi di ritorno. Ora tocca a voi darvi da fare per implementare la soluzione più adatta alle vostre esigenze!

Nel prossimo post vedremo l’unica parte del progetto che ci manca da realizzare: il client Windows Phone che riceverà le notifiche. Alla prossima!


Windows Phone , Microsoft , Push notifications

0 comments