Hola! Quest’oggi parliamo di Podcastory, un’app che abbiamo recentemente realizzato con Nicolò Benigni (già co-fondatore di Blooza).
Come si può facilmente intuire, Podcastory è un’app di podcast: lo scopo dell’app è quello di raccogliere in un unico punto tutti i podcast realizzati dall’omonima podcast factory, la quale, fino ad oggi, si è sempre affidata alle classiche piattaforme di distribuzione. Tra le richieste funzionali, oltre a quella di avere un player semplice e in linea con le app di riferimento del settore, spiccava sicuramente quella di realizzare un’app completamente integrata con Apple CarPlay e Android Auto.
La collaborazione con Nicolò è stata molto semplice: noi ci siamo occupati dello sviluppo dell’App, lui dello sviluppo del backend di gestione dei dati e le relative API da esporre all’app.
L’app
Come anticipato poco fa, le funzionalità dell’app ricalcano un vero e proprio player audio, in linea con le app di riferimento del settore:
- Ricerca e navigazione tra gli show disponibili ed i relativi episodi
- Playback degli episodi
- Controllo del playback in background tramite notifica o nella schermata di sblocco
- Lista degli episodi e degli show preferiti
- Condivisione di show ed episodi
- Continua ad ascoltare: per riprendere l’ascolto degli ultimi podcast
- Supporto completo ad Apple CarPlay e Android Auto
Design
Il design iniziale proposto da Nicolò era molto moderno, semplice e pertanto estremamente intuitivo.
Dopo alcune fasi di confronto sulla UX e sulla UI siamo arrivati a quello che è il risultato che trovate nell’app:




Ispirati senza copiare
Con questo progetto ci siamo approcciati al mondo dei podcast per la prima volta e così, per realizzare l’app, sia per quanto riguarda il design che per le funzionalità, ci siamo ispirati ad app del settore già famose ed affermate, per due semplici motivi:
- Nel tempo hanno validato diversi flussi e pattern di utilizzo: ignorare la loro esperienza sarebbe da pazzi 🙂
- Hanno un grande bacino di utenti che sono già abituati ad utilizzare queste app, seguendo gli stessi dettami sarà facile per gli utenti stessi utilizzare anche Podcastory
Abbiamo analizzato infine i commenti presenti su App Store e Play Store per capire quali fossero le critiche e le segnalazioni più frequenti, in modo da non incappare a nostra volta negli stessi errori.
Tecnologia
Avevamo ben chiaro il risultato che volevamo ottenere:
- un’app fluida e reattiva che potesse gestire il player nativo del device, soprattutto in background
- l’implementazione del design studiato, indipendente dalla piattaforma (iOS o Android)
- l’integrazione con i sistemi Apple CarPlay e Android Auto
Per raggiungere i primi due obiettivi la scelta sarebbe ricaduta facilmente su Flutter, il framework di riferimento per lo sviluppo di app ibride con performance native.
Ne abbiamo parlato anche qui:
L’integrazione dei sistemi car, sia su iOS che Android però ci lasciava un po’ perplessi… sarà possibile utilizzare Flutter anche con queste funzionalità da implementare?
Studiando e analizzando i sistemi car è emerso che iOS e Android richiedevano implementazioni completamente diverse, anche da un punto di vista strutturale.
- Apple CarPlay richiede di implementare un secondo “entry point” dell’app come se fosse un’altra app che gira su un sistema separato, ma al contempo deve essere integrato con l’app.
- Android Auto richiede di realizzare un sistema che lavora in background come se fosse una sorgente di contenuti e che quindi deve rispondere alle richieste specifiche di Android Auto.
Era chiaro: per supportare i sistemi car sarebbe servita una implementazione 100% nativa.
Alla fine abbiamo strutturato l’intera app in questo modo:

Come descritto dallo schema abbiamo questi macro blocchi:
Flutter
L’intera interfaccia grafica è stata realizzata con Flutter sfruttando appieno le sue caratteristiche performance e la facilità di implementare un’interfaccia unica per più piattaforme.
Moduli Nativi
Demandando la UI alla parte Flutter, restava da implementare la logica di business come le chiamate alle API del backend Podcastory e la gestione del player.
Era necessario realizzare entrambe i moduli nativi al 100% perché dovevano essere invocati sia dall’app mobile che dalla parte car (in cui Flutter non viene caricato), mentre per comunicare con lo strato UI Flutter abbiamo implementato dei canali di comunicazione bidirezionali Flutter <=> Nativo tramite gli strumenti messi a disposizione da Flutter proprio per questo scopo: i Platform Channels.

Apple CarPlay – Android Auto
La parte car è stata implementata nativamente su Android e iOS utilizzando i relativi SDK, e si interfaccia con i moduli di business logic per invocare il player (anch’esso nativo) o effettuare le chiamate alle API backend.
Conclusione
Per concludere possiamo dire che il risultato finale ci rende molto orgogliosi, siamo contenti di come è uscita l’app e anche delle scelte tecnologiche ed implementative che si sono rivelate vincenti. Cosa ne pensate del nostro approccio ibrido Flutter/Nativo? Scrivetelo nei commenti 🙂
Alla prossima, bye