Resumen de la WWDC21: lo que todo developer debe saber

Como en ediciones anteriores, la WWDC21 ha dejado una amplia lista de sesiones donde Apple profundiza en diferentes temas del mundo del desarrollo, como las novedades de las nuevas SDKs, actualizaciones de lo que ya existe, mejoras de accesibilidad, etc. Estas sesiones proporcionan información de gran valor que nos permitirá evolucionar nuestras aplicaciones para que usen los últimos añadidos y, además, nos guiarán para que sepamos cómo hacerlo correctamente.

Desde luego no han sido pocas las novedades que nos hemos encontrado este año. A modo de resumen podemos destacar:

  • Xcode Cloud. La plataforma de integración y entrega continua de Apple integrada totalmente en Xcode.
  • Patrón async/await con Actors. En nuestra opinión, este ha sido el anuncio más importante de toda la conferencia. De la misma forma que el cambio de Objective-c a Swift fue algo increíble, este nuevo modelo de programación supondrá un antes y un después en el desarrollo de aplicaciones.
  • Mejoras de SwiftUI. Poco a poco vemos cómo sigue mejorando con cada versión, incluyendo nuevos componentes y modificadores que lo hacen cada vez más potente y completo.
  • Mejoras en UIKit. También tenemos mejoras para nuestro veterano UIKit. Nadie duda que el futuro del desarrollo pasa por SwiftUI, pero debemos recordar que este aún tiene carencias y, para suplirlas, seguimos teniendo que recurrir a UIKit, por lo que también tiene su ración de novedades para no quedarse (ni dejarnos) atrás.
  • Swift Package Manager. Ahora tenemos disponible los Package Collections, que nos ayudarán a agrupar librerías para una mejor gestión de las mismas.
  • DocC. Tan importante es el desarrollo como su correcta documentación, especialmente si nos dedicamos a desarrollar frameworks que después distribuimos a otros equipos. DocC nos ayudará a generar toda la documentación necesaria para nuestros frameworks, desde una documentación más “plana” a otras más interactivas.
  • Accesibilidad. Este año Apple ha invertido parte de su esfuerzo en poner a disposición de los desarrolladores y desarrolladoras las herramientas necesarias para que podamos adaptar nuestras aplicaciones con el objetivo que cualquier persona pueda usarlas, independientemente de sus capacidades y/o limitaciones. Desde luego los cambios que han llegado en SwiftUI hacen que sea mucho más fácil su integración.
  • Time Sensitive notifications. Ahora las notificaciones disponen de diferentes niveles de importancia, afectando a la forma en la que se muestran al usuario.
  • Group Activities framework. Debido a la pandemia, este año nuestro equipo (como tantos) ha estado forzado a estar separado. Este framework ayudará a que podamos seguir en contacto aun estando a distancia, pudiendo realizando tareas comunes de forma colaborativa.
  • Localización de textos y textos enriquecidos. Hay importantes mejoras a la hora de localizar textos para que nuestras aplicaciones puedan llegar a un mayor número de personas y también se ha incluido el nuevo AttributedString para incluir textos enriquecidos. Desde ahora será mucho más fácil.
  • ARKit 5 y Vision. El mundo de la realidad aumentada también incluye actualizaciones para elevar nuestras apps al siguiente nivel.
  • Screen Time API. Esta nueva API nos trae varios frameworks con los que podremos desarrollar nuevos tipos de aplicaciones de control parental y para mostrar información acerca del uso del dispositivo.
  • Otras novedades: Nuevo LocationButton, mejoras en Foundation, TextKit2, ver tráfico HTTP con Instruments, cambios en WKWebView, mejoras en los puntos de interrupcción en Xcode, etc.

Toda esta información la podéis encontrar en el listado de sesiones de la WWDC21, pero aquí te hemos preparado un resumen (como ya lo hicimos con la sesión inicial) con las más destacadas. Que sabemos que el tiempo es oro.

La entrada: Platforms State of the Union

Lo primero de todo es ponernos en contexto para que tengamos una visión general de todo lo que hay que ver.

Sesión recomendada

► Platforms State of the Union

Aquí veremos

  • Xcode Cloud
  • GroupActivity Framework
  • Patrón async/Task con actores
  • Swift Playground
  • Novedades en SwiftUI y UIKit
  • Notificaciones
  • Nuevas APIs Screen Time

Xcode Cloud

La presentación de esta plataforma de integración y entrega continua se veía venir desde que Apple compró en 2018 a BuddyBuild. Desde entonces han estado trabajando en lo que ahora conocemos como Xcode Cloud. Esta herramienta está totalmente integrada dentro del propio Xcode y nos ayudará a ser más productivos.

Sesiones recomendadas

► Explore Xcode Cloud workflows

► Meet Xcode Cloud

► Customize your advanced Xcode Cloud workflows

Aquí veremos

  • Cómo configurar Xcode Cloud y ver los resultados en nuestro entorno de trabajo.
  • Cómo se crean flujos de trabajo.
  • Qué tipo de personalizaciones permiten los flujos de trabajo.

Patrón async/await con Actors

Este nuevo patrón va a romper con la forma en la que programamos actualmente y, además, nos ayudará a realizar desarrollos más seguros gracias a su nuevo modelo de concurrencia. Desde luego es de lo más importante que se ha visto en la WWDC21.

En la presentación se indicó que solo estará soportado en la versión de iOS 15 en adelante, aunque están trabajando para que tenga retrocompatibilidad con versiones anteriores (crucemos los dedos).

Sesiones recomendadas

► Explore structured concurrency in Swift

► Meet async/await in Swift

► Discover concurrency in SwiftUI

► Meet AsyncSequence

► Use async/await with URLSession

► Swift concurrency: Update a sample app

► Bring Core Data concurrency to Swift and SwiftUI

► Swift concurrency: Behind the scenes

Aquí veremos

  • Cómo se usa el nuevo patrón asycn/await
  • Cómo migrar del uso de closures al uso de asycn/await
  • Cómo usar funciones async dentro de nuestros closures
  • Cómo usar closures dentro de nuestras funciones async (continuidad)
  • Cómo funciona el flujo del nuevo patrón en comparación con GCD

Mejoras de SwiftUI

Como era de esperar, SwiftUI ha continuado con su evolución dándonos nuevos modificadores y componentes. En las sesiones que te enlazamos se indican todas las novedades y presentan ejemplos prácticos de su uso.

Sesiones recomendadas

► What’s new in SwiftUI

► Demystify SwiftUI. Esta sesión es especialmente interesante ya que nos enseña cómo se comporta el sistema cuando declaramos las vistas con SwiftUI y la importancia de la identidad de las vistas.

► Craft search experiences in SwiftUI

► Add rich graphics to your SwiftUI app

► Meet the Location Button

Aquí veremos

  • Nuevos modificadores y componentes de SwiftUI: AsyncImage, refreshable, task, swipeActions, searchable, privacySensitive, previewInterfaceOrientation, confirmationDialog, keyboardShortcut, controlProminence, controlSize, @FocusState, submitLabel, onSubmit, textSelection, etc.
  • Ejemplos prácticos de su uso.
  • Nuevo LocationButton para solicitar permisos de localización al usuario sin necesidad de solicitar el permiso explícitamente.

Mejoras en UIKit

El hermano mayor de SwiftUI sigue recibiendo novedades, ya que no se puede quedar atrás debido a que aún hay componentes que no existen en el hermano menor. Por eso UIKit sigue estando en la cima del desarrollo y necesita seguir evolucionando.

Sesiones recomendadas

► Meet the UIKit button system ► What’s new in UIKit ► Customize and resize sheets in UIKit ► SF Symbols in UIKit and AppKit ► Make blazing fast lists and collection views ► Meet the Location Button Aquí veremos

  • Nuevos tipos de botones
  • Mejoras en las escenas
  • Atajos de teclados
  • Mejoras en la presentación de pantallas modales
  • Mejoras en el uso de SF Symbols
  • Mejoras de rendimiento en la creación de celdas
  • Nuevo LocationButton para solicitar permisos de localización al usuario sin necesidad de solicitar el permiso explícitamente.

Swift Package Manager

Este año Swift Package Manager nos a traído las colecciones que permiten agrupar múltiples dependencias bajo un mismo grupo para que sean más fáciles de localizar y gestionar por Xcode.

Sesión recomendada

► Discover and curate Swift Packages using Collections

Aquí veremos

  • Cómo crear una colección de dependencias.
  • Cómo usar una colección de dependencias en Xcode.

DocC

La documentación siempre es importante en los proyectos y más aún cuando se trata de una framework que vamos a distribuir a terceros. DocC nos permite crear toda la documentación necesaria dentro del mismo contexto del código, lo que permite facilitar las tareas de creación y mantenimiento.

Sesiones recomendadas

► Meet DocC documentation in Xcode

► Host and automate your DocC documentation

► Elevate your DocC documentation in Xcode

► Build interactive tutorials using DocC

Aquí veremos

  • Cómo documentar nuestro código.
  • Nuevos “Documentation Catalog” en Xcode.
  • Cómo crear una documentación enriquecida.
  • Cómo crear tutoriales “paso a paso”.
  • Cómo publicar la documentación en internet.

Accesibilidad

La accesibilidad de nuestras aplicaciones es muy importante para permitir que cualquier persona pueda usar nuestra app sin ningún impedimento independientemente de sus capacidades.

Sesiones recomendadas

► SwiftUI Accessibility: Beyond the basics

► Bring accessibility to charts in your app

► Create accessible experiences for watchOS

► Tailor the VoiceOver experience in your data-rich apps

Aquí veremos

  • Cómo personalizar nuestros componentes para que sean completamente accesibles.
  • Cómo se comporta el sistema operativo con respecto a la accesibilidad.

Time Sensitive notifications

De la mano de la nueva funcionalidad “Focus”, Apple permite ahora que las notificaciones tengan diferentes niveles de prioridad. De esta forma el sistema sabrá cómo las deberá presentar.

Sesión recomendada

► Send communication and Time Sensitive notifications

Aquí veremos

  • Nuevos parámetros en el payload de las notificaciones para indicar el nivel de interrupción.

Group Activities framework

Este nuevo framework abre la posibilidad a nuevos tipos de aplicaciones colaborativas o a añadir funciones colaborativas a las que ya existen. Para ello, el usuario deberá estar en una llamada de FaceTime. Cumpliendo este requisito ya podríamos empezar.

Sesiones recomendadas

► Meet Group Activities

► Coordinate media experiences with Group Activities

► Build custom experiences with Group Activities]

Aquí veremos

  • Cómo funciona el framework por detrás.
  • Qué necesitamos implementar para dar soporte a nuestras aplicaciones de audio y vídeo.
  • Cómo crear experiencias colaborativas personalizadas.

Localización de textos y textos enriquecidos

Los nuevos métodos de localización y el nuevo AttributedString facilitarán todo lo que implique mostrar textos a los usuarios. Además, se enseñará cómo se debe hacer la interpolación de strings, como integrar los “Plural Strings” y los nuevos “Inclusive Strings”

Sesiones recomendadas

► What’s new in Foundation

► Localize your SwiftUI app

► Streamline your localized strings

Aquí veremos

  • Cómo usar el nuevo AttributedString.
  • Cómo usar los nuevos métodos de localización.
  • Cómo usar los “Plural Strings” e “Inclusive Strings”.
  • Soporte para markdown en los textos.
  • Cómo crear ficheros de los localizables. automáticamente modificando la configuración en el Build Settings.

ARKit 5 y Vision

Como cada año, los frameworks de realidad aumentada siguen trayendo nuevas actualizaciones orientadas a las mejoras de rendimiento y de trackeo del entorno para una mejor detección y posicionamiento de los elementos.

Sesiones recomendadas

► Explore ARKit 5

► Detect people, faces, and poses using Vision

Aquí veremos

  • Novedades en la detección de caras y oclusión de personas.
  • Mejoras en el seguimiento.

Screen Time API

Esta nueva API es un conjunto de varios frameworks. Gracias a ellos se podrán desarrollar nuevas tipologías de aplicaciones, como control parental, que hasta ahora no tenían sentido ya que no disponían de datos y accesos a APIs.

Sesión recomendada

► Meet the Screen Time API

Aquí veremos

  • Uso de los distintos frameworks para realizar bloqueos u obtención de datos de uso.

Otras sesiones de interés

Fuera de las categorías anteriores, tenemos que hacer mención a algunas sesiones de especial interés que nos ayudarán en nuestro día a día del desarrollo.

► Write a DSL in Swift using result builders. Una sesión muy interesante con un ejemplo práctico de cómo crear tu propio DSL (domain-specific language). Os recomiendo verlo porque os ayudará a comprender cómo funciona SwiftUI y Swift en general.
► Accelerate networking with HTTP/3 and QUIC
► Reduce network delays for your app
► Explore advanced project configuration in Xcode. También podéis ampliar esta información visitando nuestro artículos sobre entornos de desarrollo.
► ARC in Swift: Basics and beyond
► Discover breakpoint improvements
► Detect and diagnose memory issues
► Analyze HTTP traffic in Instruments

Esperemos que esta guía te ayude a enfocarte en aquellas sesiones que consideres de interés. Por aquí esta WWDC21 nos ha gustado mucho, y desde ya ponemos en marcha el contador para la nueva edición y las manos en la obra para aplicar todo lo aprendido. Y a ti, ¿qué te ha parecido?

Rafael Fernández,
iOS Tech Lider