Apple publica seis APIs exclusivas del iPhone Duo: segunda ventana solo en la pantalla interna
No es un app dual al uso: UIWindowSceneActivation permite al mismo App abrir un segundo panel, siempre en la pantalla interior y solo si el desarrollador lo implementa.

Apple ha detallado al menos seis interfaces de programación exclusivas del iPhone Duo, y la que más ha dado que hablar es UIWindowSceneActivation, la que permite a una aplicación pedir una segunda ventana. El nuevo panel solo puede abrirse en la pantalla interior, nunca en la exterior, y según la compañía es la primera vez que un iPhone soporta ventanas múltiples de forma nativa.
El matiz importa: se ha contado como app dual y no lo es.
Misma app, dos ventanas
El app dual clásico, el que ofrecen Android y varios fabricantes chinos desde hace años, consiste en dos contenedores independientes: dos instalaciones, dos sesiones, dos cuentas. Aquí no. Es la misma aplicación, con el mismo paquete instalado, la misma sesión de cuenta y los mismos datos locales, mostrada en dos ventanas a la vez. Para que aparezca la segunda, el desarrollador tiene que implementarlo; nada ocurre por defecto.
Qué se hace con esas dos ventanas lo decide quien firma la app. Los casos que encajan son los de siempre: la bandeja de entrada en un panel y el correo abierto en el otro, carpetas a un lado y previsualización o edición del archivo al otro, o dos contenidos distintos del mismo servicio. Hoy iOS no duplica aplicaciones de forma nativa, así que no se pueden instalar dos instancias independientes de la misma app con sus respectivos inicios de sesión.
El resto de interfaces
Para la maquetación, Apple ofrece ArrangementView en SwiftUI y UIArrangementViewController en UIKit: contenedores que reparten el contenido a ambos lados del pliegue, en paralelo o superpuesto, con arrangementViewStyle(.split) y (.overlay), opción de limitar el eje mediante .axes(.horizontal) y overlayArrangementZIndex para resolver qué capa queda delante. A su lado, ReservedRegion (SwiftUI) y UIViewReservedRegion (UIKit) detectan el hueco que ocupan la bisagra y la cámara FaceTime bajo la pantalla para que el contenido no se meta debajo del hardware; se consultan con reservedRegions(kind:) y admiten includeInactive.
El estado de la bisagra lo entregan onHingeChange (SwiftUI) y UIHingeInteraction (UIKit), con el ángulo continuo desde cerrada hasta totalmente abierta. Apple aconseja usarlos para interacción en tiempo real, y el ejemplo que pone es variar el tono según cuánto se pliega el teléfono, no para decidir la disposición de la interfaz.
En cámaras hay dos piezas. CameraCaptureAccessory pinta controles en la pantalla exterior mientras la vista previa ocupa la interior a pantalla completa, y se configura con .sceneAccessory(). Por el lado de AVFoundation, la cámara frontal exterior y la interior bajo el panel se exponen como una sola entrada con position .front, y el sistema conmuta de una a otra al abrir o cerrar el dispositivo. AVCaptureDeviceDirectionCoordinator añade la dirección, es decir, cuál de las dos está mirando al usuario, para que la aplicación no tenga que deducir por su cuenta el estado del pliegue.
Para quien desarrolla para iOS, esto es superficie de API nueva y una decisión que tomar: nada de lo descrito funciona si la app no lo implementa. La pregunta interesante no es cuántas ventanas caben, sino cuántas aplicaciones van a molestarse en soportar el formato plegable antes de que haya suficientes iPhone Duo en circulación.

