+ All Categories
Home > Mobile > Android vs iOS

Android vs iOS

Date post: 13-Aug-2015
Category:
Upload: domenico-gabriele
View: 144 times
Download: 3 times
Share this document with a friend
25
Android vs iOS Domenico Gabriele Android Developer Francesco Gambino iOS Specialist
Transcript

Android vs iOS

Domenico GabrieleAndroid 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)

Domenico Gabriele
Conviene secondo me mettere prima android e dopo java
Francesco Gambino
no, prima il linguaggio, poi la libreria secondo me
Francesco Gambino
C++ sebbene possa essere utilizzato per android potrebbe essere fuorviante per chi vede la slide, lo direi solo a voce
Domenico Gabriele
Ok Per me eè essenziale invertirli erche si collega alla gestione della memoria ART

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 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

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 PushAndroid iOS

Notifiche pushiOSAndroid

● 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


Recommended