Upload
domenico-gabriele
View
145
Download
3
Embed Size (px)
Citation preview
Francesco Gambino● Dottore Magistrale in Informatica (Unical)● iOS & Mobile Specialist● 6 anni di esperienza nella progettazione e sviluppo di applicazioni mobile
ad alte prestazioni con l’integrazione delle tecnologie più avanzate (Location tracking, Realtà Aumentata, Face Detection), programmazione di sensori e realizzazione di interfacce custom con grande attenzione all’usabilità.
Domenico Gabriele●Laurea in Informatrica (Unical)●Java & Android Developer●3 Anni di esperienza in Android
● 3 Anni di esperienza di sviluppo in applicazioni Web java based
Chi siamo
Android
● Nexus 5, 6, 9 Galaxy S 5, 6, …
● 4 screen size
● 6 screen densities (mdpi, hdpi, xhdpi, …)
● Lollipop, ICS, Jelly Bean e… ALTRO
iOS
● iPhone, iPad, iPod
● 3 screen densities (@1x, @2x, @3x)
● iOS 8, 7 e… STOP
Strumenti
Android
● Android Studio
● Android
● JAVA/ C++
● ART/ Dalvik
● Emulatore
● Lifecycle Activity
iOS
● Xcode
● Objective-C / Swift
● Cocoa Touch (Foundation Kit, UIKit)
● Automatic Reference Counting (ARC)
● Simulatore
● Model-View-Controller (MVC)
Android
string = string.replace("to", "xyz");
iOS
[string stringByReplacingOccurrencesOfString:@"to" withString:@"xyz" options:0 range:NSMakeRange(0, string.length)];
Activity
● Una Activity rappresenta una possibile interazione dell’utente con l’applicazione e può essere associata al concetto di schermata.
● Essa si occupa di creare la finestra nel quale può essere associata l’UI ma non è strettamente legata ad essa.
● Importanza fondamendale è il Lifecycle di un’Activity
● È l’unità fondamentale per lo sviluppo di una app iOS
● Interagisce con i Model e altri Controller per presentare una UI coerente
● È strettamente associato ad una view, che gestisce durante il suo ciclo di vita
○ carica, effettua il layout e il resize
○ si occupa di aggiornare il contenuto
○ intercetta gli eventi
UIViewController
View e Layout In Android la definizione della user interface si basa tutta sul concetto di View e ViewGroup
● View : Questa classe rappresenta l'elemento fondamentale per i componenti dell'interfaccia utente. TUTTI gli elementi grafici ereditano da essa. TextView , Button, EditText…
● ViewGroup: Una speciale View che può contenere altre view . Questa è la classe base di tutti i layout. LinearLayout,RelativeLayout,ListView
LinearLayout RelativeLayout ListView
● UI realizzata tramite Interface Builder
● XIB vs Storyboard
● Composizione tramite drag&drop
● Specifica del layout tramite Autolayout
○ definizione di vincoli tra gli elementi grafici (~ Relative Layout Android)
○ UI dinamica che si adatta a diverse dimensioni dello schermo, orientamento e localizzazione
View e layout
Esempio di LayoutiOS
● referenziare il vincolo di interesse
● manipolarlo manualmente in maniera da ottenere il risultato desiderato
priceViewTop = -priceView.height;
[self.view layoutIfNeeded];
Android
view.setVisibility(View.GONE);
Include : Si possono includere Layout in altri tramite include
Comunicazione inter-app
● Le app sul dispositivo possono comunicare tra loro solo in maniera indiretta -> SANDBOX
● URL Schemes
○ la app registra un URL custom
○ attraverso l’URL altre app possono aprire la app
○ la app originale può presentare i dati contenuti nell’URL
● API per l’accesso alle app di sistema: camera, telefono, contatti, mappe, calendario, salute, passbook, etc.
● Extensions (>= iOS 8)
○ danno accesso a funzionalità e contenuti di altre applicazioni
● Implicit Intent :
Uri number = Uri.parse("tel:5551234");
Intent callIntent = new
Intent(Intent.ACTION_DIAL, number);
● StartActivityForResult(Intent,
RequestCode);
protected void onActivityResult(int
requestCode, int resultCode, Intent
data) ;
● Content Providers
getContentResolver().query(URI,
Selection,SelectionArgs,SortOrder);
Android iOS
Gestione permessi
● Le permission In Android vengono specificate tutte all’interno del file Manifest
● Tutti i permessi definiti nel Manifest vengono mostrati essere accettati dall’utente al momento dell'installazione del’app
● Uses-feature Risorse hardware o software. Non è detto che il device le possieda
● Permesso obbligatorio per accedere a determinate feature del dispositivo / sistema
○ notifiche, posizione, camera, contatti, aggiornamenti in background, ...
● Responsabilità dello sviluppatore gestire il processo di request / response
● Richiesta one-shot
Android iOS
Esecuzione background
● Service
● Started : Avviato tramite
startService(). Può rimanere in
background per un periodo di
tempo indefinito.
● Bound: Avvitao tramite
bindService(). Offre una client-
server interface.Legato a uno o
piu componenti. ● System Service
● Download Manager : gestione del
download demandata al sistema
● Sync Adapter● Broadcast Receiver
La piattaforma permette di
● completare un breve task partito in foreground (esecuzione finita)
● completare download partiti in foreground affidandoli al sistema
● eseguire task specifici avanzati in background
○ audio○ location○ voip○ external-accessory○ background fetch○ remote notifications
Android iOS
● Poco customizzabili: solo suono e quick actions
● Protocollo TCP (con TLS/SSL), comunicazione unidirezionale
○ Server -> Server Apple -> Device
● Payload max 2KB (prima 256 bytes!)
● Per poter utilizzare le notifiche:
○ richiesta permesso one-shot
○ registrazione al server remoto
○ gestire gli eventi (notifica in-app, apertura da zero della app)
● Ricche e altamente customizzabili
● Protocolli: HTTP, XMPP
● Payload max 4KB
● Presentazione
○ Permesi richiesti all'installazione dell’app
○ fuori app: responsabilità sviluppatore(NotificationManager)
○ in-app: avvio:responsabilità sviluppatore (NotificationManager)
Notifiche PushAndroid iOS
● Account sviluppatore sul Google Play 25€, una tantum
● Fee su paid apps e in-app purchase: 30%
● Servizi:
● Google Play Developer Console
● Scelta del prezzo libera per ogni paese
● Non perdere il Keystore per la release App altrimente sarà impossibile pubblicare aggiornamenti.
Pubblicazione
● Apple Developer account: 99€ / anno
● Fee su paid apps e in-app purchase: 30-40 %
● Servizi:
○ App Store (Watch), Mac App Store
○ Risorse e materiali grafici di supporto
○ SDK e OS beta
● Scelta dei prezzi vincolata
Android iOS
Pubblicazione● Paid App non presente in tutti i Paesi.
Es China
● Bisogna rispettare le Norme del programma di Google Play
● Nessun controllo dopo circa 2 ore disponibile sullo store
● Non è possibile rimuovere l’app una volta pubblicata .
● Tempi di pubblicazione biblici
~ 15 giorni
● App controllata realmente!
● Alta probabilità di rifiuto
○ se non si seguono le HIG Apple
○ …ma a volte anche per motivi assurdi
● Una piccola soluzione: expedited