Guida rapida allo sviluppo di app in-house Panoramica Dai vita alle tue idee per app in-house. Ecco come. La tua azienda è unica, e lo sono anche i tuoi utenti. C’è un mondo di possibilità per soddisfare le loro esigenze con innovative app mobili che possono cambiare il loro modo di lavorare. La maggior parte dei team di sviluppo interni ha dei limiti. Che siano limiti economici, organizzativi o di risorse, devi concentrarti sulla creazione di app che rispondano realmente alle esigenze della tua azienda. iOS ti offre una soluzione eccezionale per creare queste app. Lo sviluppo per iOS può essere rapido ed estremamente gratificante, e può permetterti di sviluppare app che forniscano vantaggi immediati agli utenti. Non dovrai ricorrere a processi costosi ed eccessive risorse per fare la differenza nella tua azienda, anche se dovrai concentrare i tuoi sforzi in modo diverso da come avresti fatto con un normale progetto di sviluppo in-house. Questa guida ti aiuterà a fare proprio questo, illustrandoti best practice per creare app mobili eccezionali per i tuoi utenti e fornendoti suggerimenti e risorse che ti aiuteranno a organizzare il tuo progetto per la massima efficienza. Come usare questa guida Checklist. Usa la checklist in ogni capitolo per ripassare e memorizzare i passaggi più importanti del processo di sviluppo. Suggerimenti veloci. Ottieni informazioni fondamentali per il processo con una risorsa facilmente accessibile. Checklist per la distribuzione Al termine della fase di distribuzione, dovresti aver completato quanto segue. Creazione del profilo di fornitura e del certificato aziendale Definizione di un server web di distribuzione o di una soluzione per la distribuzione delle app in wireless Annuncio della soluzione agli utenti finali Suggerimento veloce: mini app • App semplici, veloci e ben fatte creeranno una domanda interna e ridurranno al minimo la portata e l’investimento. • Le mini app possono creare un’esperienza completa. Gli utenti svilupperanno le proprie “soluzioni” personali e avranno quindi più flessibilità. La guida è suddivisa in quattro sezioni. Pianificazione: come definire il progetto, mettere insieme i requisiti e pianificare il processo di sviluppo. Progettazione: come sfruttare i concetti di design dell’interfaccia di iOS per essere sicuri che le app in-house piacciano agli utenti. Esempi. Esplora gli esempi dei clienti per spunti e idee su come altre aziende hanno creato app in-house per iPhone e iPad. “Dovevamo trovare un modo per fare aggiornamenti e modifiche molto rapidamente, perciò abbiamo scelto un approccio ibrido, con gli elementi nativi dell’interfaccia utente che risiedevano sul telefono e il resto sul web.” - Giancarlo De Lio, Mt. Sinai Hospital Sviluppo: come realizzare le app in-house e usare al meglio gli strumenti messi a disposizione da Apple, come il kit SDK per iOS. Distribuzione: come distribuire le app all’interno dell’azienda e realizzare il tuo servizio di distribuzione over-the-air. Collegamenti rapidi. Dai un’occhiata a questi riferimenti rapidi per maggiori informazioni sullo sviluppo di app in-house per iOS. Collegamenti rapidi FAQ sull’iscrizione ai programmi http://developer.apple.com/support/ios/enrollment.html FAQ sull’iOS Developer Enterprise Program http://developer.apple.com/support/ios/enterprise.html Iniziamo. Panoramica 2 Pianificazione La creazione di un’ottima app richiede un ottimo piano. È importante che le persone coinvolte all’interno dell’azienda si sentano in sintonia con l’obiettivo del progetto e partecipino attivamente alla formulazione del piano. Più il team comprende il bilancio del lavoro durante il processo e i passaggi da eseguire per realizzare il piano, maggiore sarà l’efficacia con cui potrà creare qualcosa di eccezionale. Nell’ambito del piano, tu e il tuo team dovreste valutare i seguenti aspetti. • Requisiti dell’azienda e degli utenti. Assicurati che la soluzione risponda a reali esigenze aziendali. Permette di risparmiare tempo e/o denaro, aumentare la produttività dei dipendenti o soddisfare un requisito che contribuisce al successo dell’azienda? Checklist per la pianificazione Fai riferimento a questa lista durante la fase di pianificazione del progetto. Al termine della fase di pianificazione, dovresti avere un capitolato che include quanto segue. Inventario di tutti i potenziali requisiti/esigenze aziendali Inventario delle esigenze degli utenti (da allineare con i requisiti aziendali) Requisiti dell’infrastruttura IT per supportare il progetto Definizione dell’applicazione che descrive l’app e lo scopo della soluzione • Infrastruttura/risorse esistenti. Puoi recuperare risorse preziose riutilizzando e adattando all’ambiente mobile qualcosa che hai già creato. Fasi salienti e tempistica generale del progetto • Facilità di implementazione. Inizia dalle cose semplici: cerca progetti con un tempo di ritorno rapido, che ti permettano di dimostrare in modo più immediato i risultati positivi del tuo lavoro. Avvio del processo di iscrizione all’iOS Developer Enterprise Program Team di persone coinvolte con definizione di ruoli e responsabilità Tenere a mente questi concetti di pianificazione ti aiuterà a mettere a fuoco il tuo progetto. Questo capitolo esplorerà i passaggi che puoi eseguire per organizzare e far partire rapidamente il progetto. Informazioni dagli utenti Mettiti nei panni degli utenti. Trascorri un po’ di tempo nel loro ambiente di lavoro partecipando a qualche riunione o accompagnandoli sul campo. Otterrai informazioni preziose su abitudini lavorative, rallentamenti del flusso di lavoro e problematiche dei dipendenti o dei clienti. Invita gli utenti più interessati o entusiasti a unirsi al team di progetto per offrire uno scambio continuo di informazioni. Per fornire agli utenti e all’azienda il maggior vantaggio possibile, nel minor tempo, occorre identificare quale problema può essere risolto da un’app mobile. Quando inizi a sviluppare app, non fare il passo più lungo della gamba. Circoscrivi le idee per quello che potresti costruire a quello che dovresti costruire. Pianificazione • Progettazione • Sviluppo • Distribuzione “C’era una comunicazione diretta tra sviluppatore e dipendenti. Siamo perfino andati in cantiere indossando caschi di sicurezza e scarpe antinfortunistiche per vedere esattamente ciò di cui avevano bisogno e come avrebbero usato l’app.” - Dean Moore, Sunbelt Rentals 3 Cerca alcune semplici attività che la maggior parte degli utenti svolge spesso e pensa a come un’app mobile potrebbe facilitarle. Ecco alcuni esempi. • Una semplice app che permette ai dipendenti di approvare un resoconto spese o un ordine di acquisto in mobilità. Esempio: inventario delle risorse Queste domande possono aiutarti a capire se nell’app puoi riutilizzare tecnologie esistenti. • Una directory aziendale o una mappa della sede che chiunque può usare. • Quali sistemi usano ogni giorno i dipendenti che lavorano di più fuori sede? • Uno strumento per trovare sale riunioni che i dipendenti possano usare facilmente quando non sono davanti al computer. • Quali sono i principali requisiti dei lavoratori fuori sede? • Una semplice app di time-tracking che si colleghi al sistema di gestione o fatturazione centrale. Inventario delle risorse Spesso la via migliore per creare un’app in-house in modo efficiente è sfruttare le tecnologie esistenti. Potresti fare un inventario dei tuoi siti web per i dipendenti e decidere se ha senso ottimizzarli per iPhone o iPad. Oppure potresti avere sistemi di back-end con dati in un formato facilmente trasferibile in un contesto mobile. Inoltre, non dimenticare le app sull’App Store: potrebbe esserci già un’app che soddisfa le tue esigenze. Leggi la sezione “Esempio: inventario delle risorse” (a destra) per un elenco di domande che possono aiutarti a esaminare l’ambiente esistente. Definizione dell’app Una volta valutate le esigenze degli utenti e le possibili soluzioni mobili per soddisfarle, dovrai perfezionare tali concetti in un piano conciso da condividere con le persone coinvolte nel progetto. L’elemento più importante nella definizione del progetto è la definizione dell’applicazione, ovvero una breve descrizione dello scopo dell’app. Una definizione dell’applicazione può aiutarti a evitare due insidie comuni: • hai un’app desktop che vuoi trasferire in ambiente mobile, e quindi un lungo elenco di funzioni da portare nel nuovo ambiente; • hai un’ottima idea per una nuova app mobile, ma ti concentri subito sulle funzioni anziché sullo scopo principale dell’app. Pianificazione • Progettazione • Sviluppo • Distribuzione • Quali processi manuali possono essere automatizzati o semplificati da app mobili? • Hai sistemi non mobili che potrebbero essere utili ai lavoratori fuori sede? • Quali funzioni di questi sistemi vengono utilizzate più spesso? • Quale tipo di accesso ai dati è fornito dai sistemi della tua azienda? I dati sono facilmente accessibili tramite servizi web? • Hai siti web interni a cui i dipendenti accedono ogni giorno? Potrebbero diventare facilmente delle app? “Abbiamo esaminato le diverse linee di prodotti e ci siamo chiesti dove avremmo potuto usare una soluzione mobile, quali fossero le priorità e quali obiettivi avremmo dovuto perseguire. A partire dal nostro portfolio prodotti abbiamo individuato ciò che sarebbe stato più utile.” - James Blomberg, General Electric 4 Creazione di una definizione dell’app Inizia scrivendo una definizione dell’app che includa quanto segue. • Lo scopo dell’app • Gli utenti finali e come verrà usata • Le funzionalità di base Assicurati che la definizione descriva una soluzione e le sue funzionalità di base, non una serie dettagliata di funzioni. Dovresti avere una definizione efficace dello scopo da usare per filtrare le idee per le funzioni. Per ogni funzione chiediti se è utile allo scopo previsto. Quindi limita la scelta a quelle usate più spesso e più appropriate a un contesto mobile. Non devi ritrovarti con un elenco lungo e dispersivo di funzioni difficili da realizzare o che non risolvono il problema. Rimanendo concentrato sulla definizione dell’app, offrirai agli utenti la maggiore produttività possibile in un pacchetto facile da usare. Pianificazione del processo di sviluppo In genere, la creazione di software aziendale richiede molte risorse nella fase di sviluppo. Grazie al kit SDK per iOS e a framework Cocoa Touch di alto livello, i team di sviluppo possono dedicare meno tempo al codice e più tempo alla progettazione di un’esperienza utente ideale. Questo processo ti permette non solo di fornire un’app per i dipendenti più rapidamente, ma anche di offrire soluzioni che superino le aspettative degli utenti. Esempio: definizione dell’applicazione Ecco come potrebbe essere la definizione di un’app per avvocati che consente di registrare le ore di lavoro. • Scopo: registrare le ore di lavoro e quelle da fatturare per ogni cliente • Utenti finali: avvocati dell’azienda che devono registrare le ore da fatturare • Uso: a ogni incontro con i clienti per registrare le ore da fatturare • Funzionalità di base: registrare e inviare le ore di lavoro al sistema CRM • Definizione completa: app per avvocati per registrare le ore di lavoro e quelle da fatturare per ogni cliente • Funzioni che rientrano nella definizione: cronometro, elaborazione /registrazione in background, integrazione del server con il sistema CRM, ricerca dei record dei clienti per associare le ore registrate al cliente/caso, sincronizzazione online/offline basata sulla connettività di rete • Esempio di funzioni che non rientrano nella definizione o esulano dallo scopo del progetto: avvisi di nuovi casi, consultazione di documenti legali, mappa delle sedi dei clienti, interfaccia di ricerca brevetti Sia che usi un processo di sviluppo agile che un metodo “a cascata” più tradizionale, assicurati di pianificare il tempo e le risorse da investire nel processo di design come parte fondamentale e costante dello sviluppo dell’app. Stabilisci una tempistica approssimativa del processo che hai in mente e i ruoli di ogni persona coinvolta in ogni fase del percorso. La tempistica non deve essere definitiva, ma può fornire un punto di riferimento comune per tutte le persone coinvolte. Suggerimento veloce: crowdsourcing Genentech sa che le idee migliori possono arrivare da chiunque, ovunque, quindi è stato creato un modello di crowdsourcing per raccogliere i suggerimenti dei dipendenti sulle app che avrebbero voluto veder sviluppare internamente. Da allora sono già state realizzate le cinque app più richieste, con grande soddisfazione degli utenti che le hanno adottate al volo. Pianificazione • Progettazione • Sviluppo • Distribuzione 5 Creazione di un capitolato Esempio: team di progetto tipico Per aiutarti a rimanere concentrato sul processo e a comunicarlo, il tuo piano dovrebbe includere un capitolato con tutte le risorse, gli obiettivi, le tempistiche e i principali materiali del progetto. Si tratta di una guida importante per tutte le persone coinvolte. Il capitolato può includere requisiti tecnici preliminari dell’app, nonché diagrammi di flusso o schemi visivi che aiutino a comunicare lo scopo dell’app nella fase di sviluppo. Code Requirements Release • Training • Coding of app • Design and graphics • Test cases • Unit testing • Scope project • Obtain approvals • Assemble team Design • Architecture design • Project plan built • Initial wireframes • Developer sizings • Internal release of app • Stakeholder signoff • Maintenance plan Verification • Testing on devices • Automated UI tests • Bug fixes • Design review/tweaks • Stakeholder walkthrough Creazione del team Come per ogni progetto, dovrai riunire un team di collaboratori che condividano un interesse comune per il successo e il risultato del tuo progetto di app. Alcuni partecipanti potrebbero essere clienti interni (un gruppo di utenti o il proprietario di una linea di business), mentre altri avranno il compito di seguire parti specifiche del processo di sviluppo (designer, sviluppatori, architetti tecnici e così via). Infine, dovrai allineare i ruoli e le responsabilità del team con la tempistica e le fasi salienti del progetto esaminate nel punto precedente. Per esempio, il design è un elemento fondamentale in qualsiasi progetto di sviluppo per iOS, quindi dovrai assicurarti di avere un team di design (o le risorse da assegnarvi). La partecipazione e l’interesse nel risultato possono variare a seconda del gruppo, pertanto è buona norma documentare i ruoli in modo che ognuno possa tenersi al corrente delle responsabilità lungo il percorso. Pianificazione • Progettazione • Sviluppo • Distribuzione Line-of-Business Owner Primary stakeholder and app user Executive Sponsor Primary stakeholder, responsible for strategic plan Project Leader Tracks schedules, timelines, and overall scope of work Product Manager Delivers the app, manages requirements, and reconciles business needs with solutions User Experience Architect Responsible for framework of user interaction model and user process flow/journey Technical Architect Responsible for infrastructure, security, and data access models Development Manager Technical lead and project manager User Interface Designer Responsible for app visual design, graphics, and identity IT Manager Responsible for deployment and life-cycle management of apps Developer Responsible for overall technical architecture and coding 6 Sviluppo in outsourcing Se non hai risorse in-house sufficienti, considera l’ipotesi di appaltare lo sviluppo, integralmente o in parte, a risorse esterne. Gli sviluppatori esterni potrebbero anche presentarti un portfolio di lavori con idee illuminanti. Naturalmente, perché abbia successo, il team esterno deve comprendere appieno il tuo progetto, ovvero tutto ciò che hai stabilito durante il processo di pianificazione, e deve interagire regolarmente con te e con il team in-house. Parla delle tue esigenze e assicurati che capisca quali sono i tuoi obiettivi. Rivedi la definizione dell’applicazione ed esamina attentamente i dettagli del progetto. Assicurati fin dall’inizio di aver stabilito una comunicazione chiara e bidirezionale, e una procedura da seguire per tenersi in contatto. Devi definire il ruolo che avrà il fornitore esterno proprio come faresti per un membro del team interno. Allinea i ruoli e le responsabilità con il piano e la tempistica del progetto in modo da poter comunicare chiaramente circa gli aspetti di cui si occuperà il fornitore. Suggerimento veloce: scelta di un fornitore esterno • Incontra più fornitori. • Dai un’occhiata al lavoro esistente, incluse le app sull’App Store; prendi nota delle valutazioni e dei commenti degli utenti. • Valuta abilità e capacità richieste: per esempio, tutto il codice verrà creato in-house? • Chiedi referenze. • Ignora gli approcci multipiattaforma generici o “uno per tutti”. • Concentrati sul design dell’interfaccia utente, sulla qualità della grafica e sul “percorso” dell’app. • Parla della manutenzione e del ciclo di vita dell’app dopo la versione 1.0. • Informati sull’esperienza nelle infrastrutture IT. Release Requirements In-house team responsibilities Outsourced developer responsibilities Design Code Verification Alcuni partner esterni possono aiutarti per tutti gli aspetti del progetto, dai requisiti iniziali alla distribuzione finale. Altri possono concentrarsi esclusivamente sulla scrittura del codice. È opportuno parlare di tali capacità e servizi con il fornitore esterno, indipendentemente dal fatto che alla fine ti rivolga a lui. Può essere utile valutare i suoi punti di forza e spiegare come definirai la relazione. Pianificazione • Progettazione • Sviluppo • Distribuzione “Usiamo collaboratori esterni per diversi aspetti. Dipende dai requisiti dell’app. Se abbiamo bisogno di uno stile molto specifico, ci rivolgiamo a collaboratori che hanno realizzato cose simili, perché sappiamo che hanno già esperienza. In questo modo possiamo offrire un prodotto di qualità migliore ai nostri dipendenti e ai nostri clienti.” - Todd Schofield, Standard Chartered Bank 7 Primi passi con l’iOS Developer Enterprise Program Dopo aver messo insieme i requisiti, ottenuto informazioni dagli utenti e definito la tua applicazione e il piano del progetto, il passaggio finale prima di passare alla fase di design è l’iscrizione all’iOS Developer Enterprise Program. Questo programma offre un processo completo e integrato per sviluppare, testare e distribuire app iOS per i dipendenti della tua organizzazione. Una volta registrato al programma, potrai accedere agli strumenti e alle risorse elencati qui a destra. Di seguito trovi una panoramica che ti aiuterà a capire come funziona il processo di iscrizione e a muovere i primi passi. Per maggiori informazioni, vai su http://developer.apple.com/programs/ios/ enterprise. Requisiti per l’iscrizione Prima di iscriverti al programma, verifica quanto segue. • Intendi distribuire le app iOS solo all’interno della tua azienda o organizzazione. L’iOS Developer Enterprise Program è destinato a sviluppatori che vogliono sviluppare e distribuire le proprie app iOS per i dipendenti della propria azienda o organizzazione. • La tua azienda ha un numero Dun & Bradstreet (D-U-N-S). Dovrai fornirlo a Apple durante il processo di iscrizione. Dovrai anche sapere la ragione sociale della tua azienda o organizzazione. Per richiedere o ottenere un numero D-U-N-S, vai su http://dbitaly.dnb.com/Italian/Database/intl.asp. • Sei autorizzato a vincolare l’azienda ad accordi legali. Durante la registrazione dovrai fornire un contatto legale in grado di verificare che tu sia autorizzato a vincolare l’azienda al contratto di licenza dell’iOS Developer Enterprise Program. • Hai le capacità tecniche per firmare applicazioni in Xcode. Come membro che effettua l’iscrizione, sarai l’agente del team, ovvero il responsabile delle attività tecniche di amministrazione dell’account e di fornitura dell’app. Panoramica: risorse dell’iOS Developer Enterprise Program Iscrivendoti all’iOS Developer Enterprise Program ottieni i seguenti vantaggi. • Accesso all’iOS Dev Center • Accesso al kit SDK per iOS • Software e strumenti pre-release selezionati • Possibilità di creare il tuo team di sviluppo nella sezione Team del Member Center • Accesso ai forum degli sviluppatori Apple • Interventi di supporto tecnico (due per iscrizione annuale al programma) • Possibilità di testare le app direttamente su iPad, iPhone e iPod touch • Distribuzione ad hoc della tua app su un massimo di 100 dispositivi registrati • Distribuzione in-house aziendale a un numero illimitato di dispositivi dei dipendenti Suggerimento veloce: preparazione degli strumenti di sviluppo Il requisito di base del kit SDK per iOS è un Mac basato su Intel. Generalmente gli sviluppatori scelgono un MacBook Air o un MacBook Pro per questioni di portatilità e flessibilità. Ma anche gli iMac o i Mac mini sono ottime scelte, in particolare per chi ha un laboratorio di sviluppo in-house. Inoltre, devi avere dei dispositivi di test. Se vuoi garantire una compatibilità completa, assicurati di avere dispositivi di precedente generazione, per esempio un iPhone 3GS o un iPad di prima generazione. Panoramica sul processo di iscrizione 1. Registrati come sviluppatore Apple. Per iniziare il processo di iscrizione dovrai registrarti con Apple creando un nuovo Apple ID dedicato al programma. È utile impostare un indirizzo email specifico per questo account, in modo che la tua organizzazione possa assegnarlo a persone diverse se necessario. Pianificazione • Progettazione • Sviluppo • Distribuzione 8 2. Inserisci le informazioni legali, di contatto e aziendali. Questi dati sono richiesti per convalidare il tuo stato di entità aziendale. Il requisito principale è un numero D-U-N-S valido. Assicurati che il nome e l’indirizzo dell’azienda corrispondano alle informazioni elencate nel database Dun & Bradstreet. Nell’ambito del processo di verifica dell’identità, potresti dover fornire a Apple documenti aziendali, per esempio atti costitutivi, accordi di gestione e licenze commerciali. 3. Invia a Apple. Una volta inviata l’iscrizione, puoi controllare lo stato accedendo al Member Center per sviluppatori sul sito http://developer.apple.com/membercenter. Esegui l’autenticazione con l’Apple ID creato al punto 1. In questa fase, Apple esaminerà l’app e contatterà te o i tuoi legali, se necessario. 4. Accetta il contratto di licenza dell’iOS Developer Enterprise Program. Per procedere con l’iscrizione, dovrai accettare i termini della licenza del programma. A questo punto puoi leggere i termini e condividerli con i tuoi legali. 5. Acquista il programma. Una volta accettati i termini, riceverai le istruzioni per acquistare l’iscrizione tramite l’Apple Online Store. Se vuoi usare un ordine di acquisto, contatta il tuo Apple Store locale per verificare se sono disponibili opzioni di approvvigionamento istituzionali. 6. Attiva l’iscrizione. Dopo aver acquistato il programma, riceverai una conferma d’ordine. Entro 24 ore, dovresti ricevere un’email di attivazione da Apple con un codice per attivare l’iscrizione. Una volta effettuata l’attivazione, potrai accedere a tutte le risorse del programma. Creazione del team Panoramica: creazione del team Gli agenti e gli amministratori possono aggiungere nuovi membri, con ruolo di membro o amministratore, dalla scheda People del Member Center per sviluppatori Apple. Per invitare nuovi membri a unirsi al team, basta accedere alla sezione Invitations e cliccare sul pulsante Invite Person. Agent Admins Members Admin Setup and Distribution Member Setup and Approvals Development Distribution Certificate Development Certificates Development Certificates Enterprise Provisioning Development Provisioning Development Provisioning Dopo che l’azienda sarà iscritta all’iOS Developer Enterprise Program, dovrai creare il team di sviluppo nella sezione Team del Member Center. Ruoli e responsabilità del team Un team di sviluppo è composto da individui con i seguenti ruoli. Agente. Il contatto principale del team di sviluppo, responsabile di accettare tutti i contratti dell’iOS Developer Program, nonché l’utente principale che ha effettuato l’iscrizione al programma. Ha la responsabilità di gestire il certificato di distribuzione aziendale utilizzato per la fornitura di app destinate a una distribuzione su larga scala ai dipendenti. Amministratore/i. Gli amministratori gestiscono i propri team e certificati di sviluppo. Per gestire la distribuzione aziendale devono rivolgersi all’agente. Membri. I principali sviluppatori all’interno dell’organizzazione. I membri ricevono l’approvazione dagli amministratori per la fornitura di app e dispositivi a scopo di test e sviluppo. Per gestire la distribuzione aziendale devono rivolgersi all’agente. Pianificazione • Progettazione • Sviluppo • Distribuzione Suggerimento veloce: registrazione dei dispositivi per lo sviluppo Gli amministratori possono inserire contemporaneamente diversi ID dispositivo caricando un file .deviceids generato dall’Utility Configurazione iPhone. Nell’Utility Configurazione iPhone, basta selezionare i dispositivi da caricare e fare clic sul pulsante Esporta. Verrà creato un file .deviceids. Vai su www.apple.com/it/support/iphone/enterprise per scaricare l’Utility Configurazione iPhone. 9 Risorse di apprendimento Dopo che avrai creato il team, visita l’iOS Dev Center sul sito http://developer.apple.com/devcenter/ios, dove troverai una vasta gamma di risorse. Puoi aggiungerle ai preferiti o impostarle come home page per tutto ciò che riguarda lo sviluppo. Di seguito sono elencate solo alcune delle fantastiche risorse disponibili. Forum Entra in contatto con altri sviluppatori aziendali e condividi idee e best practice. È sempre utile avere a portata di mano una community di sviluppatori che condividono i tuoi stessi interessi. Libreria di riferimento Enciclopedia, libro di testo e prontuario, tutto in uno. Puoi fare ricerche, è suddivisa in categorie e fornisce tutte le informazioni necessarie per sviluppare app. Codice di esempio Puoi trarre ispirazione dagli esempi per sviluppare le tue app. Puoi anche copiare e incollare il codice di esempio direttamente nel tuo progetto. “I codici di esempio disponibili su Apple.com semplificano davvero la visualizzazione di una funzione specifica, come il drill-down o le mappe, o l’integrazione con un database SQL locale.” - Keith Debickes, JM Family Enterprises, Inc. Collegamenti rapidi FAQ sull’iscrizione ai programmi http://developer.apple.com/support/ios/enrollment.html FAQ sull’iOS Developer Enterprise Program http://developer.apple.com/support/ios/enterprise.html Guide introduttive Se sei alle prime armi, queste guide forniranno al tuo team i concetti fondamentali e le best practice dello sviluppo per iOS. Uno sguardo avanti Quando il processo di pianificazione sarà completato, riprendi la checklist per la pianificazione all’inizio di questo capitolo. Se hai eseguito ogni passaggio, probabilmente avrai ottenuto supporto a livello esecutivo, impegno da parte del tuo team e un piano chiaro che tutti possono seguire. Il team sarà pronto per la fase successiva del processo: esplorare le best practice di design e sviluppo, e acquisire una conoscenza di base dei concetti dello sviluppo per iOS. Pianificazione • Progettazione • Sviluppo • Distribuzione 10 Progettazione Il design conta. Creare un’app di base per iPhone o iPad è semplice, ma le app di successo richiedono qualche sforzo in più. Quali sono gli aspetti che attraggono l’utente? Hanno un design accattivante, usano in modo eccellente i colori e l’audio, sono intuitive, funzionano come ci si aspetta, coinvolgono l’utente e lo invogliano a ritornare. Se presti particolare attenzione al design quando crei una nuova app o migliori un’app esistente, puoi aumentare la sua attrattiva, creare un’esperienza utente più coinvolgente e rendere l’app piacevole da utilizzare. Questo capitolo descrive alcune strategie che puoi adottare per perfezionare la tua idea, rivedere le opzioni di design e definire un design di app che aumenterà la produttività degli utenti. Progettazione per l’interazione tattile Checklist per la progettazione Al termine della fase di progettazione, dovresti aver completato quanto segue. Lettura delle iOS Human Interface Guidelines di Apple Creazione di un breve elenco di caratteristiche in linea con la tua definizione principale dell’applicazione Assegnazione delle priorità a un elenco di oggetti, attività e concetti, e definizione delle rispettive correlazioni Creazione di una serie di wireframe e composizioni approssimative per visualizzare il percorso dell’app Progettare un’interfaccia utente per l’interazione con il mouse è molto diverso dal progettarla per l’interazione tattile. Quando inizi a progettare un’app, devi sapere ciò che rende unici i dispositivi iOS. Dedica un po’ di tempo a studiare un iPhone o un iPad e ad acquisire familiarità con le convenzioni di design dell’interfaccia e di interazione con l’utente. A livello base, per l’interazione tattile hai bisogno di più pixel per rappresentare un pulsante selezionabile con un dito rispetto a quanti te ne servirebbero per un mouse in ambiente desktop. Per esempio, gli elementi dell’interfaccia utente devono avere dimensioni minime di 44x44 punti per poterli toccare comodamente. Elementi comuni sul desktop come i menu a discesa o le barre di scorrimento non funzionano bene su un dispositivo mobile progettato per l’interazione tattile. Linee guida per l’interfaccia utente Le linee guida per l’interfaccia utente di iOS (iOS Human Interface Guidelines) descrivono i principi che ti aiuteranno a progettare un’interfaccia e un’esperienza utente superlative per la tua app iOS. Questi principi sono importanti sia per le app in-house aziendali sia per quelle create per l’App Store. Pianificazione • Progettazione • Sviluppo • Distribuzione “Uno dei modi che usiamo per garantire coerenza nelle nostre app è seguire le linee guida per l’interfaccia utente di Apple. Sono davvero utili per verificare che le app siano coerenti tra loro. Possiamo scegliere stili di design diversi, ma ci assicuriamo sempre che abbiano uno stesso tema. Seguire queste linee guida è molto importante per noi.” - Todd Schofield, Standard Chartered Bank 11 Semplificazione Spesso le tue app in-house aziendali saranno ricavate dall’ambiente di un’applicazione desktop esistente o saranno basate su sistemi di linee di business da cui dipendono gli utenti. È facile cadere nella trappola di voler trasferire sul dispositivo mobile ogni caratteristica e funzione dell’applicazione desktop. Solitamente questo approccio non riesce a offrire il tipo di esperienza che ci si aspetta su un dispositivo mobile. Ricorda che gli utenti eseguono le attività in modo diverso sui dispositivi mobili e che alcune di esse potrebbero non risultare pratiche in questo contesto. Le piccole attività sono più adatte all’ambiente mobile, e per questo è importante continuare a filtrare le funzioni in base alla definizione dell’applicazione quando perfezioni la tua app. Suggerimento veloce: mini app • App semplici, veloci e ben fatte creeranno una domanda interna e ridurranno al minimo la portata e l’investimento. • Le mini app possono creare un’esperienza completa. Gli utenti svilupperanno le proprie “soluzioni” personali e avranno quindi più flessibilità. Ecco alcune domande che potresti farti per semplificare il design degli elementi di interfaccia dell’app. • Ha senso che l’elemento sia visualizzato a video? • L’elemento fornisce accesso a funzionalità importanti? • È utilizzato spesso? Quasi sempre? • L’utente ha bisogno dell’elemento ogni volta che effettua una selezione? • Considerando il percorso dell’app, è importante visualizzare l’elemento ora? Se la risposta a una di queste domande è negativa, forse puoi fare a meno dell’elemento. Oppure puoi valutare se combinare la funzionalità con qualcos’altro. Gli utenti di iPhone e iPad sono abituati all’aspetto e al comportamento delle app integrate in questi dispositivi. Non devi imitare ogni singolo dettaglio delle app integrate, ma è utile capirne gli schemi di progettazione e considerare come applicarli alle tue app creando un design semplice, funzionale e intuitivo. Esamina queste app concentrandoti su controlli comuni, interazioni tattili (come pizzicare e zoomare) e animazioni, e inizia a pensare a come potresti applicare coerentemente questi concetti alla tua app. Pianificazione • Progettazione • Sviluppo • Distribuzione “Secondo la nostra filosofia, le app interne devono essere belle ed eleganti come le migliori app commerciali. Perciò quando abbiamo iniziato a progettare l’interfaccia utente, non abbiamo voluto concentrarci solo sull’aspetto funzionale, ma anche su quello estetico.” - Mark McWilliams, Razorfish 12 Assegnazione di priorità Quando un’app iOS colloca e mantiene al centro dell’attenzione la propria attività principale, dà soddisfazione ed è piacevole da usare. Ogni parte della tua app deve essere in linea con il suo scopo. Creare un elenco di oggetti, attività e concetti, e ordinarli in base alla rilevanza per lo scopo o l’attività principale dell’app, ti aiuterà a offrire un’interfaccia utente organizzata e mirata. Questo passaggio ti permetterà anche di riflettere sul flusso di lavoro o sul processo di interazione della tua app, che determinerà le tue decisioni di design dell’interfaccia utente. Inventario di oggetti, attività e concetti Suggerimento veloce: display Retina Il display Retina su iPhone 4 e successivi permette di visualizzare versioni ad alta risoluzione di immagini e icone. Se ingrandisci la grafica esistente, perdi l’occasione di fornire agli utenti le splendide e accattivanti immagini che si aspettano. Rielabora invece le risorse delle immagini esistenti per creare versioni più grandi e di maggiore qualità, più ricche di texture, più dettagliate e realistiche. • Oggetti. Sono i principali elementi funzionali dell’app. Per esempio, in un’app di calendario, sarebbero i giorni, i mesi, gli appuntamenti e i promemoria. • Attività. Sono le azioni solitamente eseguite sugli oggetti, per esempio filtrare, pianificare, modificare e creare. • Concetti. Sono i flussi di lavoro o, in alcuni casi, una serie di attività correlate che formano un concetto più ampio. Usando l’esempio del calendario, un concetto potrebbe essere la ricerca, che includerebbe più attività. Objects Calendars Tasks Scheduling Concepts Searching Days Create Search Weeks Edit Filter Months Search Appointments Reminders Una volta creati questi elenchi, inizierai a notare qualche relazione tra gli elementi di ogni categoria. Questo ti aiuterà a raggruppare oggetti, attività e concetti correlati in una gerarchia che dovrebbe semplificare la loro presentazione all’utente. Pianificazione • Progettazione • Sviluppo • Distribuzione 13 Dall’alto verso il basso Posiziona gli elementi utilizzati più spesso (in genere di livello più alto) nella parte superiore dello schermo, dove sono più visibili e accessibili. Poiché l’utente esamina lo schermo dall’alto verso il basso, gli elementi dovrebbero essere visualizzati in modo progressivo in base ai seguenti criteri. • Frequenza di utilizzo: gli elementi utilizzati più spesso dovrebbero essere più in alto, quelli utilizzati meno, più in basso. • Importanza per l’utente: gli elementi più importanti dovrebbero essere più in alto. • Impatto visivo: gli elementi che devono apparire in una posizione di maggiore rilievo devono essere più in alto. Lo stesso approccio è valido per le informazioni contenute nell’app. Dovrebbero progredire dal materiale più generale nella parte superiore dello schermo a quello più specifico nella parte inferiore. Ottimizzazione Un buon design è un processo iterativo. Più eserciterai i tuoi concetti di design dell’interfaccia all’inizio del processo (prima di scrivere il codice), migliori saranno i risultati finali. Suggerimento veloce: fai uno schizzo dell’app Fai prove su carta. Spesso il modo migliore per illustrare la tua visione di design è creare schizzi nella fase iniziale del processo che aiutino a modellare e perfezionare il design senza dover sostenere i costi dello sviluppo del codice. Puoi acquistare pratici modelli online per realizzare e rifinire rapidi schizzi. Fai prove con un’app. Sull’App Store trovi app come iMockup e App Layout che consentono di creare modelli di interfacce utente per iOS usando controlli e viste standard. È importante inoltre ottimizzare il design in base agli utenti e al dispositivo target. Le app migliori compensano i concetti di interazione dell’utente, che varieranno in base alle caratteristiche uniche del dispositivo. Ottimizzare l’app significa rifinire e fare prove con questi concetti in modo che il risultato finale sia piacevole per gli utenti. Prove Prima di iniziare a creare un’app, avrai bisogno di una serie di progetti. Potresti iniziare con qualche schizzo e rifinire le idee nel tempo. Ogni volta acquisirai più informazioni su come l’utente potrebbe interagire con l’app e nuove idee che potresti integrare, tutto ciò senza investire tempo, denaro o risorse nello sviluppo effettivo. Disegna o fai uno schizzo dell’intero percorso dell’app, dall’inizio alla fine, per farti un’idea completa dell’esperienza utente e delle funzionalità che creerà il tuo design. Pianificazione • Progettazione • Sviluppo • Distribuzione 14 iPad o iPhone? Se hai intenzione di sviluppare un’app che funzioni sia su iPhone sia su iPad, dovrai adattare il design a ciascun dispositivo. Anche se la maggior parte degli elementi dell’interfaccia utente sono disponibili su tutti i dispositivi, in genere il layout complessivo è estremamente diverso. Per esempio, gli utenti tendono ad aspettarsi che la fedeltà della grafica sia maggiore nelle app per iPad che in quelle per iPhone. Non è consigliabile ingrandire semplicemente un’app per iPhone per riempire il display dell’iPad. Dovrai invece far sì che la tua app per iPad coinvolga l’utente in modi che sfruttano appieno il suo grande schermo e le sue capacità. Ricorda inoltre che iPhone 4 e successivi supportano una grafica a maggiore risoluzione grazie al display Retina, che richiede una risoluzione delle immagini raddoppiata. Ci sono poi differenze nei gesti disponibili e nei modi in cui è gestita la rotazione. I dispositivi supportano anche elementi diversi dell’interfaccia utente. Per esempio, i controller per la visualizzazione popover o a schermo diviso sono esclusivi dell’iPad. “L’iPad ci ha fornito decisamente più spazio e abbiamo voluto sfruttarlo. Questo è stato fondamentale per noi. Non si è trattato solo di ingrandire tutto del triplo o di aumentare il numero di pixel, ma di assicurarci di usare in modo appropriato quello spazio... Per trasferire un’app da un iPhone a un iPad, occorre ripensarla. Probabilmente il 60% delle funzionalità chiave resterà uguale, ma cos’altro possiamo fare? Come possiamo renderla più utilizzabile o ridurre il numero di clic o schermate per accedere a ogni cosa?” - James Blomberg, General Electric App universali Il kit SDK per iOS supporta lo sviluppo di applicazioni universali. Si tratta di app ottimizzate per funzionare su tutti i dispositivi iOS: in pratica, un’app per iPhone e un’app per iPad in un unico file binario. Un’app universale può determinare su quale dispositivo è stata installata e operare al meglio per quell’ambiente. Se sviluppate correttamente, le app universali sfruttano le caratteristiche hardware specifiche del dispositivo, forniscono la giusta scelta di elementi di interfaccia, e usano solo le funzioni supportate da quel particolare dispositivo. Nella progettazione di un’app universale per iOS, è importante pensare a come separare l’interazione dell’utente dal codice dell’applicazione sottostante. Le classi e le API del kit SDK per iOS usano un paradigma Model-View-Controller (MVC) che invita a una separazione netta dei dati e della logica dell’app dalle viste utilizzate per presentare tali dati. La creazione dell’interfaccia utente con Interface Builder, per esempio, offre al tuo progetto questo tipo di flessibilità (vedi capitolo successivo). Il primo passo per realizzare un’app universale è creare dei design di interfaccia per ogni fattore di forma: un design per dispositivi iPad e un altro per dispositivi iPhone/iPod touch. Gran parte del design sarà influenzato dalle funzioni che vuoi presentare in ciascuno dei diversi fattori di forma. Pensa a come gli utenti potrebbero usare diversamente l’orientamento o i gesti. Considera le capacità hardware di ogni dispositivo, come la fotocamera. Le differenze nel modo in cui gli utenti usano il dispositivo dovrebbero determinare il tuo approccio a un design coerente per ciascuno e dove potresti aver bisogno di codice condizionale. Pianificazione • Progettazione • Sviluppo • Distribuzione 15 Accessibilità In un ambiente aziendale è importante fornire a tutti gli utenti le stesse possibilità di accesso a tecnologie e strumenti mobili. iOS include fin da subito diverse funzioni che rendono ogni dispositivo accessibile e facile da usare per tutti. Tuttavia, è importante ottimizzare anche le tue app in-house per l’accessibilità in modo che gli utenti con disabilità visive, uditive e fisiche possano utilizzarle. iOS include l’interfaccia di programmazione UI Accessibility, un’API semplificata che permette a un’app di fornire a VoiceOver tutte le informazioni necessarie per descrivere l’interfaccia in modo che utenti non vedenti o ipovedenti possano usare l’app. Con l’interfaccia di programmazione UI Accessibility puoi aggiungere un livello di funzionalità che non altera l’aspetto dell’app né interferisce con la sua logica principale. Ciò significa che, se usi controlli e viste standard, gran parte del lavoro per rendere accessibile l’app sarà già fatto. In base al livello di personalizzazione dell’app, per renderla accessibile può essere sufficiente fornire descrizioni utili e precise degli elementi accessibili dell’interfaccia utente. Il kit SDK per iOS fornisce inoltre questi strumenti per aiutarti a rendere accessibile l’app. • Una scheda impostazioni in Interface Builder che permette di fornire facilmente informazioni descrittive per l’accessibilità mentre crei file NIB. Suggerimento veloce: integrazione del supporto per VoiceOver Rendere accessibile la tua app iOS agli utenti di VoiceOver è un’ottima cosa. Potrebbe aiutarti anche a seguire le linee guida per l’accessibilità stabilite da diversi organi amministrativi. Per assicurarti che gli utenti di VoiceOver possano usare l’app, non dovrai modificare l’aspetto grafico dell’interfaccia in alcun modo. Se usi elementi standard, il lavoro extra sarà ridotto al minimo. Tuttavia, potresti dover fornire qualche descrizione delle viste e dei controlli dell’interfaccia utente. Quanto più personalizzata è l’interfaccia utente, maggiori saranno le informazioni personalizzate che dovrai fornire per consentire a VoiceOver di descrivere con precisione l’app. • Accessibility Inspector, che mostra le informazioni per l’accessibilità incorporate nell’interfaccia utente dell’app e ti permette di verificare queste informazioni quando esegui l’app nel Simulatore iOS. Puoi anche usare VoiceOver stesso per testare l’accessibilità dell’app. Uno sguardo avanti Una volta acquisite le best practice sul design dell’interfaccia utente, sarai pronto a passare alla fase di sviluppo del progetto. Tuttavia, come abbiamo visto nel capitolo sulla pianificazione, il design è un processo iterativo che riguarda tutto il ciclo di sviluppo dell’app. Realizzare un buon design con una particolare attenzione per l’esperienza utente dovrebbe essere una strategia da osservare anche quando il team di sviluppo inizia a compilare il codice. La serie di strumenti e i concetti esaminati nel prossimo capitolo ti aiuteranno a fare proprio questo: sviluppare codice solido e allo stesso tempo offrire agli utenti app ben progettate. Pianificazione • Progettazione • Sviluppo • Distribuzione 16 Sviluppo Con iOS puoi fornire contenuti e informazioni in modo semplice ma efficace, aiutando i dipendenti a fare di più e meglio. Sfruttando il kit SDK per iOS, il tuo team di sviluppo creerà app usando gli stessi strumenti utilizzati dagli ingegneri Apple per creare il sistema operativo e le app fornite di serie su ogni iPhone e iPad. In questo modo potrai creare app dall’aspetto elegante e che rispondano agli utenti con la massima efficienza. Usando gli strumenti di iOS puoi usufruire di framework di alto livello che ti permettono di sfruttare appieno la piattaforma. Esploreremo le principali API per lo sviluppo in-house per darti idee su come integrare tali funzioni nelle tue app. Vedremo anche come puoi sfruttare tecnologie web usando HTML5, CSS e JavaScript. Con le giuste funzioni di sicurezza integrate nella tua soluzione, queste tecnologie collaborano per creare fondamenta sicure e potenti che supportino le esigenze della tua azienda. Infine, prima che tu possa considerare la tua app pronta per gli utenti, dovrai sottoporla a una procedura accurata di test e debugging. Dovrai anche verificarne le prestazioni su diversi dispositivi. Vedremo come gli strumenti di iOS possono aiutarti a eseguire queste attività e ti suggeriremo best practice per assicurarti che l’app funzioni come vuoi tu. Checklist per lo sviluppo Al termine della fase di sviluppo, dovresti avere una conoscenza di base dei seguenti argomenti. Strumenti del kit SDK per iOS, tra cui Xcode, Interface Builder, Instruments e Simulatore Principali API e framework per lo sviluppo in-house aziendale Sviluppo di web app Architettura di iOS per l’accesso ai dati in sistemi di back-office Best practice per la protezione delle app in-house Test, debugging e verifica delle prestazioni delle app Sviluppo nativo Lo sviluppo in-house è incentrato sul realizzare la visione del tuo design di app, sullo sfruttare appieno le capacità del dispositivo e sull’eseguire tutto ciò in un ambiente organizzato ed efficiente. Il kit SDK per iOS include Xcode, l’IDE per compilazione, building e debugging dell’app, Interface Builder per la creazione dell’interfaccia utente, Instruments per l’analisi di comportamento e prestazioni, e decine di altri strumenti. “In base all’esperienza del mio team, l’SDK e Xcode sono strumenti di programmazione eccezionali e intuitivi, anche per sviluppatori senza un background Mac.” - Hans-Christian Pahlig, Axel Springer Xcode è il cuore della tua esperienza di sviluppo. Offre completamento del codice, analisi statica in tempo reale e debugging istantaneo sul dispositivo. Interface Builder semplifica la realizzazione del prototipo dell’app. Basta trascinare gli elementi per creare un’interfaccia utente completa senza scrivere alcun codice. In Xcode 4, Interface Builder è integrato direttamente nell’IDE di Xcode. Instruments raccoglie e visualizza in tempo reale dati come l’uso del disco, della memoria o della CPU, semplificando l’individuazione di eventuali aree problematiche. Il Simulatore esegue l’app in modo pressoché analogo a un dispositivo iOS permettendoti di verificare e testare il codice direttamente dall’ambiente desktop. Pianificazione • Progettazione • Sviluppo • Distribuzione 17 Principali API per sviluppatori in-house Il kit SDK per iOS fornisce strumenti che ti permettono di scrivere praticamente qualsiasi funzione immaginabile. Molti di questi strumenti includono anche codice di esempio e risorse per aiutarti a iniziare rapidamente. Diamo un’occhiata ad alcune delle migliaia di API presenti nel kit. Una breve panoramica è già sufficiente a darti un’idea delle incredibili funzioni che puoi includere facilmente nelle tue app in-house. Multitasking. Gli sviluppatori hanno accesso a sette servizi multitasking che permettono di eseguire operazioni in background senza compromettere prestazioni e durata della batteria. Questi includono funzioni come VoIP, audio in background, servizi di localizzazione in background, notifiche push e locali, ultimazione dei task e veloce passaggio tra app. Notifica push. Con il servizio di notifiche push Apple puoi avvisare i tuoi utenti della disponibilità di nuove informazioni anche quando l’app non è aperta. Invia notifiche di testo, attiva avvisi audio o aggiungi un badge numerato all’icona dell’app. Xcode è il cuore della tua esperienza di sviluppo e offre completamento del codice, analisi statica in tempo reale e debugging istantaneo sul dispositivo. Accessori. Le applicazioni possono comunicare con gli accessori tramite il connettore dock a 30 pin o in wireless via Bluetooth. Sviluppa un’app che riceve dati da sensori esterni o controlla accessori per mezzo di una sofisticata interfaccia Multi-Touch. Crea un’app di inventario per il tuo lettore di codici a barre. O progetta un’app che registri e tenga traccia delle letture di un cardiofrequenzimetro collegato. Puoi anche creare protocolli ad hoc per lo scambio di dati e comandi con la tua app. Per scoprire come aggiungere al tuo accessorio il supporto per app iOS, consulta il programma di licenze MFi (“Made for iPhone/iPod/iPad”) sul sito http://developer.apple.com/programs/mfi. Servizi di localizzazione. Usa il framework Core Location per determinare latitudine e longitudine attuali di un dispositivo e per configurare e pianificare la distribuzione di eventi relativi alla posizione. Il framework utilizza l’hardware disponibile per triangolare la posizione dell’utente in base alle informazioni di segnali nelle vicinanze. In iOS 4 e successivi sono stati apportati miglioramenti alle mappe grazie all’API MapKit, che offre il supporto per panoramiche e zoom, annotazioni personalizzate, identificazione della posizione attuale, e perfino geocoding per evidenziare alcune regioni della mappa e visualizzare informazioni aggiuntive. Pianificazione • Design • Sviluppo • Distribuzione 18 Integrazione di dati condivisi. iOS fornisce potenti opzioni di connettività per condividere informazioni tra le app. Usando una sintassi via URL, puoi accedere ai dati dal web, nonché attivare azioni in altre app installate, come Mail, Calendario, Contatti e altre. La tua app può anche dichiarare uno schema URL univoco che permetta a qualsiasi applicazione di avviarla. • Mail. iOS ti consente di presentare un’interfaccia standard di Mail o per la composizione di SMS all’interno della tua app. In entrambi i casi, puoi preconfigurare programmaticamente il messaggio con destinatari e contenuti che l’utente potrà modificare prima dell’invio. La posta in uscita e i messaggi SMS sono gestiti automaticamente dalle code di Messaggi e Mail del sistema. • Contatti. Con le API Address Book per i dati condivisi, la tua app può creare un nuovo contatto o ottenere informazioni sui contatti esistenti. Accedendo alla rubrica integrata, la tua app può permettere agli utenti di associare l’indirizzo di un contatto o un’azienda a un processo o un’operazione. • Calendari. Event Kit permette alle app iOS di accedere alle informazioni sugli eventi contenute nel database di Calendario di un’utente. Recupera eventi in base a un intervallo di date o un identificatore univoco, ricevi notifiche quando i record degli eventi cambiano, e permetti agli utenti di creare e modificare eventi per i propri calendari. Le modifiche apportate agli eventi nel database di Calendario di un utente con Event Kit sono automaticamente sincronizzate con il calendario appropriato, inclusi quelli aziendali ospitati su server CalDAV ed Exchange. Interface Builder, integrato direttamente nell’IDE di Xcode 4, semplifica la realizzazione del prototipo dell’app. Basta trascinare gli elementi per creare un’interfaccia utente completa senza scrivere alcun codice. • Immagini. UIKit offre accesso alla libreria di foto dell’utente. L’interfaccia del browser foto fornisce controlli per navigare la libreria di foto e selezionare un’immagine da riportare nella tua app. Hai anche la possibilità di attivare controlli di fotoritocco che consentano all’utente di spostarsi sull’immagine restituita e ritagliarla. Infine, puoi usare UIKit per fornire un’interfaccia alla fotocamera, in modo che le foto scattate possano essere caricate direttamente nella tua app. Core Animation Audio e video. Le tecnologie multimediali presenti nel kit SDK per iOS ti permettono di implementare nella tua app sofisticate capacità audio e video. Il framework Media Player supporta la riproduzione a tutto schermo dei file video, e il supporto integrato per lo streaming live HTTP semplifica l’uso di server web standard per la trasmissione di contenuti audio e video di alta qualità over-the-air. La tua app può anche sfruttare Core Audio per generare, registrare, mixare, elaborare e riprodurre audio. Usa Core Animation per aggiungere fluidità e dinamicità all’interfaccia utente. O sfrutta OpenGL ES per una grafica 2D e 3D ad alte prestazioni. Pianificazione • Progettazione • Sviluppo • Distribuzione 19 Sviluppo web Le web app rappresentano una categoria del tutto nuova di app mobili e stanno spianando la strada a nuove opportunità per le imprese. Si tratta di pagine web personalizzate che sfruttano le funzioni evolute di HTML, CSS e JavaScript per offrire agli utenti di iOS un’esperienza avvolgente. E creando applicazioni con HTML, puoi sviluppare web app in qualsiasi ambiente di sviluppo web. Per la distribuzione è sufficiente disporre di una pagina web: modifiche e aggiornamenti potranno essere gestiti dal server web che la ospita. Diamo ora una rapida occhiata alle tecnologie disponibili per creare web app per dispositivi iOS. HTML5 è la più recente specifica di HTML, lo standard primario che determina come i contenuti web interagiscono con i moderni browser. HTML 5 consente agli sviluppatori di integrare contenuti multimediali direttamente nelle pagine web standard, riducendo i tempi di sviluppo e potenziando l’interattività delle web app. Animazioni CSS3 ed effettivi visivi ti permettono di creare sofisticate interfacce utente grafiche per le web app. Puoi usare sfumature, maschere e riflessi, ma anche complessi effetti 2D e 3D. Abbinati al Multi-Touch consentono di ottenere web app che interagiscono con l’utente, proprio come le applicazioni native dell’iPhone e dell’iPad. Il Simulatore esegue l’app in modo pressoché analogo a un dispositivo iOS permettendoti di verificare e testare il codice direttamente dall’ambiente desktop. E poiché include il browser Safari per iOS, puoi anche testare e verificare le web app prima della distribuzione. WebKit è un motore open source per i browser web. Cuore di Safari su iPhone e iPad, WebKit semplifica lo sviluppo web e accelera l’innovazione. È un set di strumenti open source, quindi tutti possono usarlo gratuitamente, ed è alla base delle web app su iPhone e iPad. Dashcode è incluso nel kit SDK per iOS. Fornisce un ambiente integrato per progettare, compilare e testare le web app. Offre anche comodi modelli per aiutarti a dare vita alle tue idee. Safari 5 per Mac e Windows include un potente set di strumenti che semplificano il debugging, il perfezionamento e l’ottimizzazione di web app per massimizzare prestazioni e compatibilità. Per accedere alle risorse attiva il menu Sviluppo nelle Preferenze di Safari sul tuo Mac o PC. Pianificazione • Progettazione • Sviluppo • Distribuzione “Una delle cose che possiamo fare nell’SDK è accedere e fare modifiche veloci. Queste operazioni si possono eseguire molto rapidamente a video, e con il Simulatore puoi vederle quasi all’istante. In questo modo possiamo ottenere un feedback diretto.” - Todd Schofield, Standard Chartered Bank 20 Integrazione dei contenuti web nelle app native Con il kit SDK per iOS puoi anche dare accesso a contenuti web da un’app iOS usando l’elemento Web View, che permette alle tue web app di utilizzare funzioni di iOS come le notifiche push, la fotocamera integrata, il rilevamento del movimento 3D e molto altro. Come se non bastasse, ora puoi distribuire le ottimizzazioni della tua app tramite cambiamenti nel server web, senza dover procedere a una nuova distribuzione dell’app. Inoltre la possibilità di sfruttare i contenuti web nelle tue applicazioni ti dà modo di passare allo sviluppo nativo senza perdere l’investimento già fatto per lo sviluppo web. Accesso a sistemi di back-office “Dovevamo trovare un modo per fare aggiornamenti e modifiche molto rapidamente, perciò abbiamo scelto un approccio ibrido, con gli elementi nativi dell’interfaccia utente che risiedevano sul telefono e il resto sul web.” - Giancarlo De Lio, Mt. Sinai Hospital In molti casi la tua app aziendale avrà bisogno di accedere a depositi dati e sistemi di back-office esistenti. Anche se una priorità per qualsiasi app mobile di successo è offrire al cliente una fantastica esperienza utente, occorre prestare la stessa attenzione ai dettagli e all’architettura per integrare l’esperienza del cliente con i dati provenienti da server back-end. Il kit SDK per iOS include una potente suite di strumenti e framework per archiviare, utilizzare e condividere dati che risiedono su server aziendali. Servizi web Con il kit SDK per iOS, puoi utilizzare dati XML per le comunicazioni fra la tua applicazione client e il server. I file XML hanno un formato strutturato e semplificato che la tua app può facilmente leggere e scrivere, e si adattano al file system di iOS. Se usi SOAP, puoi sviluppare e analizzare le tue transazioni di dati, o usare librerie di terze parti come gSOAP o Axis2. Se implementi REST, puoi integrare l’XML direttamente nella tua app per fornire prestazioni superiori. Inoltre, molte app iOS usano JSON per uno scambio dei dati semplificato e librerie di terze parti come il framework JSON. Suggerimento veloce: Web View Per integrare contenuti web, devi semplicemente includere un oggetto UIWebView nell’app nativa, associarlo a una finestra e inviargli una richiesta di caricamento dei contenuti web. Puoi usare questa classe anche per spostarti nella cronologia di pagine web, e puoi perfino impostare programmaticamente alcune proprietà dei contenuti web. Connessione in rete iOS offre un’ampia gamma di tecnologie di connessione in rete moderne, sofisticate e facili da usare. BSD Sockets è l’interfaccia fondamentale di programmazione di rete per iOS, su cui si basano tutti i framework di livello superiore. È una buona scelta che offre prestazioni e flessibilità ottimali. Poiché BSD è lo standard di fatto per la programmazione di rete UNIX, spesso è facile trasferire il codice di connessione in rete da altre piattaforme. Bonjour è il potente protocollo Apple che semplifica l’individuazione automatica di sistemi e servizi su reti locali, senza richiedere configurazioni. La tua app ha accesso a queste funzioni tramite framework di alto livello che permettono di connettersi, renderizzare e interagire con le informazioni in ogni parte del mondo. Pianificazione • Progettazione • Sviluppo • Distribuzione 21 Archiviazione locale iOS fornisce Core Data e SQLite per aiutare la tua app a interagire con i dati archiviati sul dispositivo e a gestirli. • Core Data. Il framework Core Data include soluzioni generalizzate e automatizzate per i task comunemente associati al ciclo di vita e alla gestione grafica degli oggetti, persistenza inclusa. Core Data fornisce una soluzione di gestione dati per scopi generici, sviluppata per gestire le esigenze di modelli di dati di ogni genere di applicazione, grande o piccola. Puoi definire il modello di dati della tua app graficamente e accedervi facilmente dal tuo codice. Fornisce un’infrastruttura per gestire funzionalità comuni, come salvare, annullare e ripristinare, permettendoti concentrarti sull’aspetto innovativo della tua app. Poiché Core Data usa la libreria di dati SQLite integrata, non avrai bisogno di installare un sistema di database separato. • SQLite. iOS include la nota libreria SQLite, un motore di database relazionali semplice ma potente che può essere facilmente incorporato in un’app. Utilizzato in un’infinità di app in svariate piattaforme, SQLite è considerato di fatto lo standard di settore per la programmazione di database SQL incorporati. Diversamente dal framework di Core Data orientato agli oggetti, SQLite usa un’API procedurale incentrata su SQL per manipolare direttamente le tabelle di dati. Puoi usare SQLite perfino in web app scritte in JavaScript. Esempio: servizi web centralizzati Un ottimo modo per semplificare lo sviluppo back-end è centralizzare i servizi web, in particolare se l’app deve comunicare con più sistemi di backoffice. Per esempio, Sunbelt Rentals ha usato degli application server .Net per scrivere script in grado di richiamare stored procedure su sistemi AS/400 legacy e database CRM Microsoft. Ha potuto così esporre i dati recuperati da .Net tramite XML, rendendoli fruibili per l’app mobile. AS/400 MS SQL Servers MS CRM Protezione dell’app È probabile che la tua app in-house usi dati aziendali sensibili che necessitano di protezione. I responsabili IT hanno a disposizione molte delle protezioni di base a livello di dispositivo, come i criteri per il codice di accesso e la cancellazione remota. Ma indipendentemente da queste funzioni, è sempre consigliabile avere una strategia per la protezione dei dati che risiedono nelle tue app in-house. Per supportare la sicurezza dei dati nell’app, iOS fornisce un approccio “sandboxed” e richiede la firma delle app per garantire che non vengano alterate. iOS ha anche un framework sicuro per archiviare le credenziali delle app in un portachiavi criptato. Offre inoltre framework di alto livello che possono essere utilizzati per criptare i dati delle app e fornire una connessione in rete protetta. Puoi sfruttare tutte queste capacità nel tuo processo di sviluppo per creare fondamenta sicure senza incidere sull’esperienza utente. “La sicurezza ha avuto un ruolo importante nella decisione di sviluppare applicazioni per iPhone. L’iPhone ci ha offerto la sicurezza HTTPS, un portachiavi per mantenere private certi elementi e la possibilità di criptare i dati.” - Keith DeBickes, JM Family Pianificazione • Progettazione • Sviluppo • Distribuzione 22 Apps Suggerimento veloce: portachiavi condiviso Core Services CF Network •••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• Security Services Keychain Services Certificate, Key, and Trust Services Randomization Services Core OS LibSystem CommonCyrpto Puoi condividere elementi del portachiavi fra più app: questo favorisce la collaborazione fra app della stessa suite. Per esempio, puoi usare questa funzione per condividere password degli utenti o altri elementi che richiederebbero altrimenti un’autenticazione separata per ogni applicazione. Per accedere agli elementi condivisi durante il runtime, è necessario utilizzare l’interfaccia di programmazione Keychain Services con i gruppi di accesso configurati in fase di sviluppo. Per informazioni su come accedere al portachiavi, fai riferimento al documento Keychain Services Programming Guide nel portale sviluppatori iOS. Architettura Le API di sicurezza di iOS si trovano a livello dei servizi core del sistema operativo e si basano su quelli del kernel (livello core OS sottostante). Le app si rivolgono direttamente alle API dei servizi di sicurezza, senza passare dai livelli Cocoa Touch o Media. Le app di rete possono accedere alle funzioni di sicurezza anche attraverso l’API CFNetwork, che si trova a livello dei servizi core. CFNetwork è un’API in C di alto livello che semplifica la creazione, l’invio e la ricezione di messaggi HTTP serializzati. Poiché CFNetwork si basa su Secure Transport, puoi criptare il flusso di dati usando diverse versioni di protocollo SSL o TLS. Sicurezza della rete iOS supporta i servizi VPN, che permettono alle app in-house di comunicare con le reti aziendali in modo sicuro senza che tu debba scrivere alcun codice. Le organizzazioni IT possono configurare impostazioni VPN integrate per IPSec, L2TP o PPTP, oppure possono chiedere agli utenti di scaricare le app client VPN SSL di Juniper, Cisco o F5 dall’App Store. Per l’autenticazione basata su certificati, iOS offre la funzione “VPN su richiesta”, che stabilisce automaticamente una connessione quando un’app accede a domini predefiniti, fornendo un’immediata connettività alle app in-house. Per le app che necessitano di accesso Wi-Fi, iOS è compatibile con il protocollo Wi-Fi WPA2 Enterprise con autenticazione 802.1X. iOS supporta anche metodi di autenticazione standard come i certificati digitali, i token come SecurID o CRYPTOCard e le password. Pianificazione • Progettazione • Sviluppo • Distribuzione 23 Sicurezza dei dati Le app in-house possono proteggere i dati sensibili sfruttando le funzioni di crittografia integrate nei dispositivi Apple di ultima generazione. La protezione dei dati sfrutta il codice di accesso univoco del dispositivo del singolo utente unitamente alla crittografia hardware per generare una chiave di codifica forte. Se la tua app in-house stabilisce che un determinato file è protetto, il sistema archivia il file sul dispositivo in formato criptato. Quando il dispositivo è bloccato, i contenuti del file sono inaccessibili sia all’app sia a potenziali intrusi. Tuttavia, quando l’utente sblocca il dispositivo, iOS crea una chiave di decodifica che permette all’app di accedere al file. Dovrai progettare l’app in modo che protegga i dati mentre vengono creati e sia pronta ai cambiamenti nell’accesso a tali dati quando l’utente blocca e sblocca il dispositivo. Suggerimento veloce: libreria di autenticazione Un modo elegante per implementare la sicurezza nelle app iOS consiste nel creare una libreria di autenticazione condivisa da usare per tutte le app in-house. Puoi integrare questa libreria nei servizi di directory esistenti (LDAP o Active Directory) per evitare di dover scrivere nuovo codice di autenticazione ogni volta che crei una nuova app. Archiviando una credenziale nel portachiavi condiviso, puoi migliorare ulteriormente l’esperienza, poiché gli utenti non dovranno effettuare il login ogni volta che usano un’app. Nella libreria puoi anche definire periodi di timeout in base ai requisiti IT interni. La condivisione di questo tipo di codice tra le app interne crea coerenza in termini di criteri e di esperienza: un vantaggio sia per gli utenti sia per il reparto IT. Autenticazione sicura iOS fornisce un portachiavi sicuro e criptato per l’archiviazione di identità digitali, nomi utenti e password. Il sistema operativo suddivide i dati del portachiavi in modo che le credenziali memorizzate da app di altri produttori non siano accessibili dalle app con un’identità diversa. Questo consente a iOS di proteggere le credenziali di autenticazione per una gamma di app e servizi aziendali. In iOS, l’API Keychain Services controlla la firma dell’app prima di fornirle accesso a un portachiavi, gestendo l’accesso al portachiavi senza alcun intervento da parte dell’utente. Le tue app in-house possono interagire con il portachiavi tramite l’API Keychain Services. Test e verifica I test per la versifica di prestazioni, ottimizzazione dell’interfaccia utente, connessione in rete e usabilità nel mondo reale dovrebbero essere parte integrante del processo continuo di sviluppo. Di fatto, il motto “testare presto, testare spesso” è fondamentale per il successo dello sviluppo di app iOS. Puoi assicurarti che il design e il codice dell’app siano testati e verificati tempestivamente con una serie di metodi. Di seguito sono elencati gli strumenti di test di iOS utilizzabili a scopo di analisi e debugging. “Abbiamo un Single Sign-On per tutte le app, e liste di controllo degli accessi per quelle private. Quindi anche se scarichi un’app con Single Sign-On, verrà comunicato un perimetro alla nostra applicazione e verificheremo se puoi accedere all’app. In caso negativo, non avrai accesso.” - James Blomberg, General Electric Analisi statica. Trova bug nel tuo codice ancora prima di eseguire l’applicazione lasciando che l’analizzatore statico integrato in Xcode provi migliaia di possibili percorsi di codice in pochi secondi e segnali potenziali bug che avrebbero potuto rimanere nascosti o essere quasi impossibili da replicare. Pianificazione • Progettazione • Sviluppo • Distribuzione 24 Debugging in tempo reale sul dispositivo. Collega il tuo dispositivo per usare il debugger grafico di Xcode o raccogli dati sulle prestazioni in tempo reale nella vista timeline di Instruments. Con questi potenti strumenti di ottimizzazione potrai identificare e risolvere rapidamente qualsiasi problema relativo alle prestazioni. Potrai visualizzare i valori delle variabili spostando il mouse. Instruments. L’applicazione Instruments è un potente strumento di misurazione delle prestazioni che ti permette di esaminare il codice mentre viene eseguito e di raccogliere metriche importanti su quello che fa. Puoi visualizzare e analizzare i dati raccolti da Instruments in tempo reale, o puoi salvarli e analizzarli più tardi. Registrazione dei dati. Segnala a Instruments l’app da analizzare e gli strumenti da utilizzare. Fai clic sul grande pulsante rosso per avviare il processo di registrazione. I dati verranno raccolti e archiviati per la successiva analisi. Confronto visivo. Con la registrazione e la visualizzazione dei dati nel tempo è facile individuare relazioni tra i diversi tipi di dati raccolti, nonché gli stessi dati raccolti in varie esecuzioni. Esame dettagliato. Ispeziona picchi di dati sul grafico per vedere quale codice viene eseguito quando si verifica il picco, quindi accedi a Xcode per risolvere il problema. Instruments raccoglie e visualizza in tempo reale dati come l’uso del disco, della memoria o della CPU, semplificando l’individuazione di eventuali aree problematiche. Riproduzione. Crea una struttura di test ad hoc registrando l’interazione di un utente con la tua app, quindi riproduci la registrazione per vedere come eventuali modifiche del codice incidono sulle prestazioni. Test automatizzato dell’interfaccia utente. Lo strumento di automazione integrato funziona tramite gli script (scritti in JavaScript) che fornisci per attivare la simulazione di eventi nella tua app. Questi eventi sintetici sono generati con l’aiuto delle interfacce per l’accessibilità integrate in iOS. Puoi usare questo strumento per migliorare il processo di test e provare gli elementi di interfaccia della tua app mentre è in esecuzione su un dispositivo collegato. Uno sguardo avanti Come abbiamo visto in questo capitolo, gli strumenti e le risorse forniti nel kit SDK per iOS ti permettono di sviluppare rapidamente app straordinarie che sfruttano appieno le capacità sia di iOS sia del dispositivo. Inoltre, con il kit SDK per iOS le tue app sono pronte per la distribuzione in un lampo. Di fatto, molti team di sviluppo in-house hanno un approccio iterativo all’intero processo di sviluppo, e creano e distribuiscono app frequentemente durante il ciclo di vita del progetto. Con test e verifica integrati e un modello di sicurezza che protegga i dati aziendali, puoi distribuire le tue app a utenti e gruppi di qualsiasi dimensione. Nel prossimo capitolo ti guideremo passo passo nel processo di distribuzione delle app e ti aiuteremo a elaborare una strategia adatta al tuo ambiente aziendale specifico. Pianificazione • Progettazione • Sviluppo • Distribuzione “Uno strumento fondamentale è stato l’analizzatore statico, che ci ha permesso di rilevare i problemi senza dover eseguire l’app. L’analisi statica ha individuato all’istante cose che avrebbero potuto richiedere settimane o mesi di debugging, o che magari non avremmo mai trovato.” - Mark McWilliams, Razorfish 25 Distribuzione Una volta completati lo sviluppo e il test del codice della tua app, ci sono alcune operazioni importanti da eseguire prima che sia pronta per gli utenti. Per preparare l’app per la distribuzione, devi ottenere un certificato di distribuzione aziendale da Apple e firmare il tuo codice in Xcode. Dopo aver preparato il progetto Xcode per la distribuzione, puoi ospitare la tua app in-house in modo sicuro sul server web e distribuirla direttamente agli utenti via Wi-Fi e 3G. Questo capitolo illustra i processi per la distribuzione e la gestione del ciclo di vita della tua app. Preparazione per il lancio Checklist per la distribuzione Al termine della fase di distribuzione, dovresti aver completato quanto segue. Creazione del profilo di fornitura e del certificato aziendale Definizione di un server web di distribuzione o di una soluzione per la distribuzione delle app in wireless Annuncio della soluzione agli utenti finali Per iniziare il processo di distribuzione, dovrai effettuare la certificazione e la fornitura dell’app con l’iOS Developer Enterprise Program, nonché firmare e creare il progetto in Xcode. Un semplice processo in tre fasi ti preparerà a distribuire l’app direttamente da Xcode. 1. Crea e scarica un certificato di distribuzione. Per distribuire la tua app iOS, l’agente designato nell’iscrizione al Developer Program dovrà creare un certificato di distribuzione. Solo l’agente del tuo team potrà creare questo certificato e solo questo certificato permetterà la distribuzione aziendale dell’app. Puoi trovare informazioni e istruzioni passo passo su come scaricare e creare un certificato di distribuzione aziendale nell’iOS Provisioning Portal sul sito http://developer.apple.com/ios/manage/ overview/. 2. Crea e scarica un profilo di fornitura. Quando sarai pronto per distribuire l’app, dovrai creare un profilo di fornitura aziendale. Questi profili possono essere installati su qualsiasi dispositivo, quindi potrai usare questo metodo per una distribuzione su larga scala all’interno dell’azienda. Panoramica: Provisioning Portal per gli sviluppatori L’iOS Provisioning Portal ti guida attraverso i passaggi richiesti per testare le app sui dispositivi iOS e prepararle per la distribuzione. Userai l’iOS Provisioning Portal per molti dei passaggi descritti in questo capitolo, per esempio creare certificati e profili di fornitura. Visita il Member Center nell’iOS Dev Center per accedere al portale e a ulteriore documentazione utile. I profili di fornitura per la distribuzione sono associati al tuo certificato di distribuzione e ti permettono di creare app che gli utenti possono eseguire sui propri dispositivi iOS. Puoi creare un profilo di fornitura per un’app specifica, o per più app, specificando l’AppID autorizzato dal profilo. Se un utente ha un’app, ma non ha un profilo che ne autorizza l’uso, non potrà utilizzare l’app. Dato che questi profili sono strettamente legati al certificato, quando quest’ultimo viene revocato o scade, l’app non funzionerà più. Ci sono due tipi di profili di fornitura: Ad Hoc e Enterprise. I profili Ad Hoc sono limitati a specifici ID dispositivo, pertanto possono essere eseguiti soltanto su un dispositivo specifico che sia stato identificato (tramite ID dispositivo) e caricato sul portale del Developer Program. I profili Ad Hoc sono adatti per test interni o programmi beta limitati, perché non sono scalabili oltre i 100 dispositivi e richiedono molto lavoro a livello amministrativo (ovvero l’aggiunta di ID dispositivo al portale del programma). Pianificazione • Progettazione • Sviluppo • Distribuzione 26 È importante notare che un profilo di fornitura non è un meccanismo di sicurezza. Anche se fornisce un’autorizzazione di base per l’esecuzione di un’app, non offre l’autenticazione dell’utente o un’ulteriore protezione per i dati utilizzati o visualizzati all’interno dell’app. È sempre buona norma proteggere l’app stessa con metodi interni. Come accennato nel capitolo “Sviluppo” di questa guida, puoi sfruttare un’ampia gamma di framework e funzioni di sicurezza di iOS per la tua app in-house. Per esempio, uno dei modi migliori per proteggere l’app è creare una libreria standard per l’autenticazione dell’utente. 3. Firma e crea in Xcode. Una volta installati il tuo certificato di distribuzione e profilo di fornitura, dovrai firmare il codice in Xcode. Per maggiori informazioni sul processo di firma del codice, segui le istruzioni passo passo fornite nell’iOS Provisioning Portal. Quando l’app è firmata, Xcode la prepara per la distribuzione aziendale con un semplice processo di esportazione. Usa l’Organizer di Xcode per condividere un progetto che è stato aggiunto al tuo archivio e seleziona le opzioni per la distribuzione aziendale. Questo processo prepara automaticamente l’app, il profilo di fornitura e altri elementi necessari per la distribuzione in wireless. Distribuzione Una volta completata la creazione dell’app, la distribuzione può essere effettuata ospitando l’app su un semplice server web interno, preparando il tuo catalogo di app in-house o usando una soluzione per la gestione dei dispositivi mobili (MDM) di terze parti. La soluzione più adatta dipende dai tuoi requisiti specifici, dalla tua infrastruttura e dal livello di gestione dell’app di cui hai bisogno. Pianificazione • Progettazione • Sviluppo • Distribuzione Panoramica: Xcode Organizer L’Organizer è un’unica finestra per gestire progetti Xcode, archivi SCM, archivi di app, e dispositivi: per esempio, permette di configurare in un clic nuovi dispositivi iOS per lo sviluppo. Nel contesto della distribuzione di app, l’Organizer è la libreria centrale da cui le app possono essere condivise (esportate) per la distribuzione aziendale. L’Organizer può anche essere utilizzato per installare app in-house e profili di fornitura su dispositivi collegati. 27 Processo di distribuzione dell’app in wireless Il modo più semplice di distribuire la tua app è quello di ospitarla su un server web. Procedi come segue. 1. Ospita l’app su un server web cui possono accedere i dipendenti. 2. Avvisa gli utenti che l’app è disponibile con un’email, un SMS, una notifica push o altri metodi tramite i quali gli utenti possano essere avvisati su un dispositivo iOS; assicurati di includere l’URL dell’app. 3. Toccando l’URL viene installata l’app. Una finestra di dialogo chiederà agli utenti se desiderano procedere con l’installazione. Per maggiori informazioni su come creare un servizio di distribuzione delle app in wireless, vai su http://developer.apple.com/library/ios/navigation/. Catalogo di app in-house Il tuo team può anche creare un catalogo di app interno che offra un portale per la distribuzione over-the-air delle tue app iOS. Questo modello self-service permette ai dipendenti di scaricare e installare le app con il minimo sforzo. Il catalogo può fornire direttamente gli URL per il download delle app permettendo l’installazione e l’aggiornamento di diverse app contemporaneamente, così da velocizzare la distribuzione e il setup. Un sito web o un’app nativa, ottimizzata per iPhone o iPad, è un metodo ancora più facile di fornire gli URL in un modo familiare e organizzato. Per un esempio di catalogo di app in-house, leggi il riquadro qui a destra, “Case study: l’App Store interno di GE”. Gestione degli aggiornamenti Le app in-house distribuite internamente non vengono aggiornate in automatico. Dovrai avvisare i dipendenti che è disponibile un aggiornamento e che devono installare l’app. Se l’identificatore assegnato all’app in Xcode non cambia, l’app verrà riconosciuta come esistente e l’aggiornamento verrà installato mantenendo i dati e le preferenze dell’app archiviati localmente. Per maggiore comodità, puoi sviluppare una funzione nell’app che contatti il server per verificare la disponibilità di aggiornamenti durante il runtime. Con la distribuzione in wireless puoi fornire un link all’app aggiornata direttamente nella tua app. Se crei un’applicazione nativa per il tuo catalogo di app, considera l’uso dei servizi di notifica push: puoi visualizzare un avviso o un badge sull’icona dell’app per informare gli utenti della disponibilità di aggiornamenti. Gestione dei dispositivi mobili (MDM) Molte soluzioni MDM di terze parti offrono fin da subito funzioni di distribuzione delle app in wireless. I vantaggi della gestione di app in-house all’interno di un ambiente gestito includono la possibilità di fare un controllo delle versioni e di tenere traccia della versione dell’app eseguita da ciascun utente. Pianificazione • Progettazione • Sviluppo • Distribuzione Case study: l’App Store interno di GE La task force mobile in-house di GE, il Mobile Center of Excellence, non si limita a sviluppare app all’avanguardia. Ha anche creato un portale web interno, l’App Store interno di GE, per semplificare i download di app aziendali da parte degli oltre 300.000 dipendenti di GE. “Avevamo bisogno di una soluzione per distribuire le applicazioni mobili internamente,” spiega James Blomberg, Director of New Media and Emerging Technology di GE. “Abbiamo app anche sull’App Store di Apple, ma ci serviva un portale privato per le applicazioni GE che non devono essere condivise.” A partire dal lancio nel 2009, l’App Store di GE ha totalizzato decine di migliaia di accessi da parte di visitatori interni e più di 100.000 download di app. Quando sono disponibili nuove app, il gruppo le promuove su un portale intranet aziendale, e tramite pubblicazioni e passaparola nel Mobile Center of Excellence di GE, che conta 200 membri provenienti da tutti i principali settori di attività dell’azienda. Il successo dello Store è dovuto in parte al suo design semplice ed efficace. “L’interfaccia è elaborata ma facile da usare,” afferma Dayan Anandapa, Director of Digital Technologies and Collaboration presso GE. “Una volta registrati, basta cliccare su un URL per essere guidati nel processo di download. Poiché i dispositivi stessi sono intuitivi, vogliamo che anche l’installazione lo sia.” In un’azienda così grande e diversificata come GE, non tutte le app in-house sono adatte a tutti gli utenti. Per controllare l’accesso alle app e renderle disponibili solo a determinati utenti, l’azienda ha istituito un sistema di accesso a due livelli. “Abbiamo un Single Sign-On per tutte le app, e liste di controllo degli accessi aggiuntive per quelle private,” spiega Blomberg. Oltre ad agevolare il processo di download delle app, l’App Store interno di GE aiuta a focalizzare l’attenzione generale sulle risorse mobili dell’azienda. Ma ha anche altri vantaggi. “Funge da archivio, un centro di condivisione delle conoscenze per le nostre diverse attività,” dice Blomberg. “E in effetti ha contribuito a instaurare nuove relazioni tra persone che non si conoscevano e che ora lavorano insieme. La collaborazione e la comunicazione all’interno di GE si basano in gran parte su risorse mobili.” 28 Diverse soluzioni offrono anche servizi di notifica push che informano gli utenti della disponibilità di nuove app e aggiornamenti. E poiché le soluzioni MDM possono definire configurazioni di rete e criteri di sicurezza, sono un ottimo modo per fornire impostazioni direttamente al dispositivo (per esempio certificati VPN o Wi-Fi) quando viene installata l’app. Per maggiori informazioni sulle soluzioni MDM, vai su www.apple.com/it/iphone/business/integration/mdm. Annuncio della soluzione Congratulazioni! Hai progettato, sviluppato e distribuito un’app iOS per i tuoi dipendenti. L’unica cosa che ti resta da fare è annunciare la soluzione all’interno dell’organizzazione. Anche le app migliori e più innovative possono non essere adottate dall’azienda o non far fruttare l’investimento se gli utenti non sono informati della loro esistenza. Ci sono molti modi per comunicare le soluzioni agli utenti. Ecco alcune idee da considerare quando crei l’annuncio dell’app e il pacchetto di comunicazione. • Considera l’ipotesi di promuovere le tue ultime app in-house sull’intranet aziendale. • Crea sull’intranet un sito dedicato alle app iOS e consenti agli utenti di pubblicare commenti, partecipare a forum e così via. • Fornisci una demo video della tua app in azione che permetta agli utenti di capire le potenzialità della soluzione. • Invia email e newsletter per informare gli utenti. • Appendi poster e altri materiali grafici in posizioni strategiche in modo che i dipendenti vedano l’app mentre si spostano all’interno degli uffici o della sede aziendale. Esempio: comunicazioni interne Quando annuncia la disponibilità di nuove app in-house agli utenti, la priorità per Genentech è comunicare le funzioni e i vantaggi di ogni soluzione. Proprio come uno sviluppatore commerciale potrebbe creare la campagna di lancio di un prodotto, Genentech ha creato materiali di marketing interno specifici per ogni nuova app in-house. Questo ha avuto un impatto immediato informando a livello globale gli utenti e promuovendo l’adozione delle nuove app. • Se possibile, invia agli utenti notifiche push sulla disponibilità di nuove app o di importanti miglioramenti delle funzioni. • Integra il catalogo di app interno con schermate e demo video della tua app per informare i dipendenti del suo scopo. Uno sguardo avanti La distribuzione e l’annuncio dell’app non sono la fine del processo, ma solo l’inizio. Dopo il successo di ogni app mobile, gli utenti ne chiederanno altre. Questa guida non è altro che un punto di partenza per il tuo team di sviluppo. Oltre alla guida, è disponibile un’ampia gamma di risorse di apprendimento, best practice, suggerimenti e tecniche nell’ambito dell’iOS Developer Program. Entra in contatto con altri sviluppatori tramite i forum o scarica video utili per esplorare e scoprire funzionalità più avanzate della piattaforma. Le possibilità sono infinite. Pianificazione • Progettazione • Sviluppo • Distribuzione 29 Risorse di apprendimento aggiuntive Vuoi salire di livello nel mondo dello sviluppo in-house? Le risorse di apprendimento per esperti elencate qui sotto approfondiscono gli argomenti più importanti e forniscono informazioni tecniche dettagliate. Video della WWDC Per vedere gli ingegneri e gli esperti Apple che parlano di come creare soluzioni innovative con le più recenti tecnologie Apple, vai su: http://developer.apple.com/videos/wwdc/2010/ Podcast della Stanford University Scopri quali sono le API e gli strumenti richiesti per creare app per iPad, iPhone e iPod touch. Il podcast “Developing Apps for iOS” della Stanford University tratta argomenti come il design dell’interfaccia, l’interazione con l’utente usando il Multi-Touch, Core Animation e molto altro. Cerca la serie su iTunes o vai su: http://itunes.apple.com/it/itunes-u/developing-apps-for-ios-hd/id395605774 Big Nerd Ranch Parti alla grande nel mondo dello sviluppo per iOS con questo corso di sette giorni pensato per fornirti le basi di Objective-C e del kit SDK per iOS. Per informazioni sull’offerta di Big Nerd Ranch in Europa, vai su: http://www.bignerdranch.com/locations/netherlands Pragmatic Studio Su iTunes trovi podcast di livello base e intermedio sullo sviluppo di app complete per iOS. Per saperne di più, vai su: https://itunes.apple.com/it/podcast/pragmatic-studio-bonustracks/id312552710?mt=2 © 2013 Apple Inc. Tutti i diritti riservati. Apple, il logo Apple, Bonjour, Cocoa Touch, Dashcode, iMac, Instruments, iPad, iPhone, iPod, iPod touch, iTunes, il logo iTunes, Keychain, Mac, MacBook, MacBook Air, Safari e Xcode sono marchi di Apple Inc., registrati negli USA e in altri Paesi. Multi-Touch è un marchio di Apple Inc. Apple Store è un marchio di servizio di Apple Inc., registrato negli USA e in altri Paesi. App Store è un marchio di servizio di Apple Inc. Il marchio e il logo Bluetooth sono di proprietà di Bluetooth SIG, Inc. e qualsiasi uso da parte di Apple è concesso in licenza. Intel e Intel Core sono marchi di Intel Corp. negli USA e in altri Paesi. UNIX è un marchio registrato di The Open Group. Tutti gli altri prodotti e nomi di aziende citati sono marchi dei rispettivi proprietari. Il presente materiale è fornito a puro titolo informativo; Apple non si assume alcuna responsabilità in merito al suo utilizzo. 30