ImageSlideShow uno Slideshow Controller in Swift per iOS

Ho deciso di iniziare a condividere parte del mio codice su Github per migliorare le mie skills su Swift e per aprirmi ad un mondo nuovo, quello dell’OpenSource.

Ho quindi fatto l’upload del progetto di ImageSlideShow, un ViewController che fa da Slideshow per le immagini.

Il suo funzionamento è molto basilare ma è applicabile in pratica a qualsiasi applicazione.
Trovate tutte le informazioni su Github.

Di lavoro ce né ancora molto ma sono comunque soddisfatto. Spero che apprezziate e che iniziate ad utilizzarlo.

Happy coding!

Quanto costa e come realizzare un’applicazione per iOS o per Android

Ho deciso di riprendere l’argomento che avevo già trattato in passato perché nel frattempo sono cambiate molte cose e quindi è necessario aggiornarsi.

Il mercato delle applicazioni per SmartPhone (iPhone, iPad, Android in generale) si è espanso e nel frattempo sono nati nuovi tipi di dispositivi come i Tablet, gli SmartWatch e le SmartTV.
Ad aggiungersi sono nate anche nuove tecnologie di sviluppo che ci permettono di abbassare drasticamente i costi.

Fino a 5-6 anni fa mettere un’app in uno Store, sia App Store che Google Play, ci dava la certezza di avere dei buoni download ed una buona visibilità, la concorrenza non era così spietata e quindi potevamo pensare ad avventurarci in questo mondo a fronte di un costo abbastanza elevato ma comunque con dei ritorni quasi certi.

Oggi le cose si sono invertite. Sviluppare un’app non è più così costoso o almeno ci sono metodi che permettono di far risparmiare molto ma è altrettanto molto difficile avere dei buoni dati di download e quindi dei buoni profitti.

È necessario quindi affrontare il progetto in modo più intelligente e più orientato al marketing.

Come realizzare un’app?

Qui entra in gioco la prima parte, come poter sviluppare un’applicazione affinché funzioni realmente, sia apprezzata dal pubblico e permetta di avere quei profitti tanto desiderati.
Intanto alla base deve esserci un buon piano marketing che dia la giusta visibilità al progetto.

Dopo di che è necessario affidarsi ad un Team di sviluppo adeguato, che sappia analizzare correttamente l’app e il progetto da realizzare e sappia prendere le giuste decisioni. Queste infatti si rifletteranno sia in modo imminente durante la vendita dell’app sia in seguito durante la sua manutenzione nel tempo.

Ci sono fondamentalmente due metodi per fare un’applicazione:

Realizzarla in modo Nativo

  • Significato
    • Sviluppare l’applicazione utilizzando sia il linguaggio di programmazione che l’SDK della casa costruttrice del dispositivo. Per iOS significa sviluppare con i linguaggi Objective-C o Swift utilizzando direttamente l’SDK di Apple. Per Android invece significa sviluppare con il linguaggio Java utilizzando l’SDK di Google.
  • Pro
    • Le applicazioni realizzate in questo modo sfruttano al 100% l’hardware di ogni device, senza alcun limite. Significa poter realizzare praticamente ogni cosa (con i limiti del caso), accedere ad ogni risorsa e avere a disposizione tutta la potenza dei device.
  • Contro
    • Ogni versione dell’app, iOS e Android, devono essere sviluppate indipendentemente ed è necessario avere degli sviluppatori o un Team competente per le due risorse, i costi quindi sono più alti.

Realizzarla in modo Ibrido

  • Significato
    • Sviluppare l’applicazione utilizzando un linguaggio ibrido come il linguaggio di programmazione Web (HTML, CSS, Javascript). Questo viene interpretato da un browser che simulerà il comportamento di un’applicazione nativa.
  • Pro
    • Le applicazioni realizzate in questo modo hanno il privilegio di poter essere sviluppate usando un codice unico che poi sarà compilato per ogni device. I costi vengono ridotti dal fatto di poter realizzare un’unica applicazione che poi girerà su ogni dispositivo.
  • Contro
    • Proprio per la sua caratteristica di simulazione questo genere di applicazione è più limitato e quindi ha un accesso alle risorse e alle prestazioni limitato.

Il Team di sviluppo al quale vi rivolgerete dovrà scegliere quale metodo utilizzare in base al tipo di applicazione.
Personalmente preferisco lavorare in modo Nativo per poter sfruttare a pieno ogni device e poter realizzare un’app davvero innovativa ed unica. Ma queste decisioni comunque sono da prendere in base al progetto, al budget e a molti altri aspetti.

Quanto costa realizzare un’app?

Come abbiamo visto prima il costo cambia in base al metodo di sviluppo.
Ma ci sono anche altri aspetti da valutare. Intanto partiamo con il dire che tutto dipende dal tempo che servirà per realizzarla.
Di base, più complessa è l’app e più tempo servirà, quindi il costo sarà maggiore.

I punti da analizzare sono:

  • Funzionalità di network (i dati saranno presi dal web? dobbiamo gestire utenze (login/registrazione)?
  • Interfaccia grafica: Realizzazione grafica
  • Interfaccia grafica: Realizzazione esperienza utente (animazioni, funzionalità grafiche particolari, schermate per la manipolazione dei dati, ecc.)

Questi tre punti sono quelli che inizialmente possono influire sui costi.
Implementare funzionalità di rete complesse come la registrazione utente necessitano di tempo (tempo di analisi, di sviluppo e di testing).
Anche creare interfacce grafiche complesse aumentano il tempo di sviluppo, invece utilizzare la UI di sistema è più economico; non in tutti casi è la scelta migliore.

Un altro fattore da valutare è il Team di sviluppo. Più esperienza c’è e meno tempo utilizzeranno per realizzare il prodotto e quindi sarà possibile sia risparmiare che investire il tempo per creare un prodotto migliore.

È vero, non sempre è così, anzi molti grandi aziende che si occupano di sviluppo applicazioni hanno costi davvero alti. Ma vale la pena farsi fare un’analisi e un preventivo.

E quindi quanto costa? Impossibile dirlo senza sapere cosa c’è da realizzare ma posso sbilanciarmi dicendo che per un piccolo progetto è necessario almeno un mese intero di lavoro, per una singola versione Nativa (iOS o Android) o per le due versioni in modo Ibrido.

Ovviamente lo sviluppo di un software è molto più complesso di quello che ho descritto qui sopra, ma volevo darvi un’idea delle cose che dovete prendere in considerazione nel momento in cui volete sviluppare un’app per la vostra azienda o un’app per un vostro progetto.

Se avete necessità di fare un preventivo potete scrivermi.

Icon Recolor – App per ricolorare le icone su macOS

icon

IconRecolor è un’applicazione per macOS che fa una cosa: Ricolora le icone PNG in un click.

Il suo funzionamento è semplicissimo, basta fare drag & drop dei file da ricolorare, scegliere il colore e salvare le nuove icone.

Ho realizzato quest’app pensando a tutti gli sviluppatori e i grafici che hanno bisogno di modificare velocemente le icone durante lo sviluppo.
Quante volte accade che le specifiche vengono cambiate al volo, o c’è bisogno di fare un test veloce sull’abbinamento dei colori? IconRecolor permette di colorare le icone in modo davvero veloce e semplice diminuendo drasticamente i tempi di lavoro.

Potete scaricare la versione 1.0 direttamente Mac App Store.

 

Nice APP – Realizzazione Applicazioni Mobile

Come avrete notato il blog ha subìto qualche cambiamento.
Dopo un anno e mezzo ho deciso di rimettermi a sviluppare applicazioni. Non starò a dirvi il perché, sappiate solo che amo davvero farlo, amo programmare e amo farlo per i dispositivi Apple.

Abbiamo realizzato il sito niceapp.it che spiega nel dettaglio che cosa facciamo e il nostro metodo di lavoro.
La mia specializzazione è iOS ed è quello che personalmente e fisicamente farò.

In questo blog quindi parlerò di argomenti molto tecnici, UI/UX, Swift e quindi programmazione. Mentre su NiceAPP discuterò di argomenti relativi al marketing e alle scelte che vanno fatte prima, durante e dopo lo sviluppo di un’applicazione.

A presto quindi!

Implementare Facebook login in un’app iOS e PHP

Qualche mese fa parlavo con dei miei colleghi riguardo alla migliore tecnica per implementare il classico Login Facebook all’interno di un servizio tramite l’app iOS in modo sicuro.

La difficoltà più grande che abbiamo avuto è stata quella di capire quale migliore tecnica ci permettesse di sfruttare l’SSO in modo intelligente. In particolar modo c’erano due punti chiave:

  1. L’utente non deve rendersi conto di niente e ritrovarsi loggato/registrato
  2. Il servizio (quindi il CMS che gestisce l’anagrafica utenti) deve registrare un  utente valido

Poi qualche giorno fa mi sono ritrovato a dover implementare OAuth e SSO su segnala.net e mi sono dovuto rimboccare le maniche per implementare quanto avevo descritto.

La situazione era questa: CMS Apache, PHP, MySQL e applicazione iOS (Swift).
Il CMS gestisce l’anagrafica e quindi se un utente deve accedere, prima deve loggarsi o registrarsi.

Nel CMS ho installato un server OAuth così da poter avere accesso alle API solo tramite autenticazione OAuth, poi ho iniziato a scrivere il codice che si occupa di gestire l’SSO.

La logica è descritta nell’immagine:

Logica SSO-OAuth per implementare il Facebook login

*[SSO Data] sono i dati richiesti per la verifica dell’accesso. Ad esempio con Facebook ho utilizzato il Token e lo User ID.

I passaggi logici sono questi:

  • L’app richiede a Facebook, tramite l’SDK, l’accesso. Facebook quindi mi passa il suo Token e lo user ID.
  • L’app quindi richiede tramite API al mio CMS l’accesso tramite questi due dati.
  • Il CMS accede quindi a Facebook tramite Graph e controlla che il token sia valido e che corrisponda allo user ID passato
  • Se tutto va a buon fine va a pescare l’indirizzo email dell’utente e qualche altra informazione necessaria ad una eventuale registrazione
  • Una volta presi i dati necessari va a controllare se esiste un utente registrato con l’email trovata
  • Se esiste crea un token di accesso e lo passa all’app
  • Se non esiste crea un nuovo utente con i dati Facebook, crea un token di accesso e lo passa all’app

Questa logica è applicabile ad ogni tipo di SSO Provider e mi è sembrata molto sicura sia dalla parte dell’app che da quella del server.

Se avete domande o suggerimenti commentate pure!