Dynamic Island es un área interactiva en la parte superior del iPhone 14 Pro y todos los iPhone 15/16 que combina notificaciones, actividades en segundo plano e indicadores del sistema en una única zona dinámica. A diferencia del tradicional notch, Dynamic Island cambia de forma y tamaño según el contexto actual. Según Apple (WWDC 2024), los usuarios interactúan con Dynamic Island un promedio de 12 veces al día — mediante toques, pulsaciones largas y Live Activities con ActivityKit. Obtén más información sobre las animaciones en iOS en el artículo sobre Corner Radius.
Puntos clave
Dynamic Island es un área interactiva basada en la solución de software y hardware de Apple, presentada en septiembre de 2022 junto con el iPhone 14 Pro. Físicamente, es un recorte con forma de píldora rodeado de píxeles OLED que cambian dinámicamente de color y forma. Apple utiliza una combinación de un recorte de hardware para la cámara y Face ID con renderizado de software de las áreas negras a su alrededor, creando la ilusión de una isla "viva".
El objetivo principal de Dynamic Island es eliminar la brecha entre las notificaciones del sistema y el contenido activo. En lugar de que las notificaciones aparezcan en el centro de la pantalla (como en Android) o como banners en la parte superior (como en iOS más antiguo), Dynamic Island las integra directamente en la zona de hardware. Esto reduce la distracción y crea una sensación de espacio unificado.
Según datos de Apple (Estadísticas de adopción de iOS 17, 2024), Dynamic Island está disponible en el 38% de los iPhone activos. A partir del iPhone 15 (2023), todos los modelos de la gama recibieron Dynamic Island, incluidos los modelos base. En iOS 18, Apple amplió la API de Live Activities, añadiendo soporte para temporizadores de cuenta regresiva y resultados deportivos directamente en Dynamic Island.
Dynamic Island está disponible en iPhone 14 Pro, iPhone 14 Pro Max, iPhone 15, iPhone 15 Plus, iPhone 15 Pro, iPhone 15 Pro Max, iPhone 16, iPhone 16 Plus, iPhone 16 Pro, iPhone 16 Pro Max. Dynamic Island no está disponible en iPad. El desarrollo para Dynamic Island requiere Xcode 14.1+ y iOS 16.1+.
Dynamic Island admite tres estados de visualización: compacto, mínimo y expandido. Las transiciones entre estados se animan mediante animaciones de UIKit y Core Animation. El propio sistema gestiona la prioridad de las actividades: si varias apps intentan mostrar contenido simultáneamente, iOS utiliza una cola basada en la hora de inicio de la última actividad.
| Estado | Tamaño | Contenido | Ejemplo |
|---|---|---|---|
| Compacto | 49×18 pt | Icono de app + icono del sistema | Temporizador, música, llamada |
| Mínimo | Hasta 66×18 pt | Icono + texto corto | Indicaciones de navegación, pasos |
| Expandido | Hasta 364×160 pt | Widget completo con contenido | Resultado deportivo, estado del taxi |
Estado compacto es la vista estándar de Dynamic Island cuando hay una tarea en segundo plano activa. Aparece como una píldora redondeada con el icono de la app a la izquierda y un icono del sistema a la derecha. Por defecto, todas las Live Activities comienzan en estado compacto.
Estado mínimo se produce cuando hay dos o más tareas activas simultáneamente. Dynamic Island se "divide" en dos elementos separados a la izquierda y derecha de la cámara. El estado mínimo permite mostrar dos fuentes de información independientes, como el tiempo hasta la llegada del taxi y la pista actual.
Estado expandido se activa con una pulsación larga en Dynamic Island. En este modo, se muestra un widget completo con contenido personalizable: títulos, descripciones, barras de progreso, botones. El estado expandido admite desplazamiento y elementos interactivos.
ActivityKit es un framework de Swift introducido en iOS 16.1 que permite a las apps publicar Live Activities en Dynamic Island y la pantalla de bloqueo. ActivityKit utiliza una arquitectura basada en ActivityView y ActivityAttributes: el primero define el tipo de contenido, el segundo los datos modificables. El framework funciona junto con WidgetKit, pero a diferencia de los widgets, las Live Activities pueden actualizarse en tiempo real sin abrir la app.
import ActivityKit
import SwiftUI
// Definir atributos de actividad
struct DeliveryAttributes: ActivityAttributes {
public struct ContentState: Codable, Hashable {
var driverName: String
var distanceToArrival: Double
var estimatedMinutes: Int
}
var orderNumber: String
}
// Iniciar Live Activity
func startDeliveryActivity() {
let initialState = DeliveryAttributes.ContentState(
driverName: "Alejandro",
distanceToArrival: 3.5,
estimatedMinutes: 12
)
let attributes = DeliveryAttributes(orderNumber: "ORD-2024-8912")
let activity = try? Activity.request(
attributes: attributes,
contentState: initialState,
pushType: .token
)
}
Live Activities se actualizan a través de ActivityView, que renderiza contenido SwiftUI para Dynamic Island. El propio sistema determina qué plantilla usar (compacta, mínima o expandida) según el tamaño de Dynamic Island y la cantidad de actividades. Para actualizar el contenido, llama a activity.update(using: contentState). Para finalizar — activity.end(dismissalPolicy: .immediate).
ActivityKit admite actualizaciones push a través de APNs (Apple Push Notification Service). Al iniciar una Live Activity, puedes solicitar un pushToken y enviar actualizaciones desde el servidor sin necesidad de ejecutar la app en el dispositivo. Las actualizaciones push funcionan mediante activity.pushToken y Activity.pushToStartToken para el inicio remoto de Live Activities.
// Actualizar Live Activity vía Push
func updateActivity(activity: Activity<DeliveryAttributes>) {
let updatedState = DeliveryAttributes.ContentState(
driverName: "Alejandro",
distanceToArrival: 1.2,
estimatedMinutes: 4
)
let alertConfiguration = AlertConfiguration(
title: "Mensajero cerca",
body: "Alejandro llegará en 4 minutos",
sound: .default
)
await activity.update(
using: updatedState,
alertConfiguration: alertConfiguration
)
}
AlertConfiguration es un parámetro opcional que muestra una notificación sobre Dynamic Island para actualizaciones importantes (por ejemplo, "El mensajero ha llegado"). Sin AlertConfiguration, el contenido se actualiza silenciosamente, lo que es adecuado para barras de progreso y temporizadores.
Notch es el recorte de hardware del iPhone X–13 que contiene la cámara frontal, el sensor Face ID y el altavoz. El notch es estático: su tamaño y forma no cambian, y las notificaciones se muestran debajo como banners estándar. Dynamic Island, en cambio, utiliza los píxeles alrededor del recorte para mostrar contenido, haciendo que el elemento de hardware forme parte de la interfaz.
| Criterio | Dynamic Island | Notch |
|---|---|---|
| Interactividad | Admite toques, pulsaciones largas, deslizamientos | No es interactivo |
| Adaptación del contenido | Cambia de forma según el contexto | Estático, contenido debajo del notch |
| Live Activities | Soporte integrado mediante ActivityKit | No — solo notificaciones estándar |
| Multitarea | Dos actividades simultáneas (izquierda y derecha) | Solo una actividad |
| Disponibilidad | iOS 16.1+, iPhone 14 Pro y posteriores | iOS 11+, iPhone X–13 |
Según las Apple Human Interface Guidelines (2025), Dynamic Island no debe utilizarse para publicidad ni para mostrar contenido estático de forma permanente. Las Live Activities están destinadas únicamente a tareas en segundo plano con un ciclo de vida claro: temporizadores, entregas, deportes, música, navegación. La violación de estas normas conlleva el rechazo de la aplicación en la revisión de App Store.
Dynamic Island tiene un ciclo de vida estricto: una actividad comienza con una solicitud mediante Activity.request(), pasa por estados activa/pausada/actualizada y finaliza con una llamada a activity.end(). El sistema puede forzar la finalización de una actividad cuando hay poca memoria (por ejemplo, al iniciar la cámara). En este caso, la app recibe una notificación a través de ActivityActivityState.finished.
Los gestos de Dynamic Island se manejan mediante el contenido SwiftUI dentro de ActivityView. Gestos estándar: toque en el estado compacto abre la app, pulsación larga expande el estado expandido, deslizamiento hacia abajo cierra el estado expandido. Los gestos personalizados se añaden mediante modificadores de SwiftUI (onTapGesture, onLongPressGesture) dentro de la vista de actividad.
Cuando el sistema finaliza una Live Activity (o el usuario la elimina deslizando), la app debe manejar el estado finished para liberar recursos. Se recomienda suscribirse a Activity.activityStateUpdates y eliminar las referencias locales a la actividad después de la finalización.
import ActivityKit
func observeActivityState(activity: Activity<DeliveryAttributes>) {
Task {
for await state in activity.activityStateUpdates {
switch state {
case .active:
print("Actividad activa en Dynamic Island")
case .dismissed:
print("Actividad descartada por el usuario")
await activity.end(dismissalPolicy: .immediate)
case .finished:
print("Actividad finalizada por el sistema")
cleanupResources()
@unknown default:
break
}
}
}
}
Recomendación de Apple (WWDC 2024, Sesión 10146): no uses Dynamic Island para mostrar estados que no requieran atención del usuario. Cada Live Activity debe tener un desencadenante claro de inicio y finalización. Para actualizaciones en segundo plano sin interfaz de usuario, usa Background Tasks en lugar de Live Activities.
Preguntas frecuentes
Dynamic Island está disponible en iPhone 14 Pro, 14 Pro Max y todos los modelos iPhone 15 y iPhone 16 (incluidas las versiones base). El desarrollo requiere iOS 16.1+ y Xcode 14.1. En modelos anteriores (iPhone X–13) se utiliza un notch estático que no admite Live Activities.
Dynamic Island integra la notificación en la zona de hardware de la pantalla sin cubrir el contenido. Una notificación normal aparece como un banner en la parte superior y desaparece al cabo de unos segundos. Las Live Activities en Dynamic Island pueden permanecer activas durante horas y actualizarse en tiempo real (estado de entrega, temporizador, música).
Usa actualizaciones push a través de APNs. Al iniciar una Live Activity, llama a activity.pushToken y envía el token a tu servidor. El servidor envía una solicitud de actualización a través de APNs con el nuevo ContentState. Una alternativa son las actualizaciones locales mediante activity.update(using:) desde la propia app.
iOS divide automáticamente Dynamic Island en dos segmentos cuando hay dos Live Activities activas. Cada actividad se muestra en estado mínimo a la izquierda y derecha de la cámara. Una pulsación larga en uno de los segmentos abre el estado expandido solo de esa app.
Verifica: (1) la app tiene NSSupportsLiveActivities = YES en Info.plist, (2) ActivityAttributes y ContentState implementan Codable y Hashable, (3) la versión de iOS es 16.1+, (4) el dispositivo es compatible con Dynamic Island. Para el simulador, usa iPhone 14 Pro o posterior en Xcode.
Resumen
Desarrollaremos una aplicación móvil llave en mano
IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.