giovedì 2 febbraio 2012

10 suggerimenti per la costruzione di un App per Windows Phone

Noi tutti amiamo i dispositivi. È un dato di fatto, una delle prime persone fanno le cose con un telefono PC o tablet è di personalizzarlo. Cambiamo sfondi, installare applicazioni, cambiare la suoneria, il tutto per rendere "personalmente la mia." Nel corso dell'ultimo anno, come l'ecosistema applicazione è cresciuta, come pure il numero di applicazioni disponibili. Anche se gli strumenti di sviluppo per la piattaforma Windows Phone sono i migliori del settore per la costruzione di applicazioni mobili, la gamma qualità delle applicazioni sviluppate per Windows Phone è simile ad altre piattaforme. In questo articolo, esploreremo alcuni "trucchi" di sviluppo e capire perché alcune applicazioni (a parte i contenuti) ottenere la risposta dei clienti maggiore di altri. Alcuni problemi sono relativi al codice, mentre altri sono di design-based.


Regola n. 1: Embrace Metro
Per la maggior parte degli smartphone - escluso Windows Phone - la realtà è che al di là di qualche magia stile, sono, in generale, lo stesso. Ognuno ha cromo, indicatori di stato, l'impaginazione, icone delle applicazioni e così via. Questa comunanza a volte porta alla domanda: "Cosa dovrebbe apparire come la mia domanda?" Che cos'è una decisione apparentemente semplice per alcuni è estremamente difficile per gli altri. Alcuni editori per scontato che tutti gli utenti su tutte le piattaforme vuole, o necessità, l'applicazione per lo stesso aspetto. Ciò è comprensibile, ma un presupposto non corretto nella maggior parte dei casi.
Come Phone Microsoft ha progettato Windows, ci sono voluti un approccio diverso da altri smartphone. L'idea di un'applicazione mobile con la sensazione sguardo, e la funzionalità di una applicazione per iPhone di essere utilizzato su Windows Phone sembra innaturale. Allo stesso modo, un'applicazione Windows Phone sarebbe del tutto fuori luogo su un iPhone. Questo porta alla nostra prima regola di sviluppo Windows Phone: Embrace, piuttosto che combattere, l'interfaccia in stile Metro. La vostra applicazione si sentirà naturale a qualsiasi consumatore che usa Windows Phone.
Regola n. 2: lasciare dello spazio
differenza di altre piattaforme di telefono, il design Windows Phone dà piena applicazione edge-to-edge controllo sul layout design. Questo approccio consente al progettista di sentirsi al comando completo. Il cromo e condimenti tipici come il pulsante Indietro, chevron (>) su liste e linee di separazione elemento sono tutti elementi che riempiono lo schermo, senza migliorare l'usabilità complessiva.
Ecco perché la mancanza di questi elementi in Windows Phone non è una svista, invece, è uno sforzo per gli utenti condizione di aspettarsi che quasi ogni pezzo di informazioni in un elenco è perseguibile. Questo è vero per tutte le applicazioni di base che nave come parte del sistema operativo: per le impostazioni, Outlook o hub People, dovrebbe essere chiaro che viste di dettaglio sono disponibili per ogni elemento rappresentato.
Ci vuole un minimo di 24 pixel tra le voci di elenco per l'utente di differenziarli, così, non c'è bisogno di linee (vedi Figura 1). Ulteriori accorgimenti può essere fatto utilizzando diverse dimensioni dei caratteri o colori, ma niente di più di spazio aperto tra gli elementi è abbastanza potente.

[Clicca sull'immagine per ingrandirla.]
Figura 1. Questi elementi sono fortemente differenziate, anche se non ci sono linee di separazione tra gli elementi.
Regola n. 3: Margini Rispettare
Le applicazioni non sono statiche: l'evoluzione nel tempo. Sono nato a corto di idee su un tovagliolo o una conversazione che hai avuto con un amico. Poi passare attraverso le fasi di prototipazione, prototipi di design, prototipazione di sviluppo e, infine, un design formale.
In pochissimi casi questo significa che diverse persone stanno facendo il lavoro, soprattutto nelle piccole imprese. A volte sei il proprietario, sviluppatore, designer - anche il bidello - facendo tutto da soli.
A causa di questi fattori, la pressione e il desiderio irresistibile di spedire a volte si mette di mezzo per produrre quello che sarebbe stato una perfetta applicazione. Che cosa gli impedisce di essere perfetto? Spesso sono i dettagli apparentemente piccoli, ma possono rivelarsi non così piccolo nel competitivo mercato delle applicazioni mobili. Questo vale per il tema della nostra terza regola: Come roba di allineare correttamente.
Questa semplice regola - i margini di corretta - è per qualche motivo persi quando si cerca di ottenere controlli sullo schermo. Se c'era una sola cosa che potrebbe imprimere sviluppatori, sarebbe questa: un margine per tutti i contenuti funziona meglio, ne fanno 24 pixel da sinistra.
Regola n. 4: Get Controlli fuori della Via
controlli all'interno della casella degli strumenti Windows Phone sviluppatore vi permettono di creare infinite combinazioni di stili visivi e disegni artistici. La capacità di uno di questi strumenti, Silverlight, ai controlli stile fornisce un sacco di potenza. Ma questa flessibilità porta con sé alcune sfide potenziali.
Si consideri un esempio di utilizzo di un panorama o una pagina con un perno di controllo mappa. Questi due controlli nella pagina non rappresentano un problema. Tuttavia, quando si effettua il controllo all'interno del PanoramaItem Map, la mappa direttamente interferire con il gesto "swipe" Panorama del controllo, perché questo gesto è applicabile a entrambi i controlli. Questo può essere visto in Figura 2.

[Clicca sull'immagine per ingrandirla.]
Figura 2. Il risultato finale, quando due controlli interferire. Non è abbastanza.
Problemi simili esistono con altri controlli, quando una vasta gamma di gesti è supportato. Come regola generale, non controlli nido che richiedono da lato a lato gesti. Linea di fondo: Rendere evidente per l'utente come utilizzare l'applicazione.
Regola n. 5: Navigazione prevedibile
Una domanda è una strada, la tua esperienza avanti e indietro attraverso la funzionalità è il percorso. Proprio come facciamo con i nostri punti di riferimento di navigazione nella nostra vita quotidiana, l'applicazione di navigazione è qualcosa che dovrebbe rimanere lo stesso.
Il pulsante Windows Phone casa otterrà molti sviluppatori nei guai. Un pulsante Home all'interno di una applicazione è necessario sui telefoni che non dispongono di un pulsante dedicato Indietro; un iPhone è un buon esempio. Tutti i dispositivi Windows Phone hanno invece un pulsante hardware dedicato, eliminando la necessità di avere un tasto Home incorporato. Questo è un luogo dove la religione di progettazione è disponibile in: Perché iPhone, Android e Symbian tutte le applicazioni sono integrati i pulsanti Home, la convinzione è che un'applicazione Windows Phone ha bisogno di una, anche.


A differenza di altre piattaforme, applicazioni Windows Phone mantenere uno stack pagina nel modello di navigazione.Questo modello si adatta l'aspettativa per un utente normale pulsante Indietro: torna alla vista precedente. In questo ambiente, un pulsante Home causerebbe un disegno imprevedibile di navigazione. Se l'utente naviga in profondità l'interfaccia e ad un certo punto casa presse, prosegue la navigazione in tutta l'applicazione, il numero di fotogrammi di navigazione continuerà a crescere, quindi il pulsante Indietro dovrà rilassarsi l'intero percorso. In un'applicazione Windows Phone senza pulsante Home, la navigazione è chiara e semplice: il pulsante Indietro restituirà sempre l'utente torna alla pagina precedente.
In Windows Phone 7.1 SDK, una nuova API è stato aggiunto che permette agli sviluppatori di accedere e modificare lo stack pagina prima di tornare alla pagina precedente. Ciò ha dato una grande quantità di nuova flessibilità agli sviluppatori.
Il cambiamento è stato fatto per sostenere una serie di non-lineare scenari di navigazione come carrelli e di pagamento e abbonamenti al servizio. Questi non-lineare scenari richiedono una procedura guidata da completare da parte dell'utente, ma il pulsante Indietro non lo stack di spostamento attraverso sette passi della procedura guidata di pagamento. In questo caso lo sviluppatore dovrebbe utilizzare la nuova API per modificare lo stack e tornare l'utente alla shopping experience, una volta una pagina di conferma è mostrato, per esempio.
Anche se questa flessibilità l'API è ora disponibile, gli sviluppatori ancora devono garantire che l'esperienza complessiva di applicazione è altamente prevedibile. Ciò significa che l'utente deve sempre sapere cosa succede quando si fa clic sul pulsante Indietro.
Regola 6: Imparare a Pin Tiles
Una delle caratteristiche più abbracciata dagli sviluppatori è stato il supporto per le piastrelle più. La possibilità di pin tessere singole o multiple alla schermata iniziale è molto simile a un segnalibro in un libro. Quando appuntato, la tessera viene aggiunta alla schermata iniziale, e quando viene premuto, la tessera deve portare l'utente direttamente al contenuto o funzione.
Ci sono stati numerosi dibattiti su come questa funzione dovrebbe essere usato. Dovrebbe essere un link ad un luogo specifico in un app, pur conservando la piena esperienza app? O dovrebbe limitare l'applicazione di un insieme ridotto di funzionalità, come un mini-app? Un certo numero di articoli sono stati scritti, ma questioni di l'intento originale continuano ad emergere sui forum e in vari eventi.
Il concetto di una piastrella appuntato, mostrato in Figura 3, è stato come un segnalibro profonda che espone un sottoinsieme di funzionalità all'interno dell'applicazione. Per esempio, il tempo di una sola città, o una categoria di notizie, o una scheda sola, simile a quello fatto nella Hub Persona.

[Clicca sull'immagine per ingrandirla.]
Figura 3. Inchiodamento piastrelle.
Detto in altro modo: una piastrella appuntato deve essere una scorciatoia per informazioni in genere si trova nel profondo l'applicazione - non è un segnalibro che continua a fornire l'accesso a tutta l'applicazione.
Regola numero 7: Risultati limite relativo controllo mappa per cosa l'utente può vedere sulla Viewport
Come Casella di testo e l'elenco, il Windows Phone SDK 7.1 comprende Mappa controllo. Questa è integrato con la mappatura Bing. Questo controllo versatile, supporta una serie di caratteristiche che consentono agli sviluppatori di creare esperienze di grande nativo mappatura Bing.
Gli sviluppatori problema più comune imbattersi in cerca di mappa del mondo nel controllo. Mappa di Controllo ha buone prestazioni, ma non si può mai dimenticare che si sta eseguendo l'applicazione su un telefono. Ci sono alcune regole da ricordare quando si utilizza il controllo.
In primo luogo, gli sviluppatori dovrebbero controllare se il punto è visibile nella zona della mappa, in altre parole, nel viewport. Un metodo banale per il controllo dovrebbe essere simile a questa:
 protetto bool CheckPinInViewport (doppia larghezza, doppia altezza, coordinate Point)
{
  if (coords.X> 0 & & coords.Y> 0)
  {
    ritorno coords.Y <altezza e larghezza e coords.X <;
  }
  return false;
}
Non ha senso nel mostrare qualcosa al di fuori della finestra. L'esempio di codice si applica ai pin, ma il problema è più ampio, come il controllo Map supporta più tipi di elementi come le piastrelle, i livelli, forme e dei controlli. Ogni aggiunge complessità quando la visualizzazione della mappa viene spostato o riposizionato, aggiungendo calcoli che riguardano la CPU.
La seconda questione è un po 'più complessa: cosa succede se un grande insieme di risultati viene restituito; condomini di Manhattan, per esempio? I risultati anche in una risoluzione della mappa relativamente basso grado di produrre un elevato numero di pin. In questo caso è necessario capire come i risultati raggruppare insieme, in un numero molto elevato di risultati, a parte pin sovrapposti sono di scarsa utilità per l'utente. Alla fine, ciò causa frustrazione e insoddisfazione.
Una volta raggiunto un punto in cui la quantità di dati è più che sia l'utente sia in grado di gestire telefono, ci sono alcune opzioni da considerare. I dati possono essere filtrati, oi risultati dei perni adiacenti possono essere raggruppati.
Ecco un esempio di clustering in un scenario reale. La vostra applicazione sta mostrando un elenco immobiliare, e ci sono 50 risultati allo stesso indirizzo (con numeri di unità diverse). Una visione tradizionale dei risultati avrebbe tutti i 50 pin impilati uno sopra l'altro. In una vista cluster, questi perni possono essere rappresentati da un singolo pin. Allo stesso modo, si può prendere un livello più alto e rappresentano un intero isolato o una sezione di blocchi da un singolo risultato, se la densità dei pin in quella posizione è più alto.

La mappatura è generalmente un'esperienza coinvolgente; tutti si aspettano di essere entusiasmato dai vostri piedini modello personalizzato. L'input tocco dovrebbe attivare la spilla con sufficiente precisione per permettere all'utente di interagire con i dati senza essere frustrato.
Regola n. 8: rimozione definitiva dovrebbe essere trasparente
Questo è tutto su come l'applicazione risponde al segnale del telefono cellulare che ha bisogno di più memoria.Cominciamo con una descrizione del modo in cui il telefono alloca la memoria e gestisce lo stato dell'applicazione. Nel aggiornamento Mango del sistema operativo, le applicazioni non in vista non sono sfrattati dalla memoria: sono letteralmente in pausa e permesso di rimanere residente in memoria.
Il resto della gestione della memoria segue la pre-Mango regole: applicazioni che richiedono memoria sono concessi la richiesta se è disponibile memoria sufficiente.
Non succede nulla di fatto meno che l'applicazione attiva è esercitare più pressione sul pool di memoria attualmente disponibili. Se l'applicazione attiva ha bisogno di più memoria, il sistema operativo sfrattano l'applicazione in quelli meno utilizzati di recente (LRU) ordine. Come mostrato nella Figura 4, l'applicazione in primo piano - è il più lanciato di recente - potrebbero sfrattare la domanda non nella vista, basato sulla regola LRU.

[Clicca sull'immagine per ingrandirla.]
Figura 4. rimozione definitiva Come funziona in Windows Phone Mango.
Nel processo di rimozione definitiva, Memory Manager OS segnali della domanda; che l'applicazione viene data una quantità finita di tempo di chiudere (è ucciso con forza se il tempo si esaurisce). Si noti che c'è una grande variabilità tra ciò che gli sviluppatori pensano dovrebbe accadere rispetto a ciò che effettivamente accade quando l'applicazione è riattivato.
Gli utenti si aspettano che l'applicazione sia nello stesso stato in cui è stato lasciato. In particolare, vogliono sapere che un CheckBox è ancora spuntato, un TextBox contiene lo stesso testo, e un elenco è nella stessa posizione.
Il modello di visualizzazione all'interno di Windows Phone aiuta con questa sfida, è possibile utilizzare un'associazione bidirezionale in Silverlight dal modello al fine di proprietà appropriate all'interno del modello durante la rimozione definitiva. Questo approccio risolve tutti i problemi tranne una: lista. Lista non possono essere gestiti nello stesso modo perché è un controllo complesso con una struttura profonda, ma contiene anche una serie di elementi a cui non è possibile associare direttamente. In questo caso, si sta cercando la posizione della proprietà VerticalOffset del ScrollViewer. Ecco come trovarlo:
ScrollViewer visualizzatore = ((VisualTreeHelper.GetChild (myList, 0) come
  . FrameworkElement) FindName ("ScrollViewer") come ScrollViewer);   
  _viewModel.ListBoxPosition = viewer.VerticalOffset;  
In questo caso, il codice salva il valore nella proprietà di base che possono poi essere salvati nella raccolta Stato della pagina.
In sintesi: gli utenti non dovrebbero essere a conoscenza di qualsiasi cosa accade tra i rimozione definitiva delle app e quando si riprende.
Regola n. 9: Gestire correttamente errori di rete
Ci piace il costante stato collegato su desktop, ma non hanno questo lusso su dispositivi mobili. E in generale, la più mobile del dispositivo, il più imprevedibile lo stato della rete. Anche per un computer portatile, passando da una stanza all'altra può causare cambiamenti nel profilo delle prestazioni della rete.
I telefoni cellulari sono peggio: sono dispositivi altamente sensibili, e la quantità di potenza applicata all'antenna deve essere bilanciata con le prestazioni della batteria. Gli utenti finali ben pochi avrebbero godere di un telefono cellulare che dispone di reception fantastico, ma dura solo 30 minuti. L'inverso è vero anche: prestazioni di rete molto poveri non fa felici gli utenti, anche se la batteria dura una settimana. Queste situazioni richiedono che gli sviluppatori di testare scenari aggiuntivi. Qui ci sono alcuni problemi relativi alla rete che influiscono sulla qualità complessiva di un'applicazione:
1. Stato disconnesso l'app. Se l'applicazione richiede l'accesso ai dati attraverso la rete, cosa succede quando la rete non è disponibile? In questo caso, tutte le chiamate di rete un'eccezione. Anche se può sembrare banale, questo è spesso mancato, basta mostrare un messaggio di errore non è utile alla maggior parte degli utenti. Ci sono alcuni modi l'applicazione può mettere in guardia su un problema di rete, compresi gli indicatori verde o rosso-luce, oscuramento l'intera interfaccia utente o qualcosa di semplice come un messaggio utile.
Nel corso del tempo, gli sviluppatori hanno imparato modi per verificare la connettività. listato 1 , mostra un metodo di esempio.
Ecco la versione XAML:
<Griglia di sfondo = "# CC000000" Margine = "0,0,0, -32" Grid.RowSpan = "2" 
DataContext = "{origine di associazione = {StaticResource Locator}}" 
Visibilità = "{Binding Environment.IsNetworkAvailable, Mode = OneWay}">
  <TextBlock HorizontalAlignment TextWrapping = "Center" = Testo "Wrap" = "Non 
  Collegato ... "VerticalAlignment =" center "/>
</ Grid>


Questo codice, che potrebbe essere adattato molto rapidamente per soddisfare quasi tutte le situazioni, consente all'utente di sapere in modo proattivo che la connessione di rete si è interrotta.
Il blocco di codice precedente fornisce un modo per determinare e gestire lo stato della rete. Ma c'è ancora un elemento di connessione di rete lasciato irrisolto: deleghe. Proxy causare un comportamento interessante per il metodo NetworkInterface.GetIsNetworkAvailable. La chiamata al metodo restituisce true - in effetti, è vero - quando il telefono è collegato alla rete e ha un indirizzo IP. Tuttavia, poiché il proxy non è ancora stato autenticato, tutte le chiamate ai servizi saranno bloccati.
Metodi che effettuano chiamate di rete dovrebbe usare una qualche variante del seguente:
/ / Utilizzare la proprietà "ResponseUri" per ottenere il Uri reale da dove il 
/ / Risposta è stata raggiunta per assicurarsi che non è il parlare proxy.
if (httpResponse.ResponseUri.AbsoluteUri.ToString () == URLrichiesta)
  {
/ / Il contenuto è stato restituito dal server desiderato, fare un lavoro
  ...
  }
Infine, proviamo ad esaminare la gestione delle richieste terminato a causa di rimozione definitiva. Si tratta di un problema critico, soprattutto per applicazioni che richiedono lunga le richieste del server. E 'una considerazione importante che deve essere gestita bene, ma non è facile da replicare, in particolare nell'emulatore. Ci sono utility che permettono di simulare le condizioni della rete, tra cui 4G fino in fondo anche a super-bassa larghezza di banda collegamenti dove byte singolo passare attraverso. Wireshark è uno strumento piacevole da usare per la limitazione della larghezza di banda della rete.
Come la richiesta viene completata dopo la chiamata al metodo WebRequest.BeginRequestAsync, callback viene richiamato. Ricordate anche che le misure di recupero adeguati dovrebbero essere sviluppate nel caso in cui la risposta non è stata completata. Non rappresentano una richiesta di brutto potrebbe causare il codice a fallire, portando ad un crash dell'applicazione. La lezione qui: Non sottovalutare quanto severamente una cattiva connessione può degradare la qualità app.
Regola n. 10: Evitare il thread dell'interfaccia utente blocco Uno dei temi più impattanti legate alla user experience è bloccare il thread dell'interfaccia utente. Non c'è niente di più doloroso per l'utente di un'applicazione che non è fluido. Un buon 15 anni fa, quando Visual Basic era in pieno svolgimento, un'applicazione a volte lo "sbiancamento" come una chiamata al database potrebbe bloccare il thread dell'interfaccia utente. Ma il modello a thread singolo appartamento in Visual Basic assicurato che non c'era molto che potesse essere fatto al riguardo - la maggior parte degli utenti appena finito di attesa per l'applicazione di fare il suo lavoro e ritorno. Da allora abbiamo passati a modelli migliori threading, ma se gli sviluppatori non si sta attenti, le applicazioni possono ancora ci ricordano di quel passato, con schermi bloccato e interfacce utente nervosi. Listato 2mostra un esempio lampante.
Questo appare come un esempio estremo, ma questo codice potrebbe accadere in ogni caso l'interfaccia utente, Button.Click, List.SelectionChanged o di qualsiasi costruttore. Per risolvere questo problema, abbiamo bisogno di caricare dati dal thread dell'interfaccia utente. Per fare questo, modificare l'evento Loaded, come mostrato nel Listato 3 .
Come per qualsiasi modifica del codice, questo approccio introduce un altro piccolo espediente: i dati una volta che è ricevuto, il contesto filettatura non è più sul thread UI, tagliare l'accesso a tutti gli elementi per inserire nuovamente i dati nel modello. Per farlo correttamente, è necessario spedire il contesto al thread dell'interfaccia utente utilizzando Dispatcher.BeginInvoke. Nota ci dovrebbe essere il codice meno possibile - non in termini di numero di linee, ma nella lunghezza del tempo necessario per eseguire:
vuoto getDataWorker_RunWorkerCompleted (object sender, RunWorkerCompletedEventArgs e)
{
  this.Dispatcher.BeginInvoke (() => {
      
  / / Prendi le modifiche dal modello per l'interfaccia utente di qui ...
          
  });

}
Uno strumento che non ha discusso in questa sezione, che merita un proprio articolo, è il nuovo Windows Phone 7.1 SDK Profiler prestazioni. Si tratta di uno strumento prezioso che ogni squadra dovrebbe adottare. Esso individua e suggerisce le soluzioni per i thread UI bloccati, le perdite di memoria e CPU problemi legati, tra gli altri. La cosa più importante da ricordare quando si usa il Profiler: Stabilire un riferimento per le prestazioni e confrontarlo spesso vengono apportate modifiche durante lo sviluppo. Questo farà sì è possibile individuare quale particolare codice delta causato un problema, permettendo al team di valutare e rimediare.
Come regola generale, qualsiasi azione che richiede più di 50-100 millesimi di secondo non deve essere fatto sul thread UI.
Non lasciate che Scadenze Causa Scorciatoie Squadre di fronte scadenze nel mondo in continua evoluzione di sviluppo mobile sono sempre sotto pressione per la spedizione dei prodotti. Ma la scelta che il percorso è pieno di pericoli, e deve essere evitato. Dopo tutto, è importante per i business manager a capire che la costruzione di una reputazione e guadagnando quote di mercato richiede tempo, mentre è sempre più indietro dopo un gran numero di una stella recensioni sarà molto più difficile. Questo significa fare un esame obiettivo del codice e vedere cosa funziona già, allora che cosa ha bisogno di più amore dal team di sviluppo.I 10 articoli elencati qui vi velocità lungo la pista di un solido, ben accolto applicazione Windows Phone che dovrebbe evitare i negativi che vengono con un prodotto rilasciato prima che sia pronto.
Corso Visual Studio - Corsi Visual Studio

Corso .Net- Corso Dot.Net - Corso Vb.net

Corso C# - Corso PHP - Corso Joomla

Nessun commento:

Posta un commento