"Today is the day that the Windows Phone team has been driving towards, and we’re very excited to say that we’ve reached the biggest milestone for our internal team – the release to manufacturing (RTM) of Windows Phone 7! While the final integration of Windows Phone 7 with our partners’ hardware, software, and networks is underway, the work of our internal engineering team is largely complete."
Si apre così il post di Terry Mason: http://windowsteamblog.com/windows_phone/b/windowsphone/archive/2010/09/01/windows-phone-7-released-to-manufacturing.aspx.
Ci siamo, manca veramente un niente !
Buon lavoro a tutti.
Senza entrare in polemiche, come saggiamente abbiamo sempre evitato in questa community, e, non potendo avere, da tecnico, nessuna idea su quale sarà il successo di Windows Phone 7 sul mercato mondiale, dopo aver potuto usare il telefono per qualche altra giornata, posso affermare che, sempre come mia opinione personale, non tornerei indietro.
Ho avuto un iPhone negli ultimi mesi e l’ho sempre apprezzato, ma l’interfaccia di Windows Phone 7 è decisamente più avanti. Forse è scontato visto che è un progetto più recente rispetto a iPhone, ma per me non lo era, visto il successo di quest’ultimo e, il feeling che ho avuto da subito quando lo acquistammo. Diverso il discorso su Android, che, come ho avuto modo di indicare in questo post, secondo me è un sistema che funziona benissimo, è performante (più di Windows Mobile 6.5 sullo stesso hardware), non si è praticamente mai piantato, ma, almeno a noi, non è risultato così “bello” da utilizzare. Non gli manca niente, anzi, ma non è così “piacevoli”.
“Bello e piacevole da usare” sono invece due termini che hanno fatto la fortuna di iPhone. Se iPhone è “Bello e piacevole” ed è stato innovativo quando venne presentato per la semplicità e accortezza della user interface, Windows Phone 7 lo è ancora di più: l’interfaccià è al tempo stesso professionale e semplice, accattivante ma senza essere solo “giocosa” (puffettosa direbbe Luca), pulita nel disegno quasi da essere troppo pulita, ma al tempo stesso ricco di funzionalità.
Queste impressioni sono condivise dal team in cui lavoro e, come abbiamo sempre fatto in qualunque conferenza, corso, articolo o libro, non sono state suggerite da nessuno: magari fossimo in altri ambienti in cui portare una maglietta con scritto un marchio implica una sponsorizzazione !
Ogni applicazione deve indicare “cosa” vuole usare sul telefono. Questa tabella contiene la spiegazione di ogni voce da indicare.
ID_CAP_NETWORKING
Applications with access to network services. This must be disclosed because services can incur cost when a phone is roaming.
ID_CAP_LOCATION
Applications with access to location services.
ID_CAP_SENSORS
Applications using the Windows Phone sensors.
ID_CAP_MICROPHONE
Applications that use the microphone. The application can record without visual indication that recording is taking place.
ID_CAP_MEDIALIB
Applications that can access the media library.
ID_CAP_GAMERSERVICES
Applications that can interact with Xbox LIVE APIs. This must be disclosed due to privacy issues since data is shared with Xbox.
ID_CAP_PHONEDIALER
Applications that can place phone calls. This may happen without visual indication for the end user.
ID_CAP_PUSH_NOTIFICATION
Applications that can receive push notifications from an Internet service. This must be disclosed as usage could incur roaming charges.
ID_CAP_WEBBROWSERCOMPONENT
Applications that use the web browser component. There are security risks with scripting.
Post non tecnico, ma spero utile per chi ha iniziato a sviluppare applicazioni per Windows Phone 7 o sta per iniziare.
Il ciclo di vita di un software per Windows Phone 7, oltre alle classiche fasi e diverse metodologie che si possono seguire come per qualunque altra soluzione software, comprende, la pubblicazione dell’applicazione sul Marketplace, da dove, gli utenti potranno acquistare e scaricare (o solo scaricare nel caso di Trial e software gratuiti) l’applicazione stessa.
1) Il Windows Phone Developer Portal rappresenta il punto di partenza, da cui, con il proprio Windows Live ID ci si può registrare per utilizzare ai forum, scaricare documentazione, gli strumenti di sviluppo, e, in generale, il materiale di cui abbiamo parlato in più post su questo blog.
2) Se si ha un device e si vuole testare l’applicazione su di esso occorre registrare il telefono come hardware di test per poter debuggare le applicazioni direttamente da Visual Studio. Per farlo si utilizza lo strumento che si installa insieme al WP Developers Tool denominato Windows Phone Developer Registration
3) Scrivere e testare l’applicazione :-)
4) Create il package di installazione (con estensione .XAP) direttamente da Visual Studio tramite il menù contestuale sul progetto
5) Il package viene creato in automatico da Visual Studio e installato sull’emulatore o sul device ogni volta di esegue un debug, un run o un deploy da Visual Studio.
6) Pubblicare l’applicazione. Il package .xap deve essere inviato al Marketplace: il file contiene tutto quello che serve per l’applicazione stessa come il file di manifest, l’icona applicativa (e eventuali icone per i canali se si usano risorse locali), il tile di start, l’eventuale licenza.
7) L’applicazione viene controllata dal personale del marketplace per verificare che sia conforme alle linee guida sia dal punto di vista della user interface (ad esempio non deve contenere riferimenti a materiale pornografico) sia dal punto di vista del funzionamento sul device (ad esempio non deve bloccare una chiamata entrante), sia localizzata nella lingua dei mercati in cui viene proposta.
8) Se il processo di verifica si conclude positiviamente, si può pubblicare l’applicazione nel marketplace attraverso il portale.
9) Il portale offre la possibilità di vedere i feedback degli utenti, analizzare le vendite, controllare l’utilizzo e ovviamente gestire gli aggiornamenti
Poi, speriamo, si inizia a vendere :-)
Il 15/6 avevo avuto l’opportunità di tenere fra le mani un prototipo del nuovo device durante un incontro in Microsoft. Purtroppo, in quella occasione, non ero riuscito a farmi una opinione sul device in quanto 5 minuti di pan/zoom/flip alla ricerca delle varie applicazioni installate non bastano per capire e, visto che non è nel mio stile, dare giudizi affrettati non avevo scritto nessun post.
Settimana scorsa ho avuto la possibilità di testare qualche nostra applicazione sul device fisico e poter testare il device in diverse condizioni. Come sempre, quello che scrivo è semplicemente la mia opinione personale e quella delle persone che, settimana scorsa hanno condiviso con me questa esperienza.
Stiamo sviluppando 5 applicazioni come base di partenza e da questa nostra esperienza sono venuti fuori i post tecnici sul funzionamento delle varie feature hw e sw che, fino a settimana scorsa avevamo pensantemente provato solo sull’emulatore. Durante questo periodo abbiamo sviluppato varie librerie, di cui, alcuni estratti sono stati pubblicati nella sezione Media di ThinkMobile.it.
Abbiamo messo vicino i nostri device: un Windows Mobile 6.5 su base HTC Touch Pro 2, un Android 2.2 su base HTC Desire, un iPhone 3 GS portato a 4.01 e un iPhone 4 nativo. Per giocare abbiamo riesumato un Compaq 2015C (Serie 2930A) con CE 2 e un Compaq C140 con Windows CE 1 del 1997 che incredibilmente ancora si accendono e funzionano (il primo addirittura naviga su internet)
Le 6 persone che compongono lo staff, di cui 1,5 non tecniche (nel senso che 1 persona non fa il nostro lavoro e l’altra ha iniziato da poco ad appassionarsi di tecnologia) hanno dato parere univoco sul device della LG:
1) Carino esteticamente al pari dei due HTC. l’IPhone forse resta un pelino meno “telefono classico” e più “oggetto con un attento design”.
2) Accensione: veloce
3) Occorre una versione particolare dello Zune per sincronizzare il device: interfaccia chiara e decisamente accattivamente rispetto a Windows Mobile Device Center per WM 6.5 e rispetto a iTunes
4) Interfaccia testuale del telefono: la prima impressione su applicazioni più orientate al testo come Outlook, Sms, Calendario è strana, sembra un prototipo da finire; bastano dai 10 ai 15 minuti per abituarsi e percepire la chiarezza dell’interfaccia, la semplicità d’uso e il perfetto allineamento lo Zune che da qualche tempo aveva iniziato la sua trasformazione sulla User Interface. Rispetto a WM 6.5 non c’è ovviamente paragone, così come non c’è con Android. Rispetto ad iPhone, il nostro designer (architetto di professione e designer informatico al 50% del tempo) non ha dubbi sulla validità della nuova interfaccia come chiarezza, navigabilità e “piacevolezza”; forse ci vuole un attimo per percepirne il valore, mentre su un iPhone l’interfaccia della posta e sms è “piacevole” da subito.
5) Interfaccia “media” del telefono: semplicemente spettacolare, parere unanime di tutte e 6 le persone. L’impressione è trovarsi davanti ad una nuova generazione di device. Date un occhio anche alle immagine del marketplace che avevo pubblicato a giugno tramite la nostra applicazione che gira sull’emulatore. In questo campo (e quello delle applicazioni che possiamo scrivere) non c’è veramente storia: siamo molti anni avanti rispetto ai concorrenti. Riporto un paio di immagini dal post di luglio:
La parte di accesso alla musica è ancora più bella come user interface e come user experience in generale. In generale è importante navigare su questa interfaccia per apprezzarne ancora di più le funzionalità.
6) Comodissimo il tasto Back che, per due persone che arrivano dall’iPhone non è immediato come utilizzo, ma, presa la mano, è quasi vitale per navigare nelle pagine di una applicazione e fra appliacazioni
7) Solo dopo qualche ora abbiamo capito la comodità del tasto search (emulato anche dall’emulatore attuale) consente non solo la ricerca generale tramite Bing, ma anche una ricerca contestuale. Non lo avevamo apprezzato nell’emulatore in quanto non avevamo molti contatti in cui cercare oppure messaggi di posta in cui individuare qualche parola.
8) Tastiera: il device ha la tastiera a scomparsa. A me personalmente mi è sembrata in linea con altri buoni device che ho usato: è molto efficace nella scrittura veloce. Ad altre due persone è sembrata incredibile come efficacia, mentre le altre tre persone non hanno mai avuto device con tastiera e quindi i pareri, suppur positivi, non li abbiamo considerati come termine di paragone”.
L’ultima prova fatta dopo 3 giorni in cui abbiamo usato solo questo device, imponendoci di non usare i nostri telefoni attuali, è stato passare il week-end senza toccare device/emulatore di Windows Phone 7.
E’ veramente difficile tornare sui “vecchi device” e questa affermazione, per tutti coloro che intendono investire in WP7, è un’ottima notizia.
Purtroppo non si possono mettere screenshot del device, ma, credo (ancora una volta parere non condivisibile) che l’abito non faccia il monaco :-)
Altre info in settimana.
Allego tutti i post sulle API e feature usciti sul mio blog da giugno in ordine iverso (data in formato americano).
E’ cambiato il formato per l’invio delle notifiche Toast e Tile. E’ rimasto invariato il formato per le notifiche Raw. Non occorre modificare il codice lato telefono, ma solo il codice lato receiver. Toast Il codice seguente, dove notificationMessage...
Windows Phone 7 Beta SDK Bug e soluzione Dopo vari (e vani) tentativi di aggiungere una service reference da un progetto Windows Phone 7 (Silverligth) da Visual Studio 2010 e senza ottenere nessun errore durante la “add” ho scoperto che il classico file Reference.cs era vuoto e non erano stati...
Windows Phone 7 Beta upgrade 5 Con questo post abbiamo quasi finito il porting delle nostre applicazioni e librerie, nonchè le demo e i test alla versione Beta degli SDK. In questo post ci dedichiamo alle modifiche alle classi del servizio Push Notification Per la parte teorica fate...
Windows Phone 7 SDK Beta upgrade 4 Stiamo aggiornando una demo che sfrutta il Location Service e colgo l’occasione per indicare le modifiche rispetto alla versione April CTP come nei precedenti post. La prima modifica è l’assembly da referenziare: adesso è System.Device.dll e prende il...
Phone application inizialization (Beta news) Un’altra modifica alle librerie introdotta con l’SDK uscito lunedì sera riguarda l’inizializzazione delle applicazioni. Come si nota dallo screenshot l’inizializzazione viene fatta da un metodo, presente nella classe App derivata da Application, e richiamato...
Windows Phone 7 SDK Beta upgrade 2 Rispetto al post precedente , occorre prestare attenzione al macro find/replace. Se abbiamo usato la ApplicationBar , presente nel namespace Shell, occorre prestare attenzione al namespace utilizzato. Questo un esempio corretto con il nuovo SDK Beta Attenzione...
Windows Phone 7 SDK Beta upgrade 1 Oggi giornata di upgrade dei vari progetti e demo creati con la versione di Aprile degli strumenti di sviluppo. Il primo progetto, già pubblicato nella sezione media di ThinkMobile.it e oggetto di alcuni articoli usciti sul sito ThinkMobile.it, IoProgrammo...
Windows Phone 7 Beta SDK Tools I primi due strumenti che saltano all’occhio dopo l’installazione dei nuovi strumenti di sviluppo sono sicuramente Developer Phone Registration e XAP Deployment. In entrambi i casi, alcune preview erano disponibili come prodotti separati su CodePlex o...
New Beta Dev Tools for Windows Phone 7 Sono stati appena rilasciati i nuovi strumenti di sviluppo per Windows Phone 7. Il download è pubblico a partire da questo link: http://www.microsoft.com/express/Downloads/#2010-Visual-Phone . Per adesso e probabilmente per il resto del periodo beta sono...
Accelerometer by mouse Ho pubblicato nella sezione media una nostra libreria interna ( http://we.thinkahead.it ), ancora in fase di sviluppo, per simulare l'acceletrometro via mouse durante l'utilizzo dell'emulatore. Il funzionamento è semplice: premere il tasto...
WP7: Formati Audio/Video supportati Audio WAV WAV Audio MP3 MP3 Audio WMA Standard v9 ASF (WMA) Audio AAC-LC (Low Complexity) 3GP, 3G2, MP4, M4A Audio HE-AAC v1 (AAC+) 3GP, 3G2, MP4, M4A Audio HE-AAC v2 (eAAC+) 3GP, 3G2, MP4, M4A Audio Adaptive Multi-Rate Narrow Band (AMR-NB) 3GP, 3G2,...
Articolo Windows Phone 7 E’ uscito un nostro articolo introduttivo sui passi da seguire per scrivere il primo “hello world” con Windows Phone 7, su HTML.it http://aspnet.html.it/articoli/leggi/3419/sviluppare-per-windows-phone-7-la-prima-applicazione/ Domani mattina, durante...
Visual Studio 2010 for Windows Phone Menù Visual Studio 2010 Express for Windows Phone ha serie di menù che non vengono mostrati appena istallato il prodotto. Ad esempio il menù View si presenta così Anche il menù Debug si presenta molto “triste” :-) Nei Settings è però possibile impostare Expert...
Windows Phone 7 Trial Application Fra i vari servizi esposti dal Markeplace (certification, advertising, cross-selling, etc.) esiste il “servizio” di prova di una applicazione. L’idea è molto semplice e nel contempo, molto potente. 1) Come sviluppatori indicheremo al Marketplace se vogliamo...
Windows Phone 7 SMS Chiudiamo questa mini-serie sull’interazione fra codice e API applicative del device/emulatore con un esempio semplicissimo sull’emulatore. Direi che dopo i post precedenti non c’è bisogno di ulteriori spiegazioni sul flusso che stiamo creando: Il tasto...
Windows Phone 7 Camera…from Code Come abbiamo avuto modo di segnalare in altri blog e articoli precedenti, l’emulatore attuale non espone attraverso il menù start tutte le applicazioni che è in grado di supportare. La fotocamera è una di queste applicazioni “nascoste”. Da codice possiamo...
Windows Phone 7 Email from code Come abbiamo visto nell’ultimo post sulla fotocamera, l’emulatore attuale non espone attraverso il menù start tutte le applicazioni che è in grado di supportare. In questo mini-articolo vediamo come attivare la parte di “email” che comprende la composizione...
Windows Phone 7 Input Scope Windows Mobile, iPhone e Android ci hanno abituato a semplificare la vita all’utente durante la digitazione di informazioni. Da sempre, su un device mobile occorre facilitare l’input all’utente agendo su vari fronti. Su Windows Phone 7 è possibile agire...
Windows Phone 7 Location Service Il servizio “Location Service”, come indica il nome stesso, consente di notificare alle applicazioni che lo utilizzano la posizione corrente del device. Il servizio ottiene i dati da fonti diverse in base alle impostazioni (effettuabili da codice) che...
Esempi Windows Phone 7 Nella nuova sezione Windows Phone 7 di ThinkMobile.it ho postato gli esempi relativi ai mini-articoli pubblicati su questo blog. http://thinkmobile.it/media/g/sviluppo/default.aspx
Windows Phone 7 Isolated Storage Come per le applicazioni Silverlight tradizionali, anche sui nuovi Windows Phone 7 sarà possibile utilizzare l’Isoltated Storage per memorizzare informazioni applicative. Vista la natura a Page dell’applicazione è quasi indispensabile salvare lo stato...
WPF 7: DevLeap mini-browser applications Riprendendo una parte di workshop direttamente da MSDN ho ricreato questo piccolo esempio di applicazione client che sfrutta il controllo web browser presente su Windows Phone 7 Si faccia riferimento Windows Phone 7 Intro per una introduzione alla creazione...
E’ cambiato il formato per l’invio delle notifiche Toast e Tile. E’ rimasto invariato il formato per le notifiche Raw.
Non occorre modificare il codice lato telefono, ma solo il codice lato receiver.
Toast
Il codice seguente, dove notificationMessage, è il messaggio da inviare e sendNotificationRequest l’oggetto HttpWebRequest.
notificationMessage = "Content-Type: text/xml\r\nX-WindowsPhone-Target: toast\r\n\r\n" +
"<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<wp:Notification xmlns:wp=\"WPNotification\">" +
"<wp:Toast>" +
"<wp:Text1>" + title + "</wp:Text1>" +
"</wp:Toast>" +
"</wp:Notification>";
sendNotificationRequest.Headers.Add("X-WindowsPhone-Target", "token");
Deve essere modificato con
string notificationMessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<wp:Notification xmlns:wp=\"WPNotification\">" +
"<wp:Toast>" +
"<wp:Text1>Ciao</wp:Text1>" +
"<wp:Text2>Roberto</wp:Text2>" +
"</wp:Toast>" +
"</wp:Notification>";
sendNotificationRequest.Headers.Add("X-WindowsPhone-Target", "toast");
Tile
Anche nei tile è cambiato qualcosa, ma in modo leggermente diverso.
Vecchio codice:
notificationMessage = "Content-Type: text/xml\r\nX-WindowsPhone-Target: token\r\n\r\n" +
"<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<wp:Notification xmlns:wp=\"WPNotification\">" +
"<wp:Tile>” +
“<wp:BackgroundImage>" + imagePath + "</wp:BackgroundImage>";
notificationMessage += "<wp:Count>" + count + "</wp:Count>";
notificationMessage += "<wp:Title>" + title + "</wp:Title>";
notificationMessage += "</wp:Token>" +
"</wp:Notification>";
Nuovo codice (si perde la definizione Content-Type, ma non si cambiano gli header rispetto a Toast)
notificationMessage = "Content-Type: text/xml\r\nX-WindowsPhone-Target: token\r\n\r\n" +
"<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<wp:Notification xmlns:wp=\"WPNotification\">" +
"<wp:Tile>” +
“<wp:BackgroundImage>" + imagePath + "</wp:BackgroundImage>";
notificationMessage += "<wp:Count>" + count + "</wp:Count>";
notificationMessage += "<wp:Title>" + title + "</wp:Title>";
notificationMessage += "</wp:Tile>" +
"</wp:Notification>";
Dopo vari (e vani) tentativi di aggiungere una service reference da un progetto Windows Phone 7 (Silverligth) da Visual Studio 2010 e senza ottenere nessun errore durante la “add” ho scoperto che il classico file Reference.cs era vuoto e non erano stati aggiunte le voci al file ServiceReferences.ClientConfig.
Dopo vari prove ho scoperto che evidentemente Visual Studio 2010 non riesce a eseguire l’aggiunta rispetto al subset di funzionalità del .NET Compact Framework rispetto a WCF.
Per risolvere il problema è sufficiente fare la Add Service Reference da Visual Studio Express for Windows Phone.
E’ il primo problema che trovo usando Visual Studio 2010 “Full”.
Hope useful
Con questo post abbiamo quasi finito il porting delle nostre applicazioni e librerie, nonchè le demo e i test alla versione Beta degli SDK.
In questo post ci dedichiamo alle modifiche alle classi del servizio Push Notification
Per la parte teorica fate riferimento ai due articoli di Mighell:
1) http://thinkmobile.it/blogs/mighell/archive/2010/06/18/microsoft-push-notification-service.aspx
2) http://thinkmobile.it/blogs/mighell/archive/2010/06/20/come-funziona-il-push-notification-service-in-windows-phone-7-series.aspx
Tra l’altro Mighell sta producendo un articolo completo che verrà pubblicato subito prima o subito dopo le ferie.
In questo post intanto anticipo le modifiche alle classi per coloro che hanno lavorato con la April CTP.
La classe NotificationChannelExceptionEventArgs è stata sostituita con NotificationChannelErrorEventArgs. La classe espone le informazioni sul tipo di errore, compreso il nuovo meccanismo di segnalazione del livello della batteria che potrebbe inibile l’arrivo di messaggi.
Ad esempio è possibile individuare i seguenti “Errori”; ho tolto dai vari case il nostro codice reale.
La seconda modifica riguarda il metodo BindToShellNotification che è divento BindToShellTile. Questo metodo accetta l’elenco degli Uri ammessi per l’invio di “risorse da remoto”
L’eccezione NotificationChannelExistException è stata rimossa e non sostituita per semplificare il codice che adesso può
1) Cercare se il canale utilizzato è già aperto (classica Find presente anche nella versione di Marzo)
2) Se il canale non viene trovato, si procede alla creazione e al binding verso la Shell
3) Si può testare IsShellTileBound e IsShellToastBound per evitare di legare nuovamente un canale già aperto alla Shell del telefono. Occhio che non si può eseguire un doppio BindToShell. Nel caso si debbano modificare le impostazioni si può eseguire un Unbind tramite il metodo UnbindToShellTile e UnbindToShellToast
La classe ShellEntryPoint è stata rimossa e adesso è possibile assegnare direttamente gli Uri per le risorse/domini esterni.
L’evento ShellNotificationReceived è diventato ShellToastNotificationReceived.
E’ cambiato anche leggermente il formato per inviare notifiche verso il canale.
Per le notifiche Tile occorre indicare (X-Notification class è in realtà opzionale e vale 1)
sendNotificationRequest.ContentType = "text/xml";
sendNotificationRequest.Headers.Add("X-WindowsPhone-Target", "token");
sendNotificationRequest.Headers.Add("X-NotificationClass", "<batching interval>");
Il messaggio può essere il seguente:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<wp:Notification xmlns:wp=\"WPNotification\">
<wp:Tile>
<wp:BackgroundImage>path</wp:BackgroundImage>
<wp:Count>count</wp:Count>
<wp:Title>tile</wp:Title>
</wp:Tile>
</wp:Notification>
Per i Toast invece occorre (come sempre X-Notification class è opzionale)
sendNotificationRequest.ContentType = "text/xml";
sendNotificationRequest.Headers.Add("X-WindowsPhone-Target", "toast");
sendNotificationRequest.Headers.Add("X-NotificationClass", "<batching interval>");
e il payload è rimasto invariato.
Ecco un esempio di Tile con immagine che “arriva” da internet di una nostra applicazione:

Stiamo aggiornando una demo che sfrutta il Location Service e colgo l’occasione per indicare le modifiche rispetto alla versione April CTP come nei precedenti post.
La prima modifica è l’assembly da referenziare: adesso è System.Device.dll e prende il posto di Microsoft.Devices. In molti post si trova erroneamente l’informazione che il nuovo assembly è Microsoft.Phone.
L’enum GeoPositionAccuracy non contiene più il settaggio Low. Adesso espone Default e High.
Abbiamo ripubblicato la nuova versione aggiornata al SDK Beta della nostra libreria per simulare il servizio via Mouse: il porting è stato velocissimo. Il tutto, comprese le istruzioni, a partire da quì: http://thinkmobile.it/media/p/7011.aspx
Per quanto riguarda invece il supporto alla NetworkInterface occorre rimuovere la reference a Microsoft.Device, che, come indicato all’inizio del post è stato rimossa. Il nuovo namespace è Microsoft.Phone.Net e l’assembly è Microsoft.Phone.
E’ stato modificato il modo con cui recuperare il tipo di interfaccia: la classe adesso espone una proprietà NetworkInterfaceType al posto del metodo GetNetworkInterfaceType…curioso perchè il cambio era stato introdotto al contrario nella versione di Aprile rispetto a Marzo.
Sono stati modificati, e aggiunti, alcuni elementi dell’enum NetworkInterfaceType.
Altre modifiche riguardano gli eventi che la nostra applicazione o semplicemente la singola pagina subisce durante l’interazione
Abbiamo già accennato in un post precedente che è cambiata la firma del metodo OnNavigatedFrom che riceve adesso un argomento di tipo System.Windows.Navigation.NavigationEventArgs.
Il metodo OnOrientationChaging della classe PhoneApplicationPage è stato rimosso; abbiamo a disposizione solo l’evento OnOrientationChanged: in pratica possiamo intercettare il cambio di orientamento al suo termine e non possiamo intervenire durante la fase.
Anche l’indicazione sull’orientamento viene adesso proposta direttamente nello XAML della page al posto del codice presente nel code behind della April CTP.
Le classe WinodwsPhoneEvents è stata rimossa e sostituita dalla classe PhoneApplicationService.
Il codice seguente non è quindi più valido:
così come non sono più validi gli eventi Paused e Resume che avevamo visto in articoli precedenti.
Gli eventi sono stati sostituiti rispettivamente da Deactivated e Activated e sono già cablati nel codice del template di Visual Studio 2010 Express for Windows Phone.
Un’altra modifica alle librerie introdotta con l’SDK uscito lunedì sera riguarda l’inizializzazione delle applicazioni.
Come si nota dallo screenshot l’inizializzazione viene fatta da un metodo, presente nella classe App derivata da Application, e richiamato dal costruttore della classe stessa.
Il metodo controlla se l’inizializzazione è già stata fatta e in caso negativo crea il Frame per lo splash screen (altra novità introdotta da questa beta). Al termine della “navigazione” viene impostato il RootFrame come RootVisual in modo da eseguire il render dell’applicazione.

Rispetto al post precedente, occorre prestare attenzione al macro find/replace.
Se abbiamo usato la ApplicationBar, presente nel namespace Shell, occorre prestare attenzione al namespace utilizzato.
Questo un esempio corretto con il nuovo SDK Beta
Attenzione anche al fatto che ApplicationBarIconButton ha una nuova proprietà Text che non può essere vuota. Assicurarsi di averla utilizzata o rimpierla di conseguenza.
Attenzione anche ad eventuali override del metodo OnNavigatedTo.
La firma del metodo nella versione di Aprile riceveva un argomento di tipo diverso (occhio che il nome è identico quindi cambia solamente il namespace)
protected override void OnNavigatedTo(Microsoft.Phone.Navigation.PhoneNavigationEventArgs e)
{
base.OnNavigatedTo(e);
}
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
}
TextBox
Altra cosa di cui mi sono accorto, ma su sarebbe bene indagare più in profondità è l’altezza di defautl rispetto agli stili dei vari TextBox.
Mentre precedentemente il designer inseriva i TextBox con Height fissa a “32”, adesso il nuovo designer inserisce “72” come value fisso.
Utilizzando il Market Place Launcher, in questa versione si scopre qualcosa sul marketplace.
Appena attivato si presenta così:
La visualizzazione panorama consente di scrollare verso destra per mostrare le varie tipologie di applicazione
Cliccando All si accede alla relativa categoria
per ogni applicazione di esempio si notano le informazioni con relativi screenshots
Buon divertimento !
Oggi giornata di upgrade dei vari progetti e demo creati con la versione di Aprile degli strumenti di sviluppo.
Il primo progetto, già pubblicato nella sezione media di ThinkMobile.it e oggetto di alcuni articoli usciti sul sito ThinkMobile.it, IoProgrammo e Html.it, presenta queste problematiche.
Aprendo il progetto che utilizzava il controllo WebBrowser il designer non si apre e alcune delle reference risultano “rotte”.
Proviamo a risolvere i problemi: nella versione Beta hanno modificato molti assembly e namespace spostando, come spesso accade, le classi durante il refactoring.
Reference
Il progetto April CTP si presentava così:
Per prima cosa i seguenti assembly sono stati unificati in un’unica dll denominata Microsoft.Phone:
Microsoft.Phone.Controls
Microsoft.Phone.Controls.Navigation
Microsoft.Phone.Controls.WebBrowser
Microsoft.Phone.Controls.WebBrowserInterop
Microsoft.Phone.Shell
Microsoft.Phone.Notification
Microsoft.Phone.Execution
Microsoft.Phone.Info
Microsoft.Phone.Tasks
Microsoft.Devices
Occorre quindi eliminare tutte le reference verso i vecchi assembly e aggiungere la reference verso i nuovi.
Sono stati notevolmente semplificate anche le dll sia come numero che come namespace. Questo l’elenco delle nuove librerie (da notare in versione 7.0.0.0):
Visto che l’applicazione presentava una semplice finestra con il controllo web browser abbiamo pochi errori nella parte XAML:
Il primo problema deriva ancora dai assembly referenziati nel file MainPage.xaml. Per risolvere a tappeto il problema consiglio di cercare le seguenti definizioni nei vari file xaml e rimpiazzarle con quanto segue:
Cercare:
clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Navigation
Rimpiazzare con:
clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone
Cercare:
clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.WebBrowser
Rimpiazzare con:
clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone
Cercare:
clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone.Shell
Rimpiazzare con:
clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone
Cercare:
clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls
Rimpiazzare con:
clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone
Il terzo problema riguarda il file app.xaml in quanto le risorse nella versione di aprile erano state inserite direttamente nel file. In questa versione sono inserite come risorse nelle librerie. Per prima cosa occorre rimuovere la sezione <App.Resources> e poi occorre sostituire nei vari xaml delle pagine alcuni nomi di risorse.
Anche in questo caso, Jamie Rodriguez del team di sviluppo, come segnalato da Mighell nel suo post, conviene fare un find/replace:
PhoneTextPageTitle1Style -> PhoneTextNormalStyle
PhoneTextPageTitle2Style –> PhoneTextTitle1Style
PhoneTextApplicationNameStyle –> PhoneTextNormalStyle
PhoneTextTitleNameStyle –> PhoneTextTitle1Style
Ci sono altre incompatiilità a cui dedicheremo un post non appena faremo l’upgrade reale.
Nel nostro primo progetto è sufficiente fare Reload Designer per ottenere il nuovo designer con il “vecchio” form:
F5 e via:
Ultimo punto che conviene fixare è il file di definizione del deploy WMAppManifest.xml. Visto che ci sono varie modifiche da fare il consiglio è ricreare il progetto con lo stesso nome in una directory temporanea e copiare il contenuto di questo file direttamente sul progetto reale.
I primi due strumenti che saltano all’occhio dopo l’installazione dei nuovi strumenti di sviluppo sono sicuramente Developer Phone Registration e XAP Deployment. In entrambi i casi, alcune preview erano disponibili come prodotti separati su CodePlex o su altri siti (ci siamo capiti :-)).
Il primo strumento consente di sbloccare un telefono reale per lo sviluppo e necessità del nostro account Windows Live e della connessione fisica via Zune al device. Ricordo che è possibile sbloccare 3 telefoni per lo sviluppo per ogni Windows Live ID.
Lo strumento si presenta così
A meno che non mi sia perso qualcosa i servizi Zune non sono ancora disponibili per l’Italia (al termine del wizard via web infatti ci viene negato l’accesso), ma il software può essere ugualmente scaricato e istallato.
Il secondo strumento è molto comodo per installare una applicazione sul device o sull’emulatore partendo da un file .xap senza ricorrere a Visual Studio: nella nostra azienda (ThinkAhead, azienda del gruppo DevLeap) ad esempio le due persone che lavorano nel marketing non hanno installato Visual Studio (o comunque, giustamente non lo sanno usare), ma possono testare e verificare l’applicazione sull’emulatore installando semplicemente installando lo XAP che arriva dal reparto sviluppo.
Ad esempio prendendo l’interfaccia di esempio dell’accelerometro la cui libreria è stata postata anche su http://thinkmobile.it/media/p/6977.aspx e premendo il tasto deploy lasciando nella combo l’emulatore come target si effettua il deploy:
Una volta completato il deploy, il nuovo emulatore si presenta con l’applicazione installata:

More Posts
Next page »