WWDC 2024

1. Unlock the power of places with MapKit
2. Novedades en Swift
3. Meet Swift Testing
4. What’s new in Wallet and Apple Pay
5. Create Custom Visual Effects with SwiftUi
6. Swift Charts: Vectorized and function plots
7. What’s new in App Store Connect
8. Catch up on accessibility in SwiftUI
9. Meet the Translation API
10. Move to Swift 6
11. Extend your app’s controls across the system
12. Analyze heap memory

Este año la Apple Worldwide Developer Conference ha publicado numerosas novedades y desde nuestro equipo de iOS se han analizado las más interesantes para nuestros proyectos y desarrollos.

Unlock the power of places with MapKit

Apple ha presentado una nueva forma de referenciar sitios en los mapas empleando un Place ID, referenciable desde un objeto MKMapItem usando la propiedad “identifier”.

Para encontrar estos Place ID, Apple ha liberado una herramienta web llamada Place ID Lookup, a través de la cual, podremos extraer el ID de un lugar y usarlo en las apps.

Estos IDs permiten referenciar lugares, negocios, sitios de interés, de forma única e invariable. Estos IDs son persistentes y, acceder a ellos, permite tener siempre la información más actualizada del sitio.

Para ver el detalle del sitio, tenemos 3 formas de presentación: la completa, la compacta y el enlace.

También han mejorado la API de mapas para facilitar encontrar lugares empleando filtros de búsqueda, prioridad de la región, y paginación.

Estas características mencionadas anteriormente están disponibles tanto en UIKit, como en SwiftUI y JavaScript, permitiendo esto último trasladar estas mejoras a la Web.

Video oficial: https://developer.apple.com/videos/play/wwdc2024/10097/

Novedades en Swift

El lenguaje de programación Swift cumple 10 años y a lo largo de este tiempo se ha construido todo un ecosistema a su alrededor que incluye, además del propio lenguaje, herramientas, paquetes e incluso la comunidad de desarrolladores. La comunidad ha ido creciendo y se ha estructurado en grupos de trabajo. Además, se están creando grupos nuevos como el grupo de ecosistema o el de desarrollo embebido. Todos ellos se pueden encontrar en https://www.swift.org/community/.

Swift se continúa expandiendo entre otras plataformas como Windows y Linux (este año se incluyen Fedora y Debian).

Por otro lado, para los entornos de desarrollo distintos a Xcode se ha desarrollado SourceKit LSP, una implementación de lenguaje de servidor que permite a IDEs y editores integrar soporte a Swift.

Entre las novedades de las librerías clave de swift encontramos Foundation, que se ha reescrito a swift, con mayor calidad y rendimiento, además de incluir nuevas funcionalidades. Swift Testing se postula como la solución por defecto para testing. Además, se ha mejorado la compilación de código en Xcode a través de la compilación en paralelo de módulos separados.

El repositorio de Swift se ha movido a https://github.com/swiftlang/ junto con Swift Compiler, Foundation y otros paquetes del ecosistema.

Por último, se han realizado actualizaciones en el lenguaje de Swift como, por ejemplo: tipos no copiables, swift embebido, interoperabilidad con C++, throws tipados, seguridad frente a data race y la sincronización de bajo nivel de primitivos.

Video oficial: https://developer.apple.com/videos/play/wwdc2024/10136/

Meet Swift Testing

Otra de las novedades más destacadas de este año presentada es Swift Testing. Una nueva librería open source para testar nuestro código usando Swift que además es compatible con las principales plataformas, incluidas Linux y Windows.

Incluye potentes funciones para describir y organizar los test, proporciona detalles procesables cuando alguno de los test falla y se adapta muy bien a proyectos con gran base de código. Al haber sido diseñada para el lenguaje Swift, hace uso de características modernas tales como la concurrencia y las macros.

Video oficial: https://developer.apple.com/videos/play/wwdc2024/10179/

What’s new in Wallet and Apple Pay

Dentro de Wallet y Apple Pay, se han introducido mejoras en lo que se refiere al tema de pagos y ticketing.

Relacionado con los pagos, la principal novedad es la posibilidad de realizar pagos con Apple Pay en navegadores distintos a Safari. Para ello han actualizado el SDK de Apple Pay para javascript, añadiendo un nuevo método canMakePayments() para saber el estado del dispositivo a la hora de realizar pagos con Apple Pay. Este nuevo método devuelve uno de cuatro estados posibles, estos son:

  • paymentCredentialsAvailable, el cual indica que el dispositivo soporta Apple Pay y tiene tarjetas activas. En este caso se debe mostrar el botón Apple Pay como primera opción
  • paymentCredentialsUnavailable, el cual indica que el dispositivo soporta Apple Pay pero no tiene tarjetas activas para su uso. En este caso no se debe mostrar el botón de Apple Pay
  • paymentCredentialsStatusUnknown, el cual indica que soporta Apple Pay pero no se puede obtener los datos de la tarjeta.
  • applePayUnsupported, el cual indica que no soporta Apple Pay, en este caso no se debe mostrar el botón.

Otra novedad que destacar sobre pagos es que ahora se permiten devoluciones en entornos distintos a Safari o dispositivos Apple. Estas devoluciones pueden provenir de una cuenta bancaria o un otro tipo de cuenta con un valor almacenado. Los requerimientos son muy parecidos a los actuales de PaymentRequest.

Relacionado con el ticketing, la principal novedad es el rediseño de los tickets de evento. Se ha añadido un nuevo formato, con una imagen central del evento, nuevos títulos y formatos horarios, y un footer con información relacionada con la entrada al evento (asientos, puerta de entrada, fila, etc). Además, se ha mejorado la integración de otras apps como maps o el tiempo, para dar más información del evento. También cabe destacar que se ha añadido un nuevo módulo dentro del billete llamado Guía de evento, el cual nos lleva a una segunda pantalla con más información relacionada, como puede ser enlaces que te llevan a la compra de merchandising, compra de comida, la página web del evento, etc. Esta pantalla también muestra información relacionada con el tiempo, un mapa del recinto donde se celebra, horarios de apertura, e incluso si se trata de un evento musical, Apple nos da la posibilidad de recomendar música relacionada dentro de este módulo. Toda esta nueva información y formato, se configura a través del pass.json, con las etiquetas relacionadas a los módulos. Finalmente destacar que otra novedad relacionada con el ticket es que ahora se mostrará un live activity en la pantalla de bloqueo cuando la fecha del evento sea cercana, mostrando la información más relevante de este.

Vídeo oficial: https://developer.apple.com/videos/play/wwdc2024/10108/

Create Custom Visual Effects with SwiftUi

También nos encontramos con un tutorial de cómo crear efectos visuales custom para mejorar nuestras aplicaciones.

Explica cómo crear:

  • Scroll effects: rotation fx, Parallax fx, Hue rotation.
  • Color effects: Mesh Gradients, introducidos en iOS 18.
  • Custom transitions: Transiciones creando un struct del tipo Transition, TextRenderer.

Todos estos efectos visuales customizados nos ayudan a mejorar la personalidad de nuestras aplicaciones y su experiencia de usuario.

Video oficial: https://developer.apple.com/videos/play/wwdc2024/10151/

Swift Charts: Vectorized and function plots

En esta nueva versión de iOS han ampliado las funcionalidades de Swift Charts que ya se introdujeron en iOS 16 añadiendo 3 nuevos tipos de representaciones gráficas.

  • Function plots: Muestran la representación gráfica en un plano de una ecuación matemática o sistema de ecuaciones. Hay dos tipos:
    • LinePlot: Dibuja la línea de la ecuación o sistema.
    • AreaPlot: Dibuja el área entre dos ecuaciones
  • Vectorized plots: Representa en el plano un conjunto de coordenad

Todas estas funciones son parametrizables, personalizables y pueden combinarse entre sí

Video oficial: https://developer.apple.com/videos/play/wwdc2024/10155/

What’s new in App Store Connect

También se han introducido mejoras, en torno a las publicaciones y pruebas de las apps:

  1. Nuevas formas de destacar aplicaciones:
  • Nominaciones para destacarse: Los desarrolladores pueden enviar planes futuros de contenido y mejoras de sus aplicaciones a través de App Store Connect para ser considerados por el equipo editorial de Apple para destacarse en el App Store. Este proceso incluye proporcionar detalles sobre las nuevas características, su fecha de lanzamiento prevista y cualquier información adicional relevante.
  1. Mejoras en TestFlight:
  • Experiencia de invitación actualizada: Las invitaciones para probar aplicaciones beta ahora incluyen detalles clave, como el nombre y el ícono de la aplicación, capturas de pantalla y descripciones detalladas, para atraer a los testers.
  • Criterios para enlaces públicos: Los desarrolladores pueden establecer criterios específicos (como versiones del sistema operativo y tipos de dispositivos) para los testers que usan enlaces públicos, asegurando que las pruebas sean relevantes y efectivas.
  • Métricas de inscripción: App Store Connect ahora muestra estadísticas detalladas sobre cómo los enlaces públicos están funcionando, permitiendo a los desarrolladores ajustar sus estrategias de prueba.
  1. Nuevas funciones para llegar a los clientes:
  • Deep Links para páginas de productos personalizadas: Ahora es posible añadir enlaces profundos a páginas de productos personalizadas, mejorando la experiencia del usuario al redirigirlo directamente a una sección específica de la aplicación desde una campaña de marketing o anuncio.
  • Promocionar tu app: La nueva función en la app de App Store Connect permite generar y compartir fácilmente activos de marketing para eventos importantes, como lanzamientos o actualizaciones, directamente en redes sociales desde un iPhone o iPad.
  1. Otras mejoras en el ecosistema de desarrolladores:
  • Reducción de capturas de pantalla requeridas: Ahora solo se necesita un conjunto de capturas de pantalla para iPhone y otro para iPad.
  • Soporte API para el Programa de Desarrolladores Empresariales: Acceso a APIs para gestión de usuarios y provisiones.
  • Descarga de informes de análisis de la app: Se pueden exportar hasta 50 nuevos informes sobre el compromiso en el App Store, descargas, ventas y uso de la aplicación a través de la API de App Store Connect.

Estas nuevas características y mejoras están diseñadas para facilitar el proceso de prueba y promoción de las aplicaciones, ayudando a los desarrolladores a obtener más visibilidad y mejorar la experiencia del usuario en el App Store.

Video oficial: https://developer.apple.com/videos/play/wwdc2024/10063/

Catch up on accessibility in SwiftUI

Contamos además con nuevas herramientas y APIs que permiten refinar la experiencia de accesibilidad en las apps desarrolladas con SwiftUI. Una de las novedades más destacadas es la mejora en la creación de elementos de accesibilidad. Por ejemplo, el modificador. accessibilityElement(children: .combine) permite combinar múltiples elementos en uno solo, simplificando la navegación para usuarios de VoiceOver.

Se han añadido nuevos modificadores de accesibilidad que ofrecen mayor flexibilidad y control. El modificador. accessibilityLabel(_:isEnabled:) permite aplicar etiquetas de forma condicional. Esto es útil para manejar cambios de estado en las vistas.

Para contenido que aparece en hover ahora es posible usar. accessibilityActions para hacer que estas acciones estén disponibles sin necesidad de activar el hover. Además, SwiftUI ahora permite extraer texto de vistas para usarlo como etiquetas de accesibilidad.

Apple también ha mejorado las interacciones complejas como el drag and drop en contextos de accesibilidad. Los desarrolladores pueden definir puntos específicos de drag and drop usando. accessibilityDropPoint(_:description:).

En cuanto a los widgets, se ha ampliado el soporte para hacerlos más interactivos y accesibles. Los desarrolladores pueden usar App Intents para crear acciones personalizadas de accesibilidad en widgets.

 Video oficial: https://developer.apple.com/videos/play/wwdc2024/10073/

Meet the Translation API

También hay avances sobre su API de traducción, la cual ya se está usando a día de hoy en la propia app de traducción de Apple, así como en cualquier otra aplicación del sistema (por ejemplo, la app de Mensajes) así como en la app de la cámara cuando detecta algún texto.

Se presentan los distintos tipos de traducción que maneja, por un lado la traducción simple (disponible desde iOS 17.4), con una sola línea de código Swift es capaz de hacer una traducción rápida y simple en cualquier plataforma Apple, como MacOS, iPadOS e iOS.

Por otro lado, la Traducción Flexible (disponible desde iOS 18), que permite ajustar el idioma fuente y destino, así como cambios en la configuración, etc.

Es más compleja de implementar, pero ofrece una experiencia de usuario mucho más rápida y fluida.

Todo ello se puede ver implementado sobre una app demo sobre senderismo en la que los usuarios comentan las caminatas en sus distintos idiomas y vemos todo el poder de esta API de traducción.

Para finalizar ofrecen una serie de consejos de implementación, así como buenas prácticas.

Video oficial: https://developer.apple.com/videos/play/wwdc2024/10117/

Move to Swift 6

Swift 6 que viene con un numerosas de actualizaciones, entre ellas, mejoras en cuanto a la concurrencia con el fin de acabar con los data races, que son situaciones en las que varios subprocesos del proceso principal acceden de manera simultánea a un dato en concreto.

Para ello se explica en el video que antes de cambiar a Swift 6 se han de realizar varios cambios, el primero de ellos consiste en actualizar cómo de estricto quieres que se haga la comprobación de la concurrencia que está implementada en el código. Es importante tenerlo en cuenta porque es la única de las novedades que viene activada de forma obligatoria en Swift 6, las demás se pueden activar de forma opcional.

Una vez actualizado esta variable en el build settings del proyecto, se han de acometer los warnings que salen relacionados con la concurrencia. Muchos de ellos se deben a que se utilizan variables que no están declaradas como main actors en hilos principales. Apple nos proporciona una serie de anotaciones para poder tener el mayor control posible sobre estas situaciones. Una vez se tenga esto solucionado se podrá ya cambiar a Swift 6.

Vídeo principal: https://developer.apple.com/videos/play/wwdc2024/10169/

Extend your app’s controls across the system

Otra de las novedades en los controles, es un nuevo tipo de widget en iOS 18.

Una nueva forma de ampliar la funcionalidad de tu aplicación a espacios del sistema, como el Centro de control, la pantalla de bloqueo y el botón de acción, y se crean con WidgetKit (ya disponible desde iOS 14).

Se crean de una manera similar a un widget. Hay dos tipos:

Botones: realizan acciones directas.

Switch: cambian el estado de un booleano.

Los controles son acciones que toman la forma visual del espacio del sistema en el que se encuentran utilizando la información proporcionada por la aplicación: un símbolo, un título, un tono de color y contenido adicional al sistema.

En el centro de control, se puede mostrar en cualquiera de los tres tamaños diferentes, por tanto, el título y el contenido adicional no siempre serán visibles.

Hay tres tipos de eventos que hacen que el sistema vuelva a cargar el control: cuando se realiza la acción del control, cuando la aplicación solicita una recarga del control y cuando una notificación push invalida el control.

De forma asíncrona usando un ValueProvider y la API de notificaciones push, puedo ver la actualización del estado del control desde distintos dispositivos.

Video oficial: https://developer.apple.com/videos/play/wwdc2024/10157/

Analyze heap memory

Las aplicaciones utilizan directa o indirectamente la memoria dinámica, y en esta última presentación nos enseñan cómo podemos controlar y optimizar el uso de la memoria.

Dentro de las herramientas de Xcode se presentan aquellas que nos pueden ayudar a entender y solucionar problemas que podemos tener si gestionamos mal la memoria: Instruments. Podemos utilizarlo para leer y entender los datos, las estadísticas, medir el heap y buscar patrones de crecimiento de la memoria. Es incluso posible guardar la traza generada para compartirla con el equipo de desarrollo y analizarla.

Es importante controlar los picos de memoria porque provocan presión sobre la misma y hacen que el sistema reaccione. De hecho, a largo plazo provoca fragmentaciones y agujeros en regiones de memoria heap. En muchas ocasiones se provocan por referencias cíclicas a variables. Con estas herramientas son más sencillos de detectar y solucionar.

Entre las técnicas y mejores prácticas aconsejadas para diagnosticar el crecimiento transitorio, el crecimiento persistente y las fugas en su aplicación ponen énfasis en:

  • no saltarse ARC
  • habilitar whole-module-optimization
  • los structs más utilizados deben tener campos simples.

Por último, es recomendable utilizar las herramientas de Xcode Memory Graph Debugger y MallocStackLogging una vez que se han detectado incidencias en la memoria heap, para averiguar más sobre su origen y sus causas.

Video oficial: https://developer.apple.com/videos/play/wwdc2024/10173/

Anterior

Angular 18 Novedades y Mejoras: Todo lo que Necesitas Saber

Siguiente

Cómo crear tu primer proyecto KMP para Android e iOS.

Talento O2O

¿Te apetece formar parte de nuestro equipo?

Mira las oportunidades