Windows Phone Navigation History

Uno degli elementi più controversi della User eXperience di Windows Phone è il tasto back, che per comportarsi “come l’utente si aspetta”, alle volte va gestito da programma.

Per spiegare meglio cosa intendo, utilizzerò un come esempio un’applicazione che richiede l’autenticazione dell’utente tramite Facebook la prima volta che viene utilizzata.

Un’implementazione (all’apparenza ben fatta) potrebbe essere la seguente:

1. All’avvio dell’app, viene mostrata la pagina principale. La logica di programma si accorge di non avere le credenziali dell’utente (dunque è il primo utilizzo) e mostra la pagina di autenticazione;

2. La pagina di autenticazione lancia l’autenticazione (utilizzando ad esempio Facebook SDK for .NET) che mostra la pagina web di Facebook.

3 L’utente immette i dati nella pagina web di Facebook, e si torna alla pagina iniziale dell’app.

image

Peccato che un’applicazione così farebbe drizzare i capelli anche a me che li ho persi da un bel pezzo, perché con quest’applicazione il tasto back si comporterebbe in un modo che l’utente giudicherebbe (eufemisticamente) non corretto.

E il motivo è presto detto:

Ogni volta che viene mostrata una pagina, la pagina precedente viene inserita nello stack “Navigation History”. Ogni volta che si preme il pulsante back, viene mostrata la pagina che sta in cima alla pila, e il riferimento a tale pagina viene rimosso dallo stack. Se lo stack è vuoto, il tasto back chiude l’applicazione.

Dunque nel nostro caso, dopo aver completato l’autenticazione ed essere tornati alla “Main Page”, il nostro stack conterrà i seguenti elementi:

image

Ora, dal punto di vista dell’utente, il tasto back dovrebbe farlo uscire dall’app. Infatti egli è entrato nell’app, ha svolto un lavoro, è tornato al punto di partenza (la “Main Page”) e col tasto back si aspetta di uscire dall’app. Poiché invece lo stack di Navigation History non è vuoto, la pressione del tasto back lo farà tornare nella “Facebook Page” dove gli verrebbe richiesto di nuovo di autenticarsi con Facebook! E peggio ancora, un’eventuale ulteriore pressione del tasto back lo farebbe tornare nella Login Page che automaticamente mostrerebbe la “Facebook Page”, entrando in un loop infinito:

image

Come si risolve il problema?

Utilizzando i vari metodi messi a disposizione dal NavigationService: GoBack() e/o RemoveBackEntry().

Per saperne di più:

- How to navigate using the back stack for Windows Phone

Happy coding!

Paint.NET on steroids

Sono parecchi anni che uso Paint.NET, e per i piccoli lavori sulle immagini Bitmap è sempre stato un ottimo programma. Ma da quando ho scoperto (buon ultimo…) che supporta i plugin e che ve ne sono tantissimi davvero utili e ben fatti, l’ho rivalutato in modo assoluto.

Per i pochi che non lo conoscono, Paint.NET è un programma gratuito scaricabile qui: http://www.getpaint.net/ (free). Poiché la pagina web è piena di pubblicità (e ci può stare, visto che è gratuito), occorre prestare attenzione  a dove cliccate per eseguire il download:

image

image

Ma la cosa più interessante sono i plugin, di cui suggerisco:

1. Icon/Cursor Format Support (comodissimo per convertire una bitmap (png, jpeg, ecc.) in un file .ico)

image

2. Paint.NET PSD Plugin (apre e salva file in formato Photoshop, e il progetto sta su Codeplex)

3. Pyrochild (una libreria di effetti vari, tra i quali GridWarp)

Come esempio, qui sotto l’immagine che ho realizzato con il GridWarp, grazie al quale ho fasciato i due cilindri con le immagini dei logo di SQL Server e di SQLite:

image

Happy painting!

La mia sessione a Codemotion Roma

image

Insieme a Massimo Bonanni e Marco Dal Pino giocheremo a Morra Cinese con Kinect for Windows (Massimo), Perceptual (Marco) e SignalR (io).

Un confronto tra Kinect Vs. Perceptual utilizzando un servizio di matchmaking che gira su SignalR.

Per saperne di più, venite al Codemotion di Roma!

[OT] Una pausa inattesa

Quest'anno per me è iniziato con un po' di problemi di salute, tra denti che me ne hanno fatte vedere di tutti i colori e un'influenza che mi è durata più di un mese, tra l'altro guastandomi il viaggio a Seattle e peggio ancora facendomi saltare i Community days, oltre al Lab di oggi a Roma.

Non volendo, ho fatto preoccupare un sacco di amici, specialmente quando tornato da Seattle ho staccato tutto (telefono e computer) per un'intera settimana. Senza rendermi conto che in un mondo così connesso come il nostro, una settimana diventa un'eternità.

Così sento la necessità di ricominciare a esserci, a partecipare e condividere ciò che apprendo dal mio lavoro e dal mio studio.

Al momento ho vari cantieri aperti, su Windows Phone le due versioni 7.5 e 8 di Decoro Urbano, e un paio di applicazioni per utilizzare i "cicciottini" NFC, mentre sul Web sto implementando un servizio SignalR su Azure per la sessione congiunta con Massimo Bonanni e Marco Dal Pino per Codemotion Roma.

Appena possibile scriverò un articolo su Nokia Maps con una solution di esempi, per farmi perdonare l'assenza ai CDays.

Ultimo ma non meno importante, mi sto studiando TypeMock Isolator, e segnalo che è possibile iscriversi al webinar che si terrà domani:

Appena completato lo studio conto di fare una recensione, le prime prove mi hanno entusiasmato.

Happy coding!

Creare le icone per la ApplicationBar di Windows Phone 8

Secondo quanto riportato nella documentazione ufficiale, le impostazioni delle icone devono essere grandi 48x48 pixel con un background trasparente e con un disegno compreso in un’area centrale di 26x26 pixel di colore bianco. In questo modo il sistema operativo può mostrare l’icona in modo corretto per entrambi gli sfondi (chiaro/scuro) impostabili dall’utente nel tema del telefono.

Ma in Windows Phone 8 sono state introdotte nuove misure di display (WVGA, WXGA e 720p) e per questo motivo le misure sono cambiate, tant’è vero che le icone contenute nella cartella
C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.0\Icons
sono di 76x76 pixel.

Il mio strumento preferito per la realizzazione di icone utili allo sviluppo di applicazioni Windows Store è Syncfusion Metro Studio 2

image

Io lo uso anche anche per creare le icone per la ApplicationBar di Windows Phone 8 seguendo i seguenti passi:

1. Imposto la dimensione a 128x128 pixel, il background a “cerchio” e il foreground a White.

image

2. Regolo il padding intorno ai 30 pixel (ma dipende dall’icona che sto editando, utilizzando il background a “cerchio” per vedere l’effetto che assumerà sul Windows Phone)

3. Una volta regolato il padding imposto il background a “trasparente” (Il cerchio poi verrà aggiunto dal sistema operativo di Windows Phone quindi l’icona non deve averlo)

4. Esporto l’icona in formato “png”.

5. Con un programma di editing, come ad esempio Paint.Net, faccio il ridimensionamento dell’icona a 76x76 pixel.

E il gioco è fatto.

Happy coding!

UPDATE: poiché pare che l’immagine dentro l’icona dev’essere al massimo di 42 pixel e che Syncfusion Metro Studio 2 consente di impostare la dimensione esatta, un modo molto più rapido è il seguente:

1. Imposto la dimensione a 76 pixel, il padding a 17 (76-42 diviso 2) il background a trasparente e il foreground a White:

image

2. Esporto l’icona in formato “png”.

Happy coding!

Orientarsi in un'applicazione: Nokia Maps

Lunedì 28, a Milano, terrò una sessione sul nuovo controllo Nokia Maps per Windows Phone 8.

image

Il programma della giornata è molto denso e interessante, maggiori informazioni qui:

http://share.dotnetlombardia.org/events/130128/default.aspx

Ci si vede a Milano!

E’ tempo di dare un taglio netto al passato!

Oggi, nonostante i pressanti impegni, ho deciso di dedicare un po’ di minuti alla realizzazione di una vignetta che mi era venuta in mente guardando il logo Windows:

E tempo di fare un taglio netto col passato

Ogni riferimento a marchi, tecnologie e quant’altro è assolutamente non casuale :-D

Confido nello spirito autoironico dei miei iAmici…

Win RT Proximity Communication

Con l’uscita di Windows 8 e Windows Phone 8 ci sono nuove possibilità di collegamento tra device:

- NFC (Near Field Communication)
- Bluetooth
- Direct WiFi (da non confondere con WiDi, che serve a collegarsi ad uno schermo TV)

Alcuni scenari possibili:

- App to Device (ad esempio collegare un Windows Phone 8 ad un robot lego tramite Bluetooth/RFCOMM, ovvero il serial port profile che consente l’emulazione di una connessione seriale RS232).

- App to App (ad esempio collegare un Windows Phone 8 con un altro Windows Phone 8 o meglio ancora WP8 con Windows 8)

Al momento sto sperimentando, e quindi questo post è più che altro una raccolta di note e una condivisione di link utili che ho trovato:

Windows Phone 8:

La sessione di Tim Laverty su Build 2012

Proximity for Windows Phone 8

Windows Phone 8: Peer Connection (Bluetooth and Wi-Fi Direct)

Windows 8 (WinRT):

Working with Proximity Device

Working with NFC–Take 2

Proximity and tapping (Windows Store apps using C#/VB/C++ and XAML)

Proximity sample

Windows Phone 8 e WinRT:

PixPresenter sample app

How to Leverage your Code across WP8 and Windows 8 (con la demo di PixPresenter, assolutamente da non perdere)

PeerFinder.AlternateIdentities

Possible keys for AlternateIdentities in Peerfinder

Note:

Il programma di esempio “Proximity sample”, quando gira sul mio Laptop (che non ha Direct-WiFi ma ha Bluetooth) dice che:

- “Tap based discovery of peers not supported” (ovvero manca NFC)

- “Browsing for peers not supported” (ovvero manca la funzionalità Direct-WiFi nella scheda wireless)

quando invece gira sul mio Surface dice solo che:

- Non c’è NFC (i.e. “Tap based discovery of peers not supported”)

In effetti sul mio DELL 1749 ho una scheda Intel Centrino 6200 (che non supporta il DirectWiFi) mentre sul Surface c’è la Marvell AVASTAR wireless-N che supporta Direct-WiFi.

---

Cose da verificare:

PeerFinder su WP8 utilizza NFC, Bluetooth e Direct-WiFi, mentre su WinRT usa solo NFC e Direct-WiFi ?

Un primo indizio si trova nel commento della enumerazione PeerDiscoveryTypes:

None = 0  // No supported discovery types are available. You can't use the PeerFinder class.
Browse = 1 // You can use Wifi-Direct to find peers by using the FindAllPeersAsync and ConnectAsync methods of the PeerFinder class.
Triggered = 2 // You can tap to connect to peers by using the PeerFinder class.

Un secondo indizio si trova sul messaggio fornito da “Proximity sample” sul mio laptop non dotato di Direct-WiFi ma dotato di Bluetooth.

Per il momento, That’s all folks!

Usare Word per postare sul blog

Oggi ho letto su Twitter che Igor e Lorenzo suggerivano di usare Word come sostituto di Live Writer per creare dei post sul blog anche da Windows RT.

In effetti è molto facile:

  1. Andare su File Nuovo, e scegliere il documento di tipo "Post di blog". La prima volta scaricatelo tramite la ricerca, inserendo "Post di blog" nel campo di ricerca modelli online:

  2. Vi apparirà la seguente finestra di creazione:

  3. La prima volta vi chiederà le informazioni di collegamento al vostro blog:

  4. Per prima cosa ci chiede il tipo di blog. Se non è elencato (come nel mio caso) occorre scegliere altro:

  5. Ora occorre impostare l'API (obbligatoriamente MetawebLog) e l'URL. Nel mio caso ho fatto una piccola ricerca sul web per trovare il modo di registrarmi al mio blog e ho scoperto che per il motore SubText (che è il blog engine di UGIdotNET) occorre aggiungere "/services/metablogapi.aspx" all'url principale del mio blog. L'Username e password sono quelli associati al mio blog (i.e. quelli che uso per gestire il mio blog via web):

  6. A questo punto, se tutto è stato ben inserito, si ottiene una finestra di conferma dell'avvenuta registrazione:

  7. E finalmente abbiamo la nostra finestra di editing del post, pronta per noi:

Alcune note d'uso:

  1. Per aprire e modificare i post esistenti sul blog, non utilizzare il comando File Apri di Word ma il pulsante "Open Existing" che si trova sul ribbon.
  2. Nel ribbon non c'è il comando per la gestione del paragrafo, ma lo si trova facilmente col menù contestuale (mouse tasto destro o tap prolungato + altro sul tablet).

E infine, ma non centra nulla con Word, una considerazione:

A me piace "infarcire" i miei post di illustrazioni, mi piacerebbe tanto una versione Windows Store di Paint.NET !

That's all folks!

Dulcis in fundo…

Wow, ho appena appreso che farò una sessione a

image

in fine serata:

image

Devo proprio inventarmi qualche cosa di interessante e divertente, come aperitivo prima di andare tutti insieme a cena!

«maggio»
domlunmarmergiovensab
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678