SlideShare une entreprise Scribd logo
1  sur  25
Android vs iOS
Domenico Gabriele
Android Developer
Francesco Gambino
iOS Specialist
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
Lifecycle activity
Model-View-Controller
● È 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
App lifecycle e
ViewController lifecycle
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
Relative layout vs Autolayout
Esempio di Layout
iOS
● 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
Aperto Chiuso
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 Push
Android iOS
Notifiche push
iOSAndroid
● 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
Android vs iOS

Contenu connexe

Tendances

Presentarsi sul mercato globale con app di successo
Presentarsi sul mercato globale con app di successoPresentarsi sul mercato globale con app di successo
Presentarsi sul mercato globale con app di successoDiego La Monica
 
App di successo quali strumenti? e le performance?
App di successo quali strumenti? e le performance?App di successo quali strumenti? e le performance?
App di successo quali strumenti? e le performance?Diego La Monica
 
Programmiamo iPhone e iPad (e non solo!) con MonoTouch
Programmiamo iPhone e iPad (e non solo!) con MonoTouchProgrammiamo iPhone e iPad (e non solo!) con MonoTouch
Programmiamo iPhone e iPad (e non solo!) con MonoTouchStefano Ottaviani
 
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...Antonio Gallo
 
Competenze per lo sviluppo software nellera del web
Competenze per lo sviluppo software nellera del webCompetenze per lo sviluppo software nellera del web
Competenze per lo sviluppo software nellera del webDiego La Monica
 
Introduction to iOS development with Xamarin
Introduction to iOS development with XamarinIntroduction to iOS development with Xamarin
Introduction to iOS development with XamarinRaffaele Fanizzi
 
Conoscere Android per poterlo Programmare
Conoscere Android per poterlo Programmare Conoscere Android per poterlo Programmare
Conoscere Android per poterlo Programmare Flavius-Florin Harabor
 
Laboratorio Creare e pubblicare mobile apps per iOS e Android Configurazione ...
Laboratorio Creare e pubblicare mobile apps per iOS e Android Configurazione ...Laboratorio Creare e pubblicare mobile apps per iOS e Android Configurazione ...
Laboratorio Creare e pubblicare mobile apps per iOS e Android Configurazione ...University of Catania
 
Android programming (ita)
Android programming (ita)Android programming (ita)
Android programming (ita)Vinu Iaconissi
 
Android - Programmazione Avanzata
Android -  Programmazione AvanzataAndroid -  Programmazione Avanzata
Android - Programmazione AvanzataStefano Sanna
 

Tendances (14)

Presentarsi sul mercato globale con app di successo
Presentarsi sul mercato globale con app di successoPresentarsi sul mercato globale con app di successo
Presentarsi sul mercato globale con app di successo
 
App di successo quali strumenti? e le performance?
App di successo quali strumenti? e le performance?App di successo quali strumenti? e le performance?
App di successo quali strumenti? e le performance?
 
Programmiamo iPhone e iPad (e non solo!) con MonoTouch
Programmiamo iPhone e iPad (e non solo!) con MonoTouchProgrammiamo iPhone e iPad (e non solo!) con MonoTouch
Programmiamo iPhone e iPad (e non solo!) con MonoTouch
 
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
 
Android
AndroidAndroid
Android
 
Competenze per lo sviluppo software nellera del web
Competenze per lo sviluppo software nellera del webCompetenze per lo sviluppo software nellera del web
Competenze per lo sviluppo software nellera del web
 
Mobile development .net
Mobile development .netMobile development .net
Mobile development .net
 
MonoTouch, un anno dopo
MonoTouch, un anno dopoMonoTouch, un anno dopo
MonoTouch, un anno dopo
 
Introduction to iOS development with Xamarin
Introduction to iOS development with XamarinIntroduction to iOS development with Xamarin
Introduction to iOS development with Xamarin
 
Conoscere Android per poterlo Programmare
Conoscere Android per poterlo Programmare Conoscere Android per poterlo Programmare
Conoscere Android per poterlo Programmare
 
Laboratorio Creare e pubblicare mobile apps per iOS e Android Configurazione ...
Laboratorio Creare e pubblicare mobile apps per iOS e Android Configurazione ...Laboratorio Creare e pubblicare mobile apps per iOS e Android Configurazione ...
Laboratorio Creare e pubblicare mobile apps per iOS e Android Configurazione ...
 
Android programming (ita)
Android programming (ita)Android programming (ita)
Android programming (ita)
 
Android - Programmazione Avanzata
Android -  Programmazione AvanzataAndroid -  Programmazione Avanzata
Android - Programmazione Avanzata
 
WPD plumi
WPD   plumiWPD   plumi
WPD plumi
 

En vedette

ios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaDario Rusignuolo
 
MobileDevCamp2012 - iOS
MobileDevCamp2012 - iOSMobileDevCamp2012 - iOS
MobileDevCamp2012 - iOSmobiledevcamp
 
Mobile Apps Per iOS , visione d'insieme
Mobile Apps Per iOS , visione d'insiemeMobile Apps Per iOS , visione d'insieme
Mobile Apps Per iOS , visione d'insiemeFrancesco De Simone
 
Session 1 - Introduction to iOS 7 and SDK
Session 1 -  Introduction to iOS 7 and SDKSession 1 -  Introduction to iOS 7 and SDK
Session 1 - Introduction to iOS 7 and SDKVu Tran Lam
 
History of iOS
History of iOSHistory of iOS
History of iOSpyro2927
 

En vedette (7)

ios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - ita
 
MobileDevCamp2012 - iOS
MobileDevCamp2012 - iOSMobileDevCamp2012 - iOS
MobileDevCamp2012 - iOS
 
Mobile Apps Per iOS , visione d'insieme
Mobile Apps Per iOS , visione d'insiemeMobile Apps Per iOS , visione d'insieme
Mobile Apps Per iOS , visione d'insieme
 
Xcode - Just do it
Xcode - Just do itXcode - Just do it
Xcode - Just do it
 
Session 1 - Introduction to iOS 7 and SDK
Session 1 -  Introduction to iOS 7 and SDKSession 1 -  Introduction to iOS 7 and SDK
Session 1 - Introduction to iOS 7 and SDK
 
History of iOS
History of iOSHistory of iOS
History of iOS
 
Presentation on iOS
Presentation on iOSPresentation on iOS
Presentation on iOS
 

Similaire à Android vs iOS

Android: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezzaAndroid: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezzajekil
 
Mobile platforms development overview
Mobile platforms development overviewMobile platforms development overview
Mobile platforms development overviewAlfredo Morresi
 
Augmented Reality: guardare il mondo da un altro punto di vista
Augmented Reality: guardare il mondo da un altro punto di vistaAugmented Reality: guardare il mondo da un altro punto di vista
Augmented Reality: guardare il mondo da un altro punto di vistaCodemotion
 
Android Code Camp for Beginners - Ecosistema Android (IT)
Android Code Camp for Beginners - Ecosistema Android (IT)Android Code Camp for Beginners - Ecosistema Android (IT)
Android Code Camp for Beginners - Ecosistema Android (IT)Alessandro Bogliolo
 
Flutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaformaFlutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaformaCommit University
 
Smau milano 2012 arena social media massimo-grava
Smau milano 2012   arena social media massimo-gravaSmau milano 2012   arena social media massimo-grava
Smau milano 2012 arena social media massimo-gravaSMAU
 
Touch&play framework
Touch&play frameworkTouch&play framework
Touch&play frameworkCSP Scarl
 
Sviluppo di applicazioni mobile con PhoneGap
Sviluppo di applicazioni mobile con PhoneGapSviluppo di applicazioni mobile con PhoneGap
Sviluppo di applicazioni mobile con PhoneGapDotNetMarche
 
GWT Development for Handheld Devices
GWT Development for Handheld DevicesGWT Development for Handheld Devices
GWT Development for Handheld DevicesGWTcon
 
Prodigyt at Next Step IBMi, 11 luglio 2017
Prodigyt at Next Step IBMi, 11 luglio 2017Prodigyt at Next Step IBMi, 11 luglio 2017
Prodigyt at Next Step IBMi, 11 luglio 2017Ruggero Borgonovo
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatoreSMAU
 
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
 Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progettoMicrosoft Mobile Developer
 
Sviluppare una app mobile net oriented
Sviluppare una app mobile net orientedSviluppare una app mobile net oriented
Sviluppare una app mobile net orientedAlessandro Morvillo
 
Ubuntu Phone: the community smartphone
Ubuntu Phone: the community smartphoneUbuntu Phone: the community smartphone
Ubuntu Phone: the community smartphoneGiulio Collura
 
Applicazioni mobili: strumenti, costi soluzioni e peformance
Applicazioni mobili: strumenti, costi soluzioni e peformanceApplicazioni mobili: strumenti, costi soluzioni e peformance
Applicazioni mobili: strumenti, costi soluzioni e peformanceDiego La Monica
 
Aggiornare il proprio PC a Windows 10: e perché no?
Aggiornare il proprio PC a Windows 10: e perché no?Aggiornare il proprio PC a Windows 10: e perché no?
Aggiornare il proprio PC a Windows 10: e perché no?Enzo Contini
 
MobileDevCamp2012 - Android
MobileDevCamp2012 - AndroidMobileDevCamp2012 - Android
MobileDevCamp2012 - Androidmobiledevcamp
 

Similaire à Android vs iOS (20)

Introduzione ad Android
Introduzione ad AndroidIntroduzione ad Android
Introduzione ad Android
 
Android: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezzaAndroid: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezza
 
Mobile platforms development overview
Mobile platforms development overviewMobile platforms development overview
Mobile platforms development overview
 
Augmented Reality: guardare il mondo da un altro punto di vista
Augmented Reality: guardare il mondo da un altro punto di vistaAugmented Reality: guardare il mondo da un altro punto di vista
Augmented Reality: guardare il mondo da un altro punto di vista
 
Android Code Camp for Beginners - Ecosistema Android (IT)
Android Code Camp for Beginners - Ecosistema Android (IT)Android Code Camp for Beginners - Ecosistema Android (IT)
Android Code Camp for Beginners - Ecosistema Android (IT)
 
Android Workshop
Android WorkshopAndroid Workshop
Android Workshop
 
Flutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaformaFlutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaforma
 
Smau milano 2012 arena social media massimo-grava
Smau milano 2012   arena social media massimo-gravaSmau milano 2012   arena social media massimo-grava
Smau milano 2012 arena social media massimo-grava
 
Touch&play framework
Touch&play frameworkTouch&play framework
Touch&play framework
 
Sviluppo di applicazioni mobile con PhoneGap
Sviluppo di applicazioni mobile con PhoneGapSviluppo di applicazioni mobile con PhoneGap
Sviluppo di applicazioni mobile con PhoneGap
 
GWT Development for Handheld Devices
GWT Development for Handheld DevicesGWT Development for Handheld Devices
GWT Development for Handheld Devices
 
Prodigyt at Next Step IBMi, 11 luglio 2017
Prodigyt at Next Step IBMi, 11 luglio 2017Prodigyt at Next Step IBMi, 11 luglio 2017
Prodigyt at Next Step IBMi, 11 luglio 2017
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatore
 
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
 Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
 
Sviluppare una app mobile net oriented
Sviluppare una app mobile net orientedSviluppare una app mobile net oriented
Sviluppare una app mobile net oriented
 
Ubuntu Phone: the community smartphone
Ubuntu Phone: the community smartphoneUbuntu Phone: the community smartphone
Ubuntu Phone: the community smartphone
 
Applicazioni mobili: strumenti, costi soluzioni e peformance
Applicazioni mobili: strumenti, costi soluzioni e peformanceApplicazioni mobili: strumenti, costi soluzioni e peformance
Applicazioni mobili: strumenti, costi soluzioni e peformance
 
App World War
App World WarApp World War
App World War
 
Aggiornare il proprio PC a Windows 10: e perché no?
Aggiornare il proprio PC a Windows 10: e perché no?Aggiornare il proprio PC a Windows 10: e perché no?
Aggiornare il proprio PC a Windows 10: e perché no?
 
MobileDevCamp2012 - Android
MobileDevCamp2012 - AndroidMobileDevCamp2012 - Android
MobileDevCamp2012 - Android
 

Android vs iOS

  • 1. Android vs iOS Domenico Gabriele Android Developer Francesco Gambino iOS Specialist
  • 2. 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
  • 3. 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
  • 4.
  • 5. 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)
  • 6. Android string = string.replace("to", "xyz"); iOS [string stringByReplacingOccurrencesOfString:@"to" withString:@"xyz" options:0 range:NSMakeRange(0, string.length)];
  • 7. 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
  • 10. ● È 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
  • 12. 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
  • 13. ● 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
  • 14. Relative layout vs Autolayout
  • 15. Esempio di Layout iOS ● 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
  • 17. 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
  • 18. 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
  • 19.
  • 20. 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
  • 21. ● 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 Push Android iOS
  • 23. ● 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
  • 24. 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