
Escrita · 7 out 2019
Suporte de várias janelas na tua app para iPad
Desenvolvimento nativo para iPadOS
No mês passado, a Apple lançou o iPadOS, o primeiro sistema operativo dedicado ao iPad. Distingue-se do iOS por suportar o ecrã maior do iPad, incluindo janelas múltiplas / em ecrã dividido. Eu desenvolvo apps e chegou a altura de aproveitar estas novas possibilidades que o iPadOS oferece.
Desde 2016 que uso o iPad como computador principal, é um ótimo computador móvel. Mas o sistema operativo é diferente do da maioria dos computadores. O iPadOS baseia-se no iOS, que corre no popular telemóvel da Apple, o iPhone. Isto torna o iPad um pouco diferente no dia a dia, por causa da forma como corre as apps.

Por ter raízes no smartphone, o iPadOS trata as apps como um iPhone: as apps correm em ecrã inteiro, focadas numa única tarefa. As pessoas adoram o iPad por isso, porque é uma ótima forma de manter a cabeça concentrada numa só coisa.
Suporte de várias janelas no iPad
Há situações em que correr várias janelas em simultâneo pode ser muito útil, e foi aqui que a Apple melhorou o iPadOS, ao introduzir o suporte para correr apps lado a lado.

Mesmo que estejas a trabalhar numa única tarefa, ter suporte para várias janelas é muito útil, porque permite correr várias instâncias da mesma app ao mesmo tempo. Isto abre casos de utilização diferentes, em que podes ver e editar conteúdo de ângulos diferentes. Por exemplo, comparar dois meses diferentes na tua agenda, editar um documento longo ou ver o mapa a escalas diferentes em simultâneo.


Intenção do design
Quando a Apple introduziu o suporte de várias janelas no iPad, desenhou-o a pensar nas raízes móveis do iPadOS. Ao contrário das apps tradicionais de PC, onde o software complexo pode correr por várias janelas (e painéis) diferentes por defeito, o iPadOS mantém a exigência de que uma app tem de conseguir fazer tudo a partir de uma única janela.
É um requisito de design no iPad que todas as janelas da app sejam do mesmo tipo e que cada uma consiga fazer tudo na aplicação. O utilizador deve poder fazer tudo a partir de uma só janela, se quiser. Deve poder criar várias janelas só se achar útil, mas a app nunca o deve exigir. Isto mantém simples a forma como as apps correm no iPadOS: podes continuar a usá-las em ecrã inteiro, como num smartphone.

Ciclo de vida da app (e alterações ao código)
Do ponto de vista técnico, a Apple introduziu o UIWindowScene, com a abstração UISceneSession correspondente, na estrutura da interface. Fica entre o UIScreen e o UIWindow.


Quando o iPadOS (e o iOS) correm várias apps, é possível que o sistema operativo feche uma app em segundo plano para poupar memória e energia. É assim por design: mantém o sistema operativo rápido e simpático para a bateria.
Do ponto de vista do ciclo de vida da app, isto significa que tens de verificar se a app já estava a correr antes, quando é iniciada. Quando existe uma UISceneSession, a app deve voltar a ligar-se a ela, para dar ao utilizador um estado de interface persistente. Quando é bem feito, o utilizador nem repara que a app foi interrompida enquanto estava em segundo plano.

Se adotares os novos conceitos UIWindowScene (e UISceneSession) na tua app, vais poder aproveitar as novas capacidades de várias janelas do iPad. Mas há mais uma coisa: a Apple planeia levar as apps de iOS e iPadOS para o Mac. Com os novos conceitos de interface, a tua app também vai funcionar lindamente no macOS!

Na prática
Como programador, tive pouca dificuldade em implementar os novos conceitos de interface nas minhas apps. Com relativamente pouco esforço, consegues ativar muitos casos de utilização diferentes em que a mesma app dá mais poder ao utilizador.




Conclusão
A Apple não se apressou com o suporte de várias janelas no iPad, mas levou o seu tempo a desenhá-lo bem. Se adotares os novos conceitos, a tua app será mais poderosa para os utilizadores.
É sempre boa ideia dar tempo para perceber os conceitos de interface subjacentes antes de começares a programar. Faz as coisas bem (e com qualidade) em vez de depressa (e à toa)!