Sviluppo software

Perché NON conviene sviluppare App iOS

Prendendo spunto da due articoli ovvero "Apple Encouraging Progressive Web Apps By Rejecting iOS Apps" e "Considering App vs. Website? It’s 2019: Build a Website." voglio elencare i motivi principali per cui oggi è meglio sviluppare una Web App piuttosto che una App per iPhone.

1. Rischi#

Il primo aspetto da valutare è il fatto che gli app store e in special modo l'App Store di Apple, si possono rifiutare di pubblicare la tua App per mille motivi. Basta infatti andare a leggere le App Store Review Guidelines di Apple dove viene detto quanto segue:

The App Store is a great way to reach hundreds of millions of people around the world. If you build an app that you just want to show to family and friends, the App Store isn’t the best way to do that.

Quello che viene accennato qui, in modo non proprio esplicito, è che le App che si vogliono pubblicare sullo Store devono essere di interesse mondiale o quasi. Questo esclude non solo le App che si vogliono mostrare a famiglia e amici, ma anche tutte le App che, ad esempio, sono rivolte ai dipendenti di un'azienda e non a chiunque. Quindi l'intera classe delle App aziendali ad uso interno probabilmente verranno rifiutate dalla pubblicazione sull'App Store di Apple.

4.2 Minimum Functionality

Your app should include features, content, and UI that elevate it beyond a repackaged website. If your app is not particularly useful, unique, or “app-like,” it doesn’t belong on the App Store. If your App doesn’t provide some sort of lasting entertainment value, it may not be accepted.

Quindi la tua App, per poter essere pubblicata, deve come minimo:

  • essere utile;
  • essere unica;
  • essere "app-like";
  • fornire qualche forma di intrattenimento duraturo.

Purtroppo tutti questi punti sono opinabili: quando si considera una App utile? Unica? "App-like"? Chi decide se fornisce qualche forma di intrattenimento duraturo?

Sono tutte cose che decidono i revisori dello store. Purtroppo noi sviluppatori scopriamo se l'idea del nostro cliente è utile o unica o "app-like" solo se la inviamo allo store per il processo di approvazione e quindi solo dopo che l'abbiamo sviluppata completamente!

If the App Store model and guidelines are not best for your app or business idea that’s okay, we provide Safari for a great web experience too.

In questo punto viene suggerita come alternativa il web ed è come se dicessero "La tua App non è stata approvata? Trasformala in una Web App". Noi fortunatamente utilizziamo le tecnologie web anche per realizzare App iOS e quindi il passaggio da App a Web App nel nostro caso non è devastante, ma prova a pensare ad uno sviluppatore che ha sviluppato una App per iOS utilizzando le tecnologie proprietarie di Apple (Objective-C o Swift, Xcode, ecc.): nel caso in cui l'App Store dovesse rifiutare la sua App sarebbe una tragedia in quanto dovrebbe riscriverla tutta d'accapo con le tecnologie web (HTML, CSS, JavaScript) ammesso che sia in grado di farlo. Prova a immaginare di essere il suo cliente: se ti va bene (lo sviluppatore riscrive l'App con tecnologie web) spendi il doppio, se ti va male (lo sviluppatore non è in grado di fare ciò) hai perso i tuoi soldi (di solito migliaia di euro).

2. Costi#

Sviluppare una App per iOS è costoso. Molto più costoso che svilupparla per Android o come semplice Web App. Questo perché per sviluppare una App iOS è obbligatorio disporre di hardware specifico Apple ed è obbligatorio iscriversi all'Apple Developer Program pagando un canone annuale. Come minimo servono 3'000 € di investimento iniziale.

Quelli appena elencati purtroppo sono i costi minori, i costi maggiori derivano dal fatto che Apple non ha mai trattato bene gli sviluppatori e questo si traduce in un ambiente di sviluppo (Xcode) buggatissimo e lentissimo che fa perdere un mare di tempo per riuscire anche solo a impacchettare la propria App e inviarla allo Store per il processo di approvazione.

Inoltre Apple gestisce male il rilascio degli aggiornamenti, pertanto se si aggiorna il sistema operativo del proprio iPhone (iOS) all'ultima versione disponibile c'è il rischio poi di non avere gli strumenti per svilupparci sopra poiché questi ultimi diventano compatibili con le nuove versioni di iOS solo in un secondo momento, quando cioè Apple rilascia gli aggiornamenti di Xcode.

Altro aspetto dolente è il supporto pressoché inesistente nonostante si paghi il canone annuale per essere Apple Developer. In caso di problemi, il più delle volte causati da bug dell'ambiente di sviluppo Xcode, si finisce per chiedere assistenza nel forum degli sviluppatori dove si ottengono le classiche risposte inutili e illogiche che sembrano date da automi a stati finiti. Stiamo parlando di intere giornate di lavoro buttate nel ... per tentare di capire come mai Xcode non compila, non riconosce più il nostro iPhone, non carica la build, ecc..

Poi c'è da considerare i costi di rilascio. Ogni volta che si vuole aggiornare la App, correggere un bug o qualsiasi intervento di manutenzione grande o piccolo che sia è sempre un bagno di sangue. Ogni 5-6 mesi dal rilascio iniziale le librerie usate vengono deprecate (diventano cioè obsolete) e gli strumenti di sviluppo e le procedure di rilascio cambiano. Quindi ogni volta, oltre alla modifica che si vuole effettuare, c'è da riscrivere una parte dell'App o rileggere chili di documentazione per capire come è cambiato il processo di rilascio di una App. In più ogni rilascio vuol dire una nuova richiesta di approvazione da parte di Apple con conseguente rischio che la App non sia più in linea con le linee guida aggiornate.

Il fatto poi che i sistemi Apple siano chiusi complica qualsiasi tipo di analisi e debug. Concetti perfettamente noti ad un ingegnere informatico, come ad esempio la cifratura a chiave pubblica e privata, vengono rinominati nel mondo Apple con buzzword che non vogliono dire nulla e servono solo a confondere le idee come "Provisioning profile", "signing identity", ecc.

Dall'altro lato sviluppare una Web App costa molto meno: semplificando, per installare una modifica basta copiare dei file su uno spazio web, non richiede l'approvazione di nessuno e gli standard web sono aperti e future proof (la prima pagina web della storia del 1991 è ancora oggi apribile con un normale browser).

3. Benefici#

Quand'anche il povero sviluppatore, dopo mesi di duro lavoro, riuscisse a farsi approvare la App sviluppata probabilmente non otterrebbe l'effetto sperato in quanto le statistiche ci dicono che la maggior parte degli utenti installano 0 (zero) App al mese sul proprio iPhone. Questo ci dice che una volta che l'utente ha installato i soliti Facebook, WhatsApp, YouTube e poco altro molto probabilmente non installerà la tua App.

Dall'altro lato la Web App non ha bisogno di essere installata anche se è possibile comunque aggiungerla alla Home grazie alla funzionalità di Safari "Aggiungi a Home". Se poi è stata sviluppata come Progressive Web App avrà la sua icona sulla Home e si potrà aprire senza vedere la barra degli indirizzi avendo l'impressione che si tratti proprio di un App nativa.

L'unico caso in cui può essere necessario tentare la strada della App è quando si vogliono avere:

  • le notifiche push ad App chiusa;
  • l'accesso a componenti particolari dell'hardware come ad esempio il bluetooth.

4. Conclusione#

Sviluppare una App per iOS è un percorso a ostacoli non indifferente per cui, a meno che la tua idea non sia utile, unica, "app-like" (come inteso da Apple) e debba accedere ad hardware particolare dell'iPhone, ti sconsigliamo vivamente di far sviluppare una App per tale dispositivo, il gioco non vale la candela.

Votazione pagina#

[Voti: 5 Media voto: 4.2/5]
Autore: Lorenzo Chiodi
Senior software developer con più di 10 anni di esperienza nello sviluppo di soluzioni web based, enterprise, su misura. Dal 2011 socio fondatore di Garda Informatica Snc condivide questa avventura col fratello Giovanni.

Promemoria sui Cookie e sulla Privacy

Leggi l'informativa
closeIcona closesearchIcona searchmore vertIcona more vertmenuIcona menulinkIcona link