El framework CarPlay de Apple permite a los desarrolladores de aplicaciones iOS integrar sus aplicaciones para que funcionen en la unidad principal de un vehículo (o sistema de infoentretenimiento), aprovechando la unidad principal como interfaz de usuario (UI) para sus aplicaciones.
Desde su lanzamiento en 2014, CarPlay ha crecido rápidamente en popularidad – hoy en día, se incluye en el 60% de los vehículos nuevos en los Estados Unidos. Por su diseño, CarPlay permite a los desarrolladores hacer un producto seguro para su uso en vehículos, lo que debería ayudar a frenar los incidentes causados por conductores distraídos, ya que toda la noción de «abstinencia» sobre el uso de aplicaciones mientras se conduce ha funcionado tan bien como lo ha hecho con la prevención de los embarazos en adolescentes.
Sin embargo, a pesar de su éxito, hay una escasez de información para ayudar a los desarrolladores de aplicaciones a aprender a desarrollar aplicaciones compatibles con CarPlay.
En este artículo, esperamos desmitificar lo que es CarPlay y ayudar a otros desarrolladores de aplicaciones a empezar a crear para CarPlay.
¿Qué tipo de aplicaciones se pueden crear para CarPlay?
Muchos desarrolladores de aplicaciones para el iPhone, en particular, podrían estar lamiendo sus chuletas ante las posibilidades de lo que pueden construir en CarPlay, pero, antes de que te entusiasmes demasiado, Apple restringe muy estrechamente los tipos de aplicaciones que se pueden habilitar para CarPlay a:
- Navegación (por ejemplo, Waze)
- Mensajería y VOIP (por ejemplo, WhatsApp)
- Reproductor de música/noticias/podcasts (por ejemplo, Spotify, Overcast)
- Aparcamiento (nuevo para iOS 14)
- Carga de vehículos eléctricos (nuevo para iOS 14)
- Pedidos rápidos de comida (nuevo para iOS 14)
Si tu aplicación no entra en ninguna de las categorías anteriores, me temo que tus sueños con CarPlay se quedarán en eso.
¿Cómo funciona CarPlay?
La mayoría de los coches actuales contienen una unidad principal, el «sistema de infoentretenimiento», que es el subsistema central que controla la reproducción de la radio, la realización de llamadas y la navegación por la ruta.
Además de esta unidad principal, los coches que están equipados con CarPlay tienen una unidad principal separada que vive al lado del sistema de infoentretenimiento incorporado en el coche y que es responsable de comunicarse con el dispositivo iOS conectado y utiliza esos datos para mostrar información al conductor y controlar el hardware del vehículo.
Por eso, cuando se inicia CarPlay en un vehículo, parece y se siente como si CarPlay se hiciera cargo de toda la experiencia de infoentretenimiento del vehículo, porque básicamente está haciendo eso (los vehículos más nuevos permiten que CarPlay controle ciertos componentes del sistema de infoentretenimiento, como la navegación, mientras que el sistema incorporado del vehículo se encarga de otros sistemas, como la reproducción de medios).
Para una explicación más profunda en la mecánica específica de cómo funciona el subsistema CarPlay junto a la unidad principal de un vehículo, sigue leyendo.
¿Cómo funcionan las aplicaciones habilitadas para CarPlay?
Lo primero que hay que entender sobre la creación de una aplicación para CarPlay es que no existe una aplicación CarPlay independiente, sino que la experiencia CarPlay es una extensión de una aplicación que se ejecuta en un dispositivo iOS.
Piensa en CarPlay como una interfaz de usuario adicional a una aplicación existente en el dispositivo, que puede aceptar entradas táctiles y mostrar los resultados al usuario.
Una vez que la unidad principal de CarPlay está activa, envía los eventos táctiles de las pantallas del vehículo al dispositivo iOS a través de USB y Bluetooth, donde la lógica de la aplicación que se ejecuta en el dispositivo los procesa y devuelve un resultado que luego se muestra en el coche por la unidad principal de CarPlay.
Para aquellos que crearon aplicaciones para el Apple Watch de primera generación, todo este enfoque puede sonar extrañamente familiar a esa experiencia, porque lo es: no hay código de la aplicación que se ejecuta dentro de la unidad principal del vehículo, se ejecuta dentro de la aplicación en el dispositivo, lo que significa que es capaz de acceder y compartir la misma memoria y otros recursos contenidos en el contenedor de ejecución de la aplicación principal de iOS.
¿Cuánto trabajo se necesita para añadir compatibilidad con CarPlay a una aplicación?
Si tienes una aplicación existente que entra en una de las categorías que hemos mencionado antes, crear una experiencia CarPlay para la aplicación no suele suponer mucho trabajo, debido a los estrictos raíles que Apple establece para la interfaz de usuario que una aplicación habilitada para CarPlay puede exponer al usuario.
Construir para CarPlay no significa que se pueda construir cualquier tipo de interfaz como se haría para una aplicación nativa de iOS.
CarPlay proporciona un conjunto de plantillas y controles de interfaz de usuario fijos a los que todas las aplicaciones habilitadas para CarPlay deben ajustarse, y dentro de ese conjunto ya mínimo, Apple restringe aún más las plantillas que se pueden utilizar en función del tipo de aplicación que se está construyendo.
Por lo tanto, el hecho de que haya una paleta muy limitada de controles de interfaz de usuario disponibles para mostrar y que los componentes de CarPlay puedan aprovechar la misma infraestructura subyacente de la aplicación existente hace que añadir la funcionalidad de CarPlay sea un ejercicio relativamente sencillo.
¿Cuánta personalización de la interfaz de usuario está disponible para una aplicación con CarPlay?
Sinceramente, no mucha.
En el caso de una aplicación de podcast o de reproductor de música, Apple controla de forma muy estricta la interfaz de usuario que se muestra en la pantalla del vehículo y no permite casi ninguna personalización de la plantilla proporcionada.
Para un reproductor de música, CarPlay restringe las aplicaciones a un flujo de navegación basado en pestañas, en el que cada pestaña está poblada por una simple lista de pistas, y una pantalla «Now Playing» enlatada en la que el único control que tiene la aplicación es personalizar las funciones de cada botón que muestra CarPlay.
Eso es todo.
Una aplicación de reproducción de música solo puede tener esas pantallas, construidas exactamente con el mismo diseño, ni más ni menos.
La falta de flexibilidad de los reproductores de música en CarPlay hace que sea muy fácil adoptar una aplicación de reproducción de música de iOS para CarPlay, que se reduce a devolver la lista de canciones correcta en función de la pestaña seleccionada por el usuario y a gestionar las entradas táctiles de la pantalla «Now Playing».
Por otro lado, CarPlay ofrece mucha más libertad a una aplicación de navegación para personalizar la interfaz de usuario y la forma en que se muestra la información al usuario, lo que requeriría mucho más trabajo para desarrollar una experiencia CarPlay que un reproductor de música.
La mayor flexibilidad se ofrece a los fabricantes de vehículos, que tienen libertad para personalizar la interfaz de usuario de CarPlay como deseen.
Pasos para empezar a desarrollar para CarPlay
Para empezar a crear una experiencia de CarPlay para una aplicación de iOS, se deben seguir los siguientes pasos de alto nivel:
– Comprueba que tu aplicación entra en una de las categorías aceptables para habilitar una experiencia CarPlay. (véase más arriba)
– Obten una autorización de CarPlay de Apple enviando una solicitud, que puedes encontrar aquí.
– Tras la aprobación, configura tu entorno de desarrollo local para soportar la depuración de una extensión de CarPlay. El simulador integrado de iOS ofrece la posibilidad de proyectar una aplicación en una segunda pantalla que simule la interfaz de CarPlay. (Nota, si estás desarrollando una aplicación de navegación para CarPlay, asegúrate de habilitar el siguiente comando en el Terminal antes de iniciar el Simulador de iOS: defaults write com.apple.iphonesimulator CarPlayExtraOptions -bool YES)
– Comienza a desarrollar tu soporte de CarPlay dentro de una aplicación existente, que generalmente consistirá en:
– Añadir el CarPlay.framework a tu proyecto XCode.
– Implementar un delegado de aplicación específico para CarPlay que implemente la interfaz CPApplicationDelegate y establecer el controlador de vista raíz adecuado.
– A partir de aquí, dependiendo del tipo de aplicación que estés construyendo, implementa las plantillas apropiadas específicas para el tipo de aplicación.
– Aunque las pruebas en el simulador son un buen punto de partida, te ahorrarás muchos disgustos y frustraciones si compras una unidad principal real habilitada para CarPlay con la que hacer pruebas de hardware. Puedes encontrarlas a buen precio en Amazon, nosotros utilizamos esta que soportaba tanto CarPlay como Android Auto y solo costaba 75 euros.
– Con una aplicación habilitada para CarPlay hay ciertos casos de prueba en los que deberías pensar y tratar de simular con una unidad principal de prueba, tales como:
– ¿Cómo se comporta la experiencia de CarPlay cuando un usuario recibe una llamada o si se inicia la cámara de seguridad y se suspende el proceso de CarPlay?
– ¿Cómo manejar la transición fluida de la reproducción de música u otros contenidos del dispositivo cuando estás conectado a una unidad principal de CarPlay?
– ¿Cómo publicar y mostrar notificaciones visuales en la pantalla cuando el usuario puede estar utilizando otra aplicación de CarPlay?
– ¿Cómo mostrar correctamente las ruedas de progreso y los indicadores de estado en la pantalla de CarPlay cuando la aplicación puede estar obteniendo algo de la web?
En conclusión
Crear una aplicación habilitada para CarPlay es un ejercicio relativamente sencillo para un desarrollador de iOS con experiencia.
Las partes más difíciles de todo el proceso son el papeleo y las aprobaciones necesarias para pasar por el proceso de aprobación de Apple, seguido de las pruebas en el dispositivo para garantizar que la aplicación se comporta adecuadamente en una unidad principal de hardware real.
Nuestro equipo aprendió mucho no solo sobre el funcionamiento de CarPlay, sino también sobre el comportamiento de los sistemas de infoentretenimiento de los vehículos modernos.
Si quieres crear una experiencia con CarPlay para tu aplicación, puedes ponerte en contacto con nosotros para ver cómo podemos ayudarte a dar vida a tu aplicación dentro de un vehículo.