
Scrittura · 7 ott 2019
Supporto multifinestra nella tua app per iPad
Sviluppo nativo per iPadOS
Il mese scorso Apple ha rilasciato iPadOS, il primo sistema operativo dedicato all'iPad. Si differenzia da iOS perché supporta lo schermo più grande dell'iPad, comprese le finestre multiple e lo schermo diviso. Io sviluppo app ed era ora di sfruttare le nuove possibilità offerte da iPadOS.
Dal 2016 uso l'iPad come computer principale, è un ottimo computer mobile. Il sistema operativo però è diverso da quello della maggior parte dei computer. iPadOS è basato su iOS, che gira sul popolare telefono di Apple, l'iPhone. Per questo l'iPad nell'uso quotidiano è un po' diverso, per come fa girare le app.

Visto che iPadOS ha radici da smartphone, il sistema operativo gestisce le app come fa un iPhone: le app girano a schermo intero, concentrate su un solo compito. La gente ama l'iPad proprio per questo, perché è un ottimo modo per tenere la mente concentrata su una cosa sola.
Supporto multifinestra per iPad
Ci sono situazioni in cui far girare più finestre contemporaneamente può essere molto utile, ed è qui che Apple ha migliorato iPadOS, introducendo la possibilità di far girare le app affiancate.

Anche se lavori a un solo compito, il supporto per più finestre è molto utile perché permette di far girare più istanze della stessa app insieme. Si aprono così casi d'uso diversi, in cui puoi guardare e modificare i contenuti da angolazioni diverse. Come confrontare due mesi diversi nella tua agenda, modificare un documento lungo o guardare la mappa a scale diverse contemporaneamente.


L'idea di design
Quando Apple ha introdotto il supporto per più finestre su iPad l'ha progettato rispettando le radici mobili di iPadOS. A differenza delle app per PC tradizionali, dove il software complesso gira di default in più finestre (e pannelli) diversi, iPadOS mantiene il requisito che un'app deve poter fare tutto da una sola finestra.
Su iPad è un requisito di design che tutte le finestre di un'app siano dello stesso tipo e che ognuna possa fare tutto nell'applicazione. L'utente può fare qualsiasi cosa da una sola finestra, se vuole. Deve poter creare più finestre solo se le ritiene utili, ma l'app non deve mai richiederlo. Questo facilita il modo semplice in cui le app girano su iPadOS: puoi continuare a usarle a schermo intero come su uno smartphone.

Ciclo di vita dell'app (e modifiche al codice)
Dal punto di vista tecnico Apple ha introdotto UIWindowScene, con una corrispondente astrazione UISceneSession nella struttura dell'interfaccia. Si colloca tra UIScreen e UIWindow.


Quando iPadOS (e iOS) fanno girare più app, può succedere che il sistema operativo chiuda un'app in background per risparmiare memoria ed energia. È voluto: tiene veloce il sistema operativo e gentile con la batteria.
Per il ciclo di vita dell'app, questo significa che all'avvio devi controllare se l'app era già in esecuzione. Se esiste una UISceneSession, l'app deve riconnettersi, per offrire all'utente uno stato dell'interfaccia persistente. Se fatto bene, l'utente non si accorge che l'app è stata interrotta mentre era in background.

Se adotti nella tua app i nuovi concetti UIWindowScene (e UISceneSession), potrai sfruttare le nuove capacità multifinestra dell'iPad. Ma c'è un'altra cosa: Apple ha in programma di portare le app iOS e iPadOS sul Mac. Con i nuovi concetti di interfaccia la tua app andrà benissimo anche su macOS!

Nella pratica
Come sviluppatore ho avuto pochi problemi a implementare i nuovi concetti di interfaccia nelle mie app. Con relativamente poco sforzo si abilitano tanti casi d'uso diversi in cui la stessa app dà più potenza all'utente.




Conclusione
Apple non ha avuto fretta con il supporto multifinestra su iPad, ma si è presa il suo tempo per progettarlo bene. Se adotti i nuovi concetti, la tua app sarà più potente per gli utenti.
È sempre una buona idea prendersi il tempo di capire i concetti di interfaccia di base prima di iniziare a sviluppare. Fallo bene (e per bene) invece che in fretta (e male)!