Quindi vuoi creare un’app mobile?
Quindi vuoi creare un’app mobile? È giunto il momento, dici? Ok. Ci siamo. Da questo “sì”, si innescano ora altre scelte da fare. Partiamo dal facile. App nativa per Android o iOS? Oppure un sistema cross-platform (React Native o Flutter, ad esempio)?
Questa prima decisione, sicuramente, influirà su almeno due aspetti: costi e prestazioni.
In linea teorica, tutte le app possono essere sviluppate sia con un sistema cross-platform sia con uno sviluppo nativo. È vero, le correnti di pensiero in merito sono molteplici e spesso molto nette. In SPOT. noi crediamo ci sia spazio per le “sfumature”.
In teoria, lo sviluppo di un sistema cross-platform consente risparmi significativi in termini di tempo e denaro perché, detto molto semplicemente, si sviluppa un’app invece di due. In realtà, non è così semplice. Se, inizialmente, questa scelta sembra ridurre sensibilmente i tuoi costi, hai mai riflettuto, invece, sul fatto che il risparmio su 2 app native si aggira attorno al 30%? Possiamo, ad esempio, ottimizzare il tempo codificando librerie di script generiche, ove possibile, consentendo l’utilizzo di determinati “pezzi di codice” nelle singole app Android e iOS.
Se la tua app è ricca di immagini o, ancora, deve interagire con la funzionalità dello smartphone (GPS o Bluetooth, ad esempio), gestirla con lo sviluppo di un sistema cross-platform, significherà maggiore complessità e un utilizzo delle risorse del telefono (quali ad esempio il consumo di batteria), più elevato rispetto allo sviluppo di un’app nativa.
Il vantaggio principale del codice nativo è che comunica direttamente con il sistema operativo del telefono. Non ci sono “altri livelli” che si interpongono in questo dialogo. Quando abbiamo bisogno di funzionalità avanzate o di un uso intenso di immagini o video, questa comunicazione diretta si traduce in prestazioni migliori.
Abbiamo chiesto un parere di Luca Giorgetti che qui in SPOT. è Senior Mobile Developer, e che ci racconta 3 diversi scenari e relativi fattori da tenere in considerazione quando si effettua una scelta di questo genere.
Scenario 1: app meteo
Questa è un’app relativamente semplice in termini di funzionalità. Deve cercare la posizione del tuo telefono, quindi restituire il bollettino meteorologico da un server remoto.
A parte una breve interazione con la funzione GPS del telefono, non c’è interazione con le funzionalità generali del telefono. Non abbiamo bisogno di immagini o altro. Probabilmente, non terrai quella app aperta nemmeno per molto tempo.
Questa è una app che può essere sviluppata utilizzando React Native o Flutter, e che, così, costerà sicuramente meno rispetto allo sviluppo di due app separate per Android e iOS.
Scenario 2: app di fotoritocco
Qui i requisiti sono un po’ più strutturati. Dobbiamo accedere all’app per le foto del telefono, selezionare le foto e poterle ritoccare. Funzioni come ritagliare, spostare o filtrare le foto possono richiedere molta potenza di elaborazione, se lo strumento di programmazione non comunica direttamente con il sistema operativo del telefono. Cosa significa? L’app funziona lentamente, il telefono si surriscalda e la batteria si scarica rapidamente. Per ottenere il massimo da questa app, consigliamo quindi lo sviluppo nativo.
Scenario 3: applicazione per “personal training” che si possa sincronizzare con la tua attrezzatura fitness.
Qui entriamo a pieno titolo nel terreno dell’IoT. Questa app deve essere sincronizzata con il tapis roulant, la bicicletta o qualsiasi altro attrezzo ti occorra, probabilmente tramite Bluetooth. Deve funzionare per l’intera sessione di allenamento senza scaricare la batteria del telefono (o del tablet). Deve utilizzare l’accelerometro del telefono e/o la fotocamera. In questo caso quindi, la vera discriminante è l’uso intensivo di un’app che sfrutta pesantemente anche i componenti hardware dello smartphone: sarebbe più complesso e dispendioso avere un’app stabile scegliendo la strada dello sviluppo cross-platform.