Tecnologie e progettazione di sistemi informatici e di telecomunicazioni - Parte 1: APPLICAZIONI MOBILE

Pagina creata da Marco Neri
 
CONTINUA A LEGGERE
Tecnologie e progettazione di sistemi informatici e di telecomunicazioni - Parte 1: APPLICAZIONI MOBILE
Tecnologie e progettazione di
   sistemi informatici e di
      telecomunicazioni
                                Classe V

          Parte 1:       APPLICAZIONI MOBILE

   Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
Tecnologie e progettazione di sistemi informatici e di telecomunicazioni - Parte 1: APPLICAZIONI MOBILE
Applicazioni mobile

Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
Tecnologie e progettazione di sistemi informatici e di telecomunicazioni - Parte 1: APPLICAZIONI MOBILE
RoadMap

Sommario
 Reti mobili e dispositivi: introduzione ............................................................................................. 4

 Dalla prima alla quinta generazione: storia degli standard di telecomunicazione......................... 5

 Sistemi operativi mobili ................................................................................................................... 8

    Tipologie di Sistemi ...................................................................................................................... 8

    Il kernel......................................................................................................................................... 8

    Android....................................................................................................................................... 13

    iOS .............................................................................................................................................. 15

    Windows Phone ......................................................................................................................... 16

 App per sistemi mobili ................................................................................................................... 17

    Apache Cordova: Descrizione e Funzionamento ....................................................................... 19

    Componenti di base ................................................................................................................... 21

    Ambienti di sviluppo .................................................................................................................. 22

    Creazione di un progetto ........................................................................................................... 23

     Build e run di un progetto ......................................................................................................... 26

     Eventi......................................................................................................................................... 27

     Architettura di un’App .............................................................................................................. 28

     Boilerplate di base (cordova+f7) ............................................................................................... 29

     Componenti UI .......................................................................................................................... 33

    Plugin.......................................................................................................................................... 35

                 Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
Tecnologie e progettazione di sistemi informatici e di telecomunicazioni - Parte 1: APPLICAZIONI MOBILE
Reti mobili e dispositivi: introduzione

Le reti mobili sono caratterizzate dal fatto che i dispositivi ad esse connesse si scambiano
informazioni senza utilizzare fili/cavi e possono mantenere attiva la connessione anche se
modificano la loro posizione, a differenza delle reti cablate, i cui dispositivi sono connessi tramite
cavi e sono quindi costituite perlopiù da postazioni fisse.

L’evidente vantaggio delle reti mobili è quindi quello di mantenere la connessione anche a Km di
distanza ed in movimento, con l’ulteriore comodità di poter individuare/rintracciare i dispositivi
anche quando sono appunto in movimento e a Km di distanza.

Anche se spesso non viene effettuata una distinzione tra reti wireless e reti mobili a tutti gli effetti,
è doveroso ricordare che le prime non sono altro che soluzioni per reti aziendali che permettono di
scambiare informazioni senza fili e una mobilità limitata solo all’area coperta dalla rete stessa.

I dispositivi mobili sono appunto apparati in grado di connettersi tra lori tramite una rete mobile,
spesso dotati di processori con capacità di calcolo assimilabili a quelle delle postazioni fisse, tuttavia,
per le loro caratteristiche fisiche, soprattutto la dimensione dello schermo, necessitano di
meccanismi di interfacciamento diversi rispetto alle postazioni fisse, primo fra tutti il thouch e sono
dotati di sistemi operativi e software specifico per ogni singolo tipo di dispositivo.

              Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
Tecnologie e progettazione di sistemi informatici e di telecomunicazioni - Parte 1: APPLICAZIONI MOBILE
Dalla prima alla quinta generazione: storia degli
         standard di telecomunicazione

Fonte: http://www.sicomtesting.com/blog/dal-1g-al-5g-il-passato-e-il-futuro-degli-standard-gsm-
umts-hspa-ed-lte/

La comunicazione mobile si è evoluta moltissimo in pochi decenni, nei quali si sono avvicendate le
varie generazioni di dispositivi e reti compatibili con i nuovi standard di telecomunicazione.

I Generazione: i sistemi di prima generazione, apparsi negli “lontani” anni ’80 sotto la sigla 1G,
trasmettevano in modalità analogica ed erano in grado di gestire solo il traffico voce. La qualità della
comunicazione offerta dai telefoni cellulari di prima generazione, apparecchiature decisamente
voluminose, presentava evidenti limiti legati alla tipologia di segnale, come la scarsa qualità audio e
le frequenti interruzioni.

2^ Generazione: allo scopo di migliorare la qualità di trasmissione, la capacità di sistema e la
copertura del segnale, la seconda generazione di reti mobili 2G ha segnato un punto di rottura con
la tecnologia precedente, puntando tutto passaggio al digitale introdotto dallo standard GSM
(Global System for Mobile communications).

Nato in Europa nei primi anni ’90, ad oggi il GSM, implementato dalle sue successive evoluzioni, si
attesta come lo standard di telefonia mobile con il maggior numero di utenti a livello mondiale.

L’uso del digitale ha sancito la nascita dei primi servizi di trasmissione dati, sotto forma di messaggi
di testo (SMS – Short Message Service), messaggi multimediali (MMS – Multimedia Message
Service) e WAP (Wireless Application Protocol), lo standard che ha consentiva l’accesso a appositi
contenuti Internet da telefonino. Tutto questo è stato reso possibile dalle evoluzioni dello standard
GSM, la generazione 2.5 G, una via di mezzo fra la seconda (GSM) e la terza generazione (UMTS). La
tecnologia GPRS (General Packet Radio Service) prima,
seguita dalla tecnologia EDGE (Enhanced Data rates for
Global Evolution), hanno permesso un incremento
della velocità di connessione basandosi su un nuovo
sistema di trasmissione dati a commutazione di
pacchetto.

3^Generazione: le tecnologie di terza generazione
vengono lanciate in tutto il mondo nei primi anni 2000;
i nuovi standard internazionali di telefonia mobile 3G
seguono le specifiche tecniche IMT-2000 definite dal
ITU, Unione Internazionale delle Telecomunicazioni,
ponendosi come obiettivo la realizzazione di sistema
mondiale di comunicazione mobile per il roaming
              Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
Tecnologie e progettazione di sistemi informatici e di telecomunicazioni - Parte 1: APPLICAZIONI MOBILE
globale dei terminali. Tra questi, lo standard UMTS (Universal Mobile Telecommunications System),
tutt’ora attuale e il più utilizzato in Europa, è anch’esso un evoluzione del GSM. L’introduzione del
protocollo W-CDMA (Wideband Code Division Multiple Access), una particolare tecnologia di
accesso multiplo al canale radio per reti cellulari di terza generazione, ha consentito allo standard
UMTS di offrire un ulteriore velocizzazione del trasferimento dati. Le prestazioni dell’UMTS,
migliorate dall’utilizzo di protocolli di trasmissione HSPA (High Speed Packet Access) hanno favorito
l’ampliamento e una maggiore qualità dei servizi multimediali fruibili da rete mobile, permettendo
ad esempio di effettuare videochiamate fluide e navigare su Internet potendo accedere alla versione
desktop dei siti web.

4^ Generazione: la sigla 4G identifica la quarta, ed attuale, generazione dei servizi di telefonia
mobile. La tecnologia LTE (Long Term Evolution), e la sua più recente evoluzione LTE Advanced (LTE-
A), sono state sviluppate a partire dal 2009 per incrementare le prestazioni delle reti cellulari 4G,
inviando e ricevendo dati ad una velocità di connessione in grado di competere con la velocità delle
connessioni domestiche.

Grazie ad una copertura rete sempre maggiore e all’aumento di dispositivi in grado di supportarla,
sempre più smartphone e tablet possono navigare e accedere a cloud, servizi di streaming e video
conferenza in alta definizione senza rallentamenti o interruzioni, resi possibili dalla connessione
veloce e dalla riduzione dei tempi di latenza raggiunti dalle reti 4G.

In Italia la rete 4G ha una velocità di connessione di 15Mbps, che ci colloca ta i primi paesi al mondo
come qualità del servizio anche se, purtroppo, non abbiamo ancora una buona copertura.
L’obiettivo dell’agenda digitale per l’Italia prevede una copertura a 30 Mbps entro il 2020.
Il seguente grafico riporta le previsioni di crescita della rete 4G rispetto alla rete 3G per il decennio
corrente.

              Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
Tecnologie e progettazione di sistemi informatici e di telecomunicazioni - Parte 1: APPLICAZIONI MOBILE
5^ Generazione: Operatori di telecomunicazione ed esperti del settore sono già impegnati nella
ricerca e sviluppo del 5G, l’infrastruttura tecnologica in grado migliorare ulteriormente la velocità di
trasmissione dati delle attuali reti per supportare il crescente numero di utenti e servizi accessibili
da rete mobile.

L’Unione Internazionale delle Telecomunicazioni sta iniziando a delineare le linee guida IMT-2020
su cui si baserà il nuovo standard 5G, grazie al quale potremo navigare da smarthphone e tablet ad
una velocità massima teorica di 20 Gbps, fino a 20 volte più veloci della velocità massima teorizzata
per il 4G (1 Gbps).

La nuova generazione di tecnologia mobile, che secondo le previsioni ITU potrebbe iniziare ad essere
disponibile dal 2020, oltre ad offrire maggiore velocità con tempi di latenza ridottissimi, sarà in
grado di connettere un altissimo numero di dispositivi per kmq e mantenere la connessione anche
viaggiando ad altissime velocità. Il 5G fornirà nuovi e migliori servizi per la comunicazione, migliorerà
prestazioni nel gaming e nella realtà aumentata, permetterà inoltre di sviluppare al meglio il
cosiddetto “Internet delle Cose” (IoT, Internet of Things): sempre più device, dai dispositivi
indossabili ai più svariati oggetti comuni dotati di un’identità elettronica, potranno dialogare in rete
ed essere controllabili a distanza.

              Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
Tecnologie e progettazione di sistemi informatici e di telecomunicazioni - Parte 1: APPLICAZIONI MOBILE
Sistemi operativi mobili

         Tipologie di Sistemi

L'accesso diretto all'hardware può essere anche molto complesso. Il
Sistema Operativo e, in particolare il Kernel, “nascondono” le complessità
dell’hardware e rendono la macchina “gradevole” all’utente.

Pur nelle loro differenze c'è un elemento strutturale che accomuna ogni
sistema operativo – sia mobile sia desktop – oggi in uso: il kernel
(“nocciolo” o “fulcro in inglese).

Naturalmente, ognuno dei sistemi operativi (Windows, Android, iOS, Mac OS, …) ha un proprio
kernel, realizzato in base alle necessità del sistema operativo stesso. Per funzionare, però, tutti
hanno bisogno di questo componente.

Utilizzando varie modalità di gestione – tra le quali la comunicazione tra processi e le chiamate di
sistema – il kernel fa da ponte tra le componenti hardware di un computer – come processore, RAM
e hard disk – e i programmi in esecuzione sul computer stesso.

Data la sua rilevanza è il primo programma ad essere caricato in memoria quando si accende un
computer e l'ultimo ad essere chiuso in fase di spegnimento. (cfr. Wikipedia e altre fonti in rete).

         Il kernel

I kernel implementano uno o più tipi di astrazione dall'hardware, il cosiddetto “Hardware
abstraction layer”. Queste astrazioni servono a "nascondere" la complessità e a fornire
un'interfaccia pulita ed uniforme all'hardware sottostante, in modo da semplificare il lavoro degli
sviluppatori.

I kernel si possono classificare - in base al grado di astrazione dell'Hardware - in almeno tre categorie
(vedi figura sottostante): monolitici, microkernel, ibridi.

                Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
Tecnologie e progettazione di sistemi informatici e di telecomunicazioni - Parte 1: APPLICAZIONI MOBILE
-   Kernel monolitici, che implementano direttamente una completa astrazione dell'hardware
    sottostante. Nei sistemi tradizionali la struttura a buccia di cipolla (gerarchica) presiede le
    funzionalità del sistema operativo: dal kernel alla shell i livelli si parlano tramite primitive e i
    processi applicativi intervengono sullo strato più elevato che fornisce i servizi di sistema.

-   Microkernel, che forniscono un insieme ristretto e semplice di astrazione dell'hardware e usano
    software (chiamati device driver o server) per fornire per fornire maggiori funzionalità. Tuttavia
    per ragioni di prestazioni quasi nessun sistema operativo dispone di un microkernel puro (l'unica
    eccezione è Mach). In Windows NT/Vista/Seven/10 molti servizi sono implementati in kernel
    mode, fra i quali il file system, la gestione della memoria e anche la gestione della grafica. A
    livello di prestazioni e di sicurezza questo equivale ai kernel monolitici (ad esempio UNIX e
    Linux), ma permette una flessibilità maggiore.

-   Kernel ibridi (o microkernel modificati), che si differenziano dai microkernel puri per
    l'implementazione di alcune funzioni aggiuntive al fine di incrementare le prestazioni rispetto ai
    kernel monolitici. I Microkernel, che forniscono I kernel ibridi sono essenzialmente dei
    microkernel che hanno del codice "essenziale" al livello di spazio del kernel in modo che questo
    codice possa girare più rapidamente che se fosse implementato ad alto livello. Questo fu un
    compromesso adottato da molti sviluppatori di sistemi operativi. "Ibrido" implica che il kernel in
    questione condivida concetti architetturali e meccanismi tipici sia dei kernel monolitici che dei
    microkernel.

Infatti la definizione di microkernel prevede che solo i servizi essenziali debbano risiedere nel kernel,
e tutti gli altri servizi del sistema operativo, inclusi la gestione della memoria e l'Input/Output,
dovrebbero         operare    in     user     mode       in     spazi     di     memoria       separati.
Nei sistemi basati sull’approccio Client-Server è il sistema operativo stesso che viene suddiviso in
più processi, ciascuno dei quali realizza un unico insieme di servizi.

Esistono servizi per la memoria, per la creazione dei processi, per la tempificazione dei processi etc.
Ogni servizio gira in modalità Kernel privilegiata. Il Client, che può essere un altro componente del
sistema, oppure un programma applicativo, che chiede un servizio mandando un messaggio al
server/servizio.

Il Kernel, che gira in “modo kernel”, consegna il messaggio al server: il server esegue l’operazione
richiesta e risponde al client con un altro messaggio.

Tra i Kernel ibridi, i più usati, consideriamo ad esempio Windows e la modalità con cui gestisce
l’interfaccia tra il microkernel e l’hardware. L’HAL costituisce la tecnologia ed i drivers che
permettono a Windows di comunicare con l'hardware.

              Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
Tecnologie e progettazione di sistemi informatici e di telecomunicazioni - Parte 1: APPLICAZIONI MOBILE
In particolare:

“Hardware Abstraction Layer (HAL) o strato di astrazione dall'hardware, è un insieme di funzioni di
I/O il più possibile generiche e semplici, il cui compito è di tenere conto di tutte le differenze fra
dispositivi fisici diversi al posto del programma che lo userà, nascondendogli la vera identità e natura
di essi: per esempio il programma, invece di aprire personalmente un file chiederà all'HAL di farlo
per lui e l'HAL, appena esaudita la richiesta, gli passerà un riferimento al file per la lettura (o lo
leggerà per lui). Dotando un programma di un HAL se ne migliora la portabilità su altri tipi di
computer/sistemi operativi e la funzionalità con dispositivi diversi, perché eventuali modifiche e
adattamenti vanno fatti solamente nell' HAL senza toccare il codice del programma stesso; inoltre è
relativamente facile aggiungere, all'occorrenza, una sezione all'HAL per gestire un dispositivo che
non era stato inizialmente previsto.

Quindi i programmi non accedono mai alla memoria della scheda grafica quando devono modificare
l'immagine mostrata sullo schermo. I programmi comunicano al sistema operativo le operazioni da
compiere e il sistema operativo provvede a effettuare le modifiche necessarie. Questo consente di

              Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
modificare l'hardware deposto alla visualizzazione senza dover modificare tutti i programmi. Basta
modificare lo strato che accede all'hardware, questo comunemente viene chiamato driver.

La HAL può essere utilizzata per emulare componenti non presenti nel sistema operativo o
nell'hardware. Per esempio le moderne schede grafiche non gestiscono nativamente le modalità
CGA, EGA o VGA. Queste modalità vengono emulate dall'HAL che provvede a tradurre le istruzioni
che gestiscono queste modalità in comandi comprensibili dalla scheda grafica. L'emulazione
utilizzando una HAL viene utilizzata in molti sistemi per consentire la retro compatibilità con
applicazioni arcaiche. Molte banche utilizzano computer moderni con programmi arcaici tramite
programmi di emulazione che interpongono una HAL tra l'hardware moderno e il software arcaico.”

(note tratte http://it.wikipedia.org/wiki/Hardware_abstraction_layer)

Sistemi Operativi mobili e wearable (Note tratte da Wikipedia, l’enciclopedia libera)

-   “Un sistema operativo per dispositivi mobili, in inglese "mobile OS", è un sistema operativo che
    controlla un dispositivo mobile con lo stesso principio con cui Mac OS, Unix, Linux o Windows
    controllano un desktop computer oppure un laptop.”
-   Tuttavia affronta problematiche legate alla natura del dispositivo mobile, più critiche rispetto
    ad un desktop o un laptop, tra le tante:
    •    la limitatezza delle risorse (memoria, CPU),
    •    l'assenza di alimentazione esterna,
    •    differenti tecnologie per l'accesso a Internet (WiFi, GPRS, HSDPA...),
    •    nuovi metodi d'immissione (touchscreen, minitastiere),
    •    ridotte dimensioni del display.”

Esempi di SO mobile

    Produttore              OS                 Famiglia di      Architettura CPU     Linguaggio di
                                            sistemi operativi     supportata       programmazione

        Apple               iOS             macOS/Unix-like          ARM           C, C++,Objective C

    Google Inc.           Android                Linux            ARM/MIPS            C, C++, Java

    Microsoft            Windows              Windows CE             ARM                C++,C#
                     Mobile/Windows         5.2/Windows NT
                           Phone

                Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
La rivoluzione della mobilità (https://e-
l.unifi.it/pluginfile.php/58454/mod_resource/content/1/Sistemi%20ed%20applicazioni%20mobile.
pdf)

-   Il terminale è sempre disponibile all’utente: – in qualsiasi situazione – con tempi di accesso
    brevissimi

-   Il terminale deve essere comodo: – Ingombro e peso ridotti – Interazione con l’utente
    semplicissima: un tablet o uno smartphone può essere utilizzato in piedi, un notebook no

-   Il terminale deve essere consapevole dell’ambiente: – Vari sensori per rilevare la posizione,
    l’orientamento nello spazio, la luce

-   Il terminale deve essere rapido nell’accesso: – In viaggio non si possono aspettare decine di
    secondi per avere informazioni importanti – Grazie ai marketplace si possono cercare, trovare
    ed installare in pochi minuti nuove applicazioni, in un modo infinitamente più snello che con il
    PC

-      Il terminale deve avere autonomia: – Se il dispositivo è sempre con sé, la batteria deve durare
    un giorno intero

Differenze desktop-mobile

-   Esiste una e una sola applicazione attiva visibile – Posso eseguire dei task in secondo piano

-   Abbiamo una e una sola finestra, con dimensioni fisse e non modificabili

-   L’interfaccia è limitata: – non possiamo inserire troppi elementi

-      Accesso limitato: – ogni applicazione ha un proprio «giardino» di privilegi

-   Risorse limitate: – Dato il ricco contenuto grafico, è semplice esaurire la memoria disponibile

-   Disponibilità di dispositivi aggiuntivi: – Fotocamera, accelerometro, bussola, giroscopio, GPS

-   Diversa modalità di interazione: – Dita della mano invece del mouse – Sembra veramente di
    utilizzare una mappa, un libro, una macchina fotografica, ecc…

Vantaggi dal punto di vista dell’utente:

-   Facile catalogazione e ricerca dei contenuti

-   Acquisto rapido e in pochi tap

-   Installazione di software senza dover ricorrere al PC

-   …………………

Vantaggi dal punto di vista del programmatore:

-   Il singolo utente acquisisce la possibilità di sviluppare e distribuire software in maniera
    completamente autonoma

                Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
-   Costi di pubblicazione, hosting, marketing sono azzerati (o quasi)

-   Possibilità di focalizzarsi principalmente sul lavoro di progettazione ed implementazione

         Android

Android è un sistema operativo mobile (OS) inizialmente sviluppato da una società con sede nella
Silicon Valley (Android Inc.) che nel 2005 viene acquisita da Google. Android possiede un set
completo di software, che include il sistema operativo principale e software aggiuntivo.

Per il supporto multimediale, Android in grado di eseguire la grafica 2D e 3D , audio e video in vari
formati. Supportare input multi-touch e dispone del browser Google Chrome. Possiede interfacce
per televisori, auto, orologi (Android Wear), occhiali (Google Glass).

Uno dei punti di forza di Android è la grande comunità di sviluppatori che progetta le applicazioni e
migliora la capacità dei dispositivi . Queste applicazioni sono poi messe a disposizione tramite
Android Market di Google. Pertanto la filosofia di Android è opposta a quella di Apple (che vedremo
nel paragrafo successivo): è infatti realizzato con l’obiettivo di essere il primo S.O. completo di tipo
aperto e distribuito gratuitamente.

Modellato sul kernel di Linux , Android è stato rilasciato anche come codice open source (distribuito
sotto licenza Apache 2.0). Lo sviluppo per Android può essere effettuata tramite Windows , Linux o
Mac , e usa prevalentemente il linguaggio Java. Google ha inizialmente sviluppato Dalvik , una
macchina virtuale appositamente studiata per Android . Dalvik esegue codice Java ricompilato e lo
legge come Dalvik bytecode ed è stato progettato per ottimizzare la potenza della batteria e
mantenere la funzionalità in un ambiente con memoria limitata e la potenza della CPU , come quella
dei telefoni cellulari , netbook e tablet PC .

Alcune caratteristiche della Dalvik virtual machine:

Dalvik (Il nome Dalvik deriva dal villaggio di pescatori Dalvíkurbyggð (da cui proviene la famiglia
dell’autore)

-   Macchina virtuale, componente di Android: – ottimizzata per sfruttare la poca memoria
    presente – fa girare diverse istanze della VM contemporaneamente – nasconde al sistema
    operativo la gestione della memoria e dei thread

-   spesso associato alla VM Java, ma il bytecode non è Java.

-   Include un compilatore Just In Time: – Ogni app compilata in parte dallo sviluppatore;
    l’interprete software esegue il codice e lo compila in linguaggio macchina in tempo reale –
    Maggiore versatilità nello sviluppo, minori prestazioni

Successivamente Dalvik viene superata dall’ART (Android RunTime) virtual machine

               Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
-   Basato su tecnologia AOT (ahead-of-time): – Esegue l'intera compilazione del codice durante
    l'installazione dell'app e non durante l'esecuzione stessa del software. – Vantaggio in prestazioni
    e gestione delle risorse. – Maggior tempo per l'installazione di un App, comunque quasi
    impercettibile.

Android in sintesi…

-   La piattaforma è basata sul kernel Linux usa il database SQLite supporta lo standard OpenGL ES
    2.0 per la grafica tridimensionale. Le applicazioni vengono eseguite tramite la Dalvik virtual
    machine (DVM), una Java virtual machine adattata per l'uso su dispositivi mobili:

-   Applicazione Android : compilazione -> bytecode ->DVM -> esecuzione reale dell'applicazione
    Android. Android è fornito di una serie di applicazioni preinstallate: un browser, basato su
    WebKit, una rubrica e un calendario.

-   Il Sistema Operativo Android è costituito da uno stack software (set di sottosistemi software)
    che possiamo individuare nello schema in figura:

Si possono quindi individuare quattro strati dell’Android Stack:

-   Linux Kernel Layer

-   Native Layer

-   Application Framework Layer

              Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
-   Application Layer

Il Kernel del S.O. è basato su Linux ed è composto da applicazioni Java sul quale si “appoggiano” le
applications, un insieme di funzioni base messe a disposizione degli sviluppatori per le funzionalità
basilari (effettuare telefonate, inviare SMS, navigare in Internet …). Questo si completa con
l’Hardware Abtraction Layer (HAL) che svolge un ruolo fondamentale e ha contribuito alla
diffusione e al successo di Android i quanto comprende un insieme di funzioni che tengono conto
e lo rendono compatibile con tutti i dispositivi fisici ( la shell virtualizza l’hardware e permette allo
steddo sw di funzionare du dispositivi differrenti).

Le applicazioni utente vengono eseguite tramite la Virtual Machine ART, come visto sopra.

Per le versioni di Android vedi “https://it.wikipedia.org/wiki/Android#Versioni”

         iOS

iOS (Iphone OS fino a giugno 2010), è un sistema operativo sviluppato da Apple, rilasciato nel
mercato nel 2007. È un S.O. proprietario di Apple pertanto può essere eseguito solo sui dispositivi
Apple, inizialmente sviluppato per iPhone, ora utilizzato anche per iPod, iPad ed Apple TV. Come
Mac OS X, è una derivazione di UNIX (famiglia BSD) e usa un microkernel XNU Mach basato su
Darwin OS.

Tale S.O. occupa circa mezzo Gigabyte della memoria interna del dispositivo ed è strutturato in 4
livelli di astrazione:

-   Core OS layer

-   Core Service layer

-   Media layer

-   Cocoa thouch layer

Gli strati più in alto forniscono le astrazioni dei servizi dei livelli più in basso facilitando lo sviluppo
delle applicazioni: come tutti i sistemi organizzati gerarchicamente, ogni livello fornisce e
implementa      nuov     funzionalità   beneficiando     dei   servizi   offerti   dal   livello   inferiore,
indipendentemente dai dettagli implementativi di quest’ultimo.

I livelli più bassi (Core OS – Core Service) si occupano di offrire i sevizi fondamentali del S.O.:
threading, gestione processi, funzioni per Input/output, gestione dello stack.

Il livello Media fornisce principalmente strumenti per lo sviluppo di grafica, per la gestione dell’audio
e del video.

               Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
Al livello più basso troviamo lo stato Cocoa Touch che si compone dei framework UIKit e foundation
che rendono disponibili gli strumenti necessari per la realizzazione della grafica, la visualizzazione e
l’interazione con l’utente.

Gli sviluppatori possono comunque accedere ai livelli più bassi.

L’ottima qualità dei dispositivi Apple è soprattutto dovuta al fatto che hanno una perfetta
integrazione, dato che chi programma il S.O. si occupa anche di progettare la parte elettronica.

Tra i punti deboli dei sistemi Apple, oltre al prezzo decisamente elevato c’è il fatto che è un
“sistema chiuso”, questo è però anche un punto di forza poiché permette di ottenere performance
molto alte.

         Windows Phone

I dispositivi Windows sono al terzo posto nel numero dei cellulari venduti, il S.O. Microsoft, our
essendo chiuso e a pagamento può essere istallato su diverse marche di cellulari.

L’aspetto più interessante è che a partire dalla versione 8 di Windows i sistemi operativi Microsoft
sono simili per dispositivi mobili e cellulari, con il vantaggio che un applicativo sviluppato per
desktop funziona anche su cellulare

L’attuale problema di Windows è la scarsa disponibilità di applicazioni, dal moment che la
diffusione del S.O. su sistemi mobile è ancora scarsa

              Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
App per sistemi mobili

Il termine “App”, abbreviazione di " software applicativo " indica i programmi per dispositivi mobili,
progettati per funzionare su smartphone e tablet.

Le app sono nate come programmi di uso generale per applicazioni tradizionali come la posta
elettronica, la rubrica dei contatti e il meteo. In poco tempo la comodità di disporre sul telefono di
strumenti di questo genere ha portato a una richiesta sempre maggiore da parte degli utenti. Nel
frattempo gli strumenti di sviluppo erano pronti per rispondere a queste richieste del pubblico e
sono presto comparsi i giochi, il GPS, le app bancarie e finanziarie quelle per la prenotazione di
eventi e l’acquisto di biglietti. L'esplosione non si è più fermata e oggi abbiamo App di qualsiasi
genere, compresi i social network, la gestione della musica e dei filmati, giornali e libri, App
sanitarie...

Le app sono programmi leggeri solitamente progettati per implementare una singola funzionalità e,
a differenza delle applicazioni web che operano all’interno del browser, girano direttamente sul
sistema operativo del dispositivo e sono sono tipicamente interattive. Sfruttano le risorse interne
dei dispositivi: schermo touch, microfoni, GPS, accelerometri, giroscopi e talvolta dispositivi e
sensori esterni.

Le app sono di solito scaricabili appoggiandosi a piattaforme di distribuzione delle applicazioni:
Apple App Store, Google Play, Windows Phone Store, e BlackBerry App World. Alcune applicazioni
sono gratuite, altre sono a pagamento. Di solito, vengono scaricati dalla piattaforma di un
dispositivo di destinazione, ad esempio un iPhone , BlackBerry, telefono Android o Windows Phone
, ma a volte possono essere scaricati per computer portatili o computer desktop . Per le applicazioni
a pagamento una percentuale sul prezzo (20-30 % ) va al provider di distribuzione (come iTunes ),
mentre il resto va al produttore dell'applicazione .

Nelle prime fasi del mercato degli smartphone, la maggior parte delle applicazioni sono state
adattate per l'iPhone. Con il passare del tempo, però, la quota di mercato per Android è cresciuta
molto, così come il sistema operativo e la necessità di una funzionalità cross-platform è diventato
un problema .

Le app si possono classificare in tre tipi:

    ● Web App: messe a disposizione su Internet attraverso un browser. Le applicazioni Web sono
        generalizzate per più piattaforme e non vengono installate in locale. Difatto sono siti web
        solitamente ottimizzati per essere visualizzati sui dispositivi mobili
    ● App nativa: sviluppata esclusivamente per una particolare piattaforma o dispositivo di
        elaborazione
    ● App ibrida (hybrid app) combina elementi di entrambe le applicazioni native e web. Non è
         legata al dispositivo. Di fatto incorpora un browser per l’accesso ai contenuti online

               Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
App nativa

Una (mobile) App nativa è un’applicazione che è scritta su misura per una specifica piattaforma e
non funziona su altri dispositivi. Per funzionare si serve direttamente delle funzioni del sistema
operativo che gira sul dispositivo mobile su cui viene istallata e, spesso, si serve dei linguaggi e delle
API offerte del produttore per avere accesso ai vari dispositivi tra cui la fotocamera o la rubrica.
Inoltre alcune applicazioni possono essere usate in locale, senza una connessione Internet.

Tali app sono codificate in un linguaggio di programmazione specifico, come Objective C per iOS e
Java per i sistemi operativi Android, o C# per Microsoft . Le applicazioni mobili native offrono
velocità e alte prestazioni con un buon grado di affidabilità . Esse hanno accesso ai vari dispositivi
del telefono , come la sua macchina fotografica e la rubrica . La maggior parte dei videogiochi o di
App che hanno bisogno di buone prestazioni, sono applicazioni mobili native.

Un’applicazione nativa ha il vantaggio di essere più veloce ed avere una maggiore integrazione con
il look-and-feel della piattaforma, lo svantaggio di non essere direttamente portabile su altre
piattaforme, poiché sviluppate per uno specifico sistema operativo, obbligando la società che le crea
a rilasciare versioni duplicate che funzionano su piattaforme diverse.

Lo sviluppo di queste applicazioni richiede l’utilizzo di di ambienti di sviluppo integrati specializzati.

App ibrida

Si tratta di un’applicazione scritto in linguaggio multipiattaforma come HTML5. Il vantaggio è quello
di un’applicazione che gira su dispositivi di produttori diversi essendo indipendente dal linguaggio
specifico e dal sistema operativo. Questa soluzione ha delle importanti conseguenze: questo tipo di
applicazioni, infatti, sono compatibili con i diversi sistemi operativi (cross–platform), e possono
comunque ancora accedere all’hardware di un telefono usando particolari librerie, sono tuttavia
limitate nelle nelle prestazioni e non sono sempre aggiornate ai nuovi rilasci di sistemi operativi e
driver di periferiche.

Lo sviluppo di queste applicazioni avviene tramite semplici editor di testo e consiste in file di tipo
testuale.
Per sviluppare App Ibride si utilizzano dei framework che offrono delle librerie (API) per interfacciarsi
con le funzionalità native del dispositivo, permettendo di utilizzare lo stesso progetto per tutte le
piattaforme supportate, questo comporta tuttavia una maggior pesantezza e quindi lentezza
dell’applicazione rispetto a quelle native. Altro svantaggio è una minore efficienza del rendering
grafico: senza particolari accorgimenti l’aspetto dell’interfaccia grafica potrebbe non risultare
abbastanza omogeneo con quello nativo della piattaforma (si ricorre spesso a piattaforme come
Sencha , PhoneGap e MoSync ).

              Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
Apache Cordova: Descrizione e Funzionamento

Apache Cordova è un framework di sviluppo mobile open source.
Esso consente di utilizzare tecnologie web come HTML5, CSS3 e JavaScript per lo sviluppo di
applicazioni cross-platform, in grado cioè di funzionare sia in ambiente android, Ios o windows
phone.

                                     Single code based

                 Native Wrapper             Native Wrapper              Native Wrapper

                   WEB BASED                  WEB BASED                   WEB BASED
                      CODE                       CODE                        CODE

                   CORDOVA API                CORDOVA API                 CORDOVA API

                    ANDROID                       IOS                    WINDOWS PHONE

L’applicazione è sviluppata come una web app, o più precisamente come una web page in cui il file
index.html collega CSS, JavaScript, immagini, media e tutte le risorse necessarie al suo
funzionamento.     Il codice viene poi inglobato in un wrapper (contenitore) specifico per la
piattaforma scelta che utilizza le API proprietarie per accedere alle funzionalità del dispositivo (ad
es. sensori, contatti, dati) ed infine viene eseguita nella WebView inclusa nel wrapper.

La WebView è simile alla finestra di un web browser che occupa l’intero schermo del dispositivo
senza url bar ne decoration.

                                                WEB
                                                VIEW

             Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
Cordova espone, tramite un set di plugin, una serie di funzioni attraverso le quali è possibile
interfacciarsi alle funzioni hardware e software del dispositivo.

Un plugin è una libreria di funzioni javascript che consentono di accedere ed utilizzare una
particolare risorsa (es. fotocamera, accelerometro, rubrica,..). Cordova si occupa quindi di mappare
queste funzioni sulle chiamate native della piattaforma specifica.

In aggiunta è possibile trovare diversi plugin di terze parti ad esempio su gitHub, telerik,..

                         Figura 1 https://cordova.apache.org/docs/en/latest/guide/overview/

              Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
Componenti di base

Lo strumento principale per lo sviluppo di app cross-platform è la cordova cli (command line
interface) che consente di:

   − Creare un progetto cordova
   − Includere un plugin
   − Aggiungere una piattaforma target
   − Costruire il progetto per quella specifica piattaforma
   − Emulare il progetto
   − Eseguire il progetto su un dispositivo
I tool che Cordova utilizza per il suo funzionamento sono node.js, git, gradle, e le librerie SDK delle
piattaforme per cui si intende sviluppare l’app.

             Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
Ambienti di sviluppo

Sebbene sia possibile istallare manualmente tutti i componenti sopradescritti, la configurazione
dell’ambiente è un’operazione articolata, utilizzeremo quindi un’ambiente preconfigurato.

Istallando Visual Studio e lo strumento aggiuntivo Cordova Tools possiamo ottenere in modo
immediato un ambiente funzionante seguendo pochi passaggi:

   − Scaricare        e       lanciare     l’istallazione    di        visual    studio     2017
       https://www.visualstudio.com/it/downloads/
   − L’installer visualizza l’elenco dei componenti aggiuntivi disponibili, selezionare sviluppo
       applicazioni con javascript

   − Selezionare i componenti opzionali a destra (sdk ed emulatori per android e windows)
   − Terminata l’installazione, registrare gratuitamente il software

             Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
Creazione di un progetto

Dal menu File -> Nuovo:

Il progetto creato avrà la seguente struttura (visibile nel pannello destro):

1. La directory WWW contiene i file dell’applicazione web, è quindi la directory di lavoro principale.

   In particolare contiene il file index.html che rappresenta l’entry point dell’app quando viene
   lanciata e le cartelle css e script in cui si trovano, rispettivamente i file index.css e index.js che
   utilizzeremo per definire l’ui e la logica applicativa.

   E’ possibile includere qui eventuali media e risorse aggiuntive necessarie per sviluppare l’app
   (immagini, audio, librerie esterne).

2. La directory MERGES contiene gli script che devono essere eseguiti prima o dopo la build
   dell’app per una specifica piattaforma (Ad esempio se è necessario rimuovere alcuni file
   temporanei prima della build, definire impostazioni grafiche specifiche, ...).
3. La directory RES contiene icone e splashscreen dell’app.
4. Il file CONFIG.XML è un file di configurazione dell’app che consente di specificare alcune
   informazioni tra cui il nome dell’app, impostazioni di plugin e di sicurezza, …

Nella cartella di progetto si trovano anche:
              Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
-    La directory PLUGIN contiene le librerie js dei plugin necessari al funzionamento dell’app (che
     devono essere aggiunte al bisogno)
-    La directory PLATFORM contiene le directories e i files necessari di ogni piattaforma per cui si
     sviluppa

Il nuovo progetto creato, nella sua versione di default contiene un’applicazione di test delle
funzionalità di cordova.

In particolare:

                                              INDEX.HTML

            appDefault
        
                Apache Cordova
                
                    Connessione al dispositivo
                    Il dispositivo è pronto
                
Contiene gli elementi standard di una tipica pagina html (html, head, body, e tag standard) e i
collegamenti ai file css e js necessari.

I tag meta visibli nell’head specificano alcune norme di ‘comportamento’ dell’applicazione della web
view:

-    Il primo è usato per definire i contenuti esterni (uri) permessi, cioè che l’applicazione è
     autorizzata a caricare all’interno della pagina)

     Ad esempio se fosse necessario prelevare contenuti dal server http://serverZZZ.org andrebbe
     aggiunta la regola specifica content="default-src   'self' data: gap:http://serverZZZ.org
     https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *"

     Per maggiori dettagli https://content-security-policy.com/

                Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
-    Il secondo è usato per definire il contenuto e la codifica della pagina
-    Gli ultimi tre sono usati per impostare la web view in modo da non permettere lo zoom o la
     selezione del testo al suo interno

                                                INDEX.JS

    (function () {
        "use strict";

        document.addEventListener( 'deviceready', onDeviceReady.bind( this ), false );

        function onDeviceReady() {
            // Gestire gli eventi di sospensione e ripresa di Cordova
            document.addEventListener( 'pause', onPause.bind( this ), false );
            document.addEventListener( 'resume', onResume.bind( this ), false );

            // TODO: Cordova è stato caricato. Eseguire qui eventuali operazioni di
    inizializzazione richieste da Cordova.
            var parentElement = document.getElementById('deviceready');
            var listeningElement = parentElement.querySelector('.listening');
            var receivedElement = parentElement.querySelector('.received');
            listeningElement.setAttribute('style', 'display:none;');
            receivedElement.setAttribute('style', 'display:block;');
        };

        function onPause() {
            // TODO: questa applicazione è stata sospesa. Salvarne lo stato qui.
        };

        function onResume() {
            // TODO: questa applicazione è stata riattivata. Ripristinarne lo stato qui.
        };
    } )();

E’ strutturato in modo da gestire i principali eventi che cordova espone.

In particolare viene gestito l’evento deviceready (di cui si parla in seguito) in modo da modificare
la pagina principale al verificarsi dell’evento stesso:

               Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
Build e run di un progetto

Per lanciare l’esecuzione di un progetto è necessario:

1. Scegliere la piattaforma target, cioè la piattaforma di destinazione dell’app. A seconda delle
   librerie sdk istallate è possibile scegliere tra windows phone, android, ios, ..
2. Scegliere il dispositivo o l’emulatore su cui l’app deve essere lanciata

Avviata l’app è possibile debuggare il codice js utilizzando la console o i breakpoint,

e utilizzare la finestra dom explorer per risolvere problemi di layout.

N.B. L’applicazione può essere emulata su browser, in particolare chrome. Il limite
dell’emulazione è pultroppo l’incapacità di simulare alcune caratteristiche del dispositivo, ad
esempio il gps si con coordinate fittizie ma il flash della fotocamera no.

              Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
Eventi

Gli eventi ci consentono di gestire il comportamento delle nostre app al verificarsi di una certa
azione dell’utente oppure di rispondere alle sollecitazioni che provengono dal sistema stesso.

Qualsiasi evento è intercettabile da codice js, così nelle web app tradizionali come nelle app ibride,
con alcune differenze:

-   Nelle web app gli elementi html solitamente associano all’interno della loro definizione la
    risposta ad un certo evento, ad es , la cui funzione è definita in uno script
    collegato alla pagina.
-   Nelle app ibride si utilizza una diversa sintassi per associare un evento ad un certo elemento:

                 ELEMENT.addEventListener (EVENT_NAME, CALLBACK, false)
    Dove element è l’elemento su cui l’evento si verifica, event_name è il nome dell’evento e
    callback è il codice che viene eseguito quando l’evento si verifica solitamente definito in una
    funzione.

Inoltre nelle app ibride esistono un insieme di nuovi eventi da gestire tipici dell’ambiente mobile e
di cordova:

-   Eventi generati dal sistema (deviceready, pause, resume, ..)
    https://cordova.apache.org/docs/en/latest/cordova/events/events.html
-   Eventi generati dall’utente (tap, swipe, …)

L’evento deviceready è un’evento fondamentale, si verifica quando Cordova risulta
completamente caricato, cioè quando le api di cordova sono pronte per essere utilizzate.

Per questo motivo la gestione degli eventi generati dall’utente e l’uso di eventuali pugin deve
essere successiva al verificarsi di deviceready

         ESERCIZIO
Costruire la prima app composta da un’unica pagina. All’avvio dell’app e solo quando l’evento di
device ready si è verificato, visualizzare un messaggio di benvenuto al centro della pagina.

Emulare l’app su browser e successivamente testarla sul proprio dispositivo.

N.B. Il dispositivo deve:

    -   Avere le opzioni sviluppatore abilitate (7 click sul numero di build)
    -   Avere il debug usb attivo
    -   Essere collegato tramite usb al pc come adb (verificare che venga riconosciuto altrimenti
        istallare gli opportuni driver)

                Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
Architettura di un’App

L’architettura suggerita per app cross-platform è l’architettura SPA (Single Page Application), la
quale suggerisce di sviluppare l’applicazione in una singola pagina html in modo da caricare tutte le
risorse necessarie al funzionamento dell’app (html, js, css, …) durante la fase di avvio della stessa
per rendere pìù fluida la successiva navigazione tra i contenuti

Esistono diversi framework che possono essere utilizzati a questo scopo, Framework7
(http://framework7.io/docs), ad esempio, è un touch-friendly UI framework specifico per lo
sviluppo di app ibride che si propone di semplificare lo sviluppo di una spa seguendo due principali
approcci di funzionamento:

    -   approccio ajax pages (default)
    -   approccio stacked pages

Una pagina è l'unità principale di interazione in f7 e viene utilizzata per raggruppare contenuti in
sezioni logiche che possono essere mostrate nella view principale attraverso transizioni. Possiamo
associarla concettualmente ad una normale pagina web.

Secondo l’approccio stacked pages, che rappresenta una spa pura, si definiscono diverse sezioni
‘logiche’ all’interno di un’unica pagina html e la navigazione avviene localmente mostrando la
sezione corrente e nascondendo le altre.

-   Il principale vantaggio è la velocità con la quale si può passare da una sezione ad un’altra dato
    che tutto è già stato precaricato nel dom
-   Il principale svantaggio è la poca leggibilità di cui l’unico file html può soffrire all’aumentare della
    dimensione e della complessità delle pagine logiche che compongono l’applicazione.

Secondo l’approcio ajax pages si definisce ogni sezione logica dell’app in un diverso documento html
e la navigazione tra queste avviene tramite chiamata ajax che carica nella view il contenuto della
sezione corrente.

-   Il codice risulta più pulito e più vicino allo sviluppo web
-   Il principale file html è precaricato nel dom (insieme alle sue dipendenze css, js, ...) mentre le
    pagine successive solo quando l’utente ci accede. Le transizioni tra pagine, pur non richiedendo
    nessun page refresh grazie ad ajax, risulteranno più lente

È possibile utilizzare entrambe queste soluzioni all’interno della stessa applicazione inserendo le
pagine di uso frequente nel principale file html e le altre in file separati in modo da beneficiare dei
vantaggi dei diversi approcci.

              Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
Boilerplate di base (cordova+f7)

La struttura di base delle applicazioni che realizzeremo sarà la seguente:

                                               Index.html

La sezione head deve contenere, oltre agli elementi discussi prima, anche i link alle librerie di
framework7 (Affinchè l’app funzioni offline è preferibile scaricare i file necessari e includerli in una
directory dell’app)
    
       ...
        
       ...
    
La sezione body in un container principale (class app) descrive la view (class view main)
contenente l’homepage, cioè la pagina iniziale che verrà mostrata all’utente all’avvio dell’app.

-    La pagina è definita all’interno dei contenitori app e view
-    La pagina è definita all’interno di un div con class=page a cui si associa un nome attraverso
     l’attributo data-page. Ogni pagina può contenere una navbar, una toolbar ed un page content

                                               Index.html

                              Boiler cordova e framework7
                          
                           Pagina di contenuti dell’app

               Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
Il file index.js di partenza sarà il seguente:

  //-----------------------configurazione base di framework7-------------------------------
      var app = new Framework7({
          //contenitore principale
          root: '#app',
          //nome dell'app'
          name: 'Boilerf7_onePage',
          //id della'app (vedi anche config.xml per avere un dato coerente)
          id: 'it.jo.Boilerf7_onePage',
      });
      //impostazione della view principale
      var mainView = app.views.create('.view-main');
      //dichiarazione dell'oggetto dom7, in sostanza una sorta di jquery sotto altro nome ma
      //con stesse funzionalità . ad esempio $$('#bottone').click(function(){...});
      var $$ = Dom7;
  //-----------------------fine configurazione base di framework7------------------------

  //gestione dell'evento di cordova device ready utilizzando $$, qui si può scrivere il
  codice dell'app
  $$(document).on('deviceready', function () {
      //codice dell'app'
      console.log('ready');
      document.addEventListener('pause', onPause.bind(this), false);
      document.addEventListener('resume', onResume.bind(this), false);
  });

Il codice specifico dell’applicazione (la logica applicativa), come sopra spiegato, deve eseguito
successivamente a deviceready.
I vari eventlistener sulla ui della pagina vanno quindi specificati nella callback di gestione di questo
evento.
N.B. Framework 7 utilizza una propria libreria per la manipolazione del DOM che è identica, sia
come sintassi che come nome dei metodi, a jquery. Può essere chiamata con i simboli $$
(similmente a jquery che si abbrevia con $)
https://framework7.io/docs/dom.html

Jquery (o qualsiasi altra libreria si intenda utilizzare) può comunque essere integrata ed usata nel
progetto. In generale è bene valutare il rapporto benefici-costi prima di aggiungere pacchetti
esterni in quanto inevitabilmente appesantiranno l’applicazione in termini di dimensioni.

                                                 Index.css
È inizialmente vuoto, servirà per impostare, se necessario, regole di stile aggiuntive a quelle già
descritte in f7.

            Abbiamo fino a qui definito un’app con una view contenente un’unica pagina

              Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
Gestire più pagine

Come spiegato precedentemente esistono due approcci la cui scelta e basata sui
vantaggi/svantaggi già descritti, vediamone ora l’implementazione.

STACKED PAGE

La seconda pagina di contenuti della view viene definita direttamente nel file index.html

-    La seconda pagina deve essere impostata con class stacked.
-    È necessario inserire i link per la navigazione tra le due pagine
-    Nel file index.js deve essere attivata la modalità stacked e definiti i comportamenti associati ai
     link (routes)
    ...
    
         ...
         
                Vai a pagina 2
            
ajax pages        Back
               
Pagina2.html
        
           Contenuto Pagina 2
Ogni pagina secondaria è definita in un file html separato in cui si specifica nuovamente navbar
        
toolbar
  ...   e page content

    var app = new Framework7({
        root: '#app',
        name: 'oneView_multiPages_stacked',
        id: 'it.jo.multiPagesStacked',
        routes: [{
                    path: '/pag2/',
                    pageName: 'second'
                }]
    });

    var mainView = app.views.create('.view-main', { "stackPages": true });
    ...

               Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
Quando l’applicazione viene lanciata tutte le pagine sono precaricate nel dom, la prima che è
definita nel codice è resa visibile, mentre tutte quelle definite successivamente (stacked) sono
nascoste.

Il click su un link ha l’effetto di invertire le proprietà di visibilità, rendendo visibile quella linkata e
nascondendo quella di provenienza

AJAX PAGE

La seconda pagina di contenuti della view viene definita in un file html separato

-    Il nuovo file html non deve definire l’intera struttura html+head+body ma solo il contenitore
     page
-    È necessario inserire i link per la navigazione tra le due pagine (come sopra con il tag a)
-    Nel file index.js devono essere definiti i comportamenti associati ai link (routes)

                     Back
                  
              Contenuto Pagina 2
           
ajax pages

    var app = new Framework7({
        root: '#app',
        name: 'oneView_multiPages_stacked',
        id: 'it.jo.multiPagesStacked',
        routes: [{
                    path: '/pag2/',
                    url: 'second.html'
                }]
    });...

Quando l’applicazione viene lanciata solo la prima pagina (presente nell’index) è caricata nel dom.

Il click su un link aziona una richiesta ajax verso la risorsa (second.html) che viene iniettata del
dom. La pagina carica viene impostata come pagina corrente (page current ) e visualizzata, mentre
quella già presente viene nascosta

               Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
Componenti UI

Framework7 è dotato di numerosi elementi UI e widget pronti per l'uso:

            Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
Ad esempio l’elemento date picker può essere utilizzato nell’app aggiungendo, rispettivamente
nell’html e poi nel js, il seguente codice:

Nella documentazione sono descritti i diversi componenti disponibili, per ognuno è specificato il
codice pronto all’uso.

Qui la demo: https://framework7.io/kitchen-sink-material/

Qui a documentazione: https://framework7.io/docs/ (sezione components sulla sinistra)

         ESERCIZIO
Costruire un’applicazione costituita da due pagine.

La pagina principale deve contenere un date picker in cui l’utente inserisce la propria data di
nascita e un bottone di conferma.

Quando l’utente preme il bottone, viene visualizzata la seconda pagina in cui, al centro compare il
numero dei giorni mancanti al compleanno.

Emulare l’app su browser e successivamente testarla sul proprio dispositivo.

              Tecnologie e progettazione di sistemi informatici e di telecomunicazioni
Puoi anche leggere