¡Este Steve Jobs es un bandido! Mira que decir que si quieres saltarte la App Store lo único que tienes que hacer es programar en HTML5. ¿A qué se refiere, a hacer una página web? No exactamente. Desde tiempo inmemorial —bueno, desde la versión 2.2.1 del sistema— Safari Mobile soporta una serie de etiquetas meta en la cabecera de un documento HTML para adaptar su contenido al dispositivo móvil. La más conocida es viewport
, que se suele utilizar para establecer el ancho del documento y, por ende, el nivel de zoom con el que lo representará Safari. Pero hay más tags de este tipo, y unidas a algunas de las utilidades menos conocidas de HTML5 podemos llegar a desarrollar una aplicación casi indistinguible de una nativa.
La palabra clave en este caso sería casi, porque como es evidente, hay algunos de los recursos del dispositivo que no podremos utilizar, como por ejemplo el acelerómetro, la agenda o la capacidad de hacer llamadas. No es por ser paranoico, pero desde el punto de vista de la seguridad, prefiero que esas APIs no estén expuestas a cualquier JavaScript que corra en mi iPhone. Sin embargo, y con un poco de creatividad, podemos crear aplicaciones que utilicen audio y vídeo, animaciones avanzadas, almacenamiento local, geolocalización e incluso bases de datos, que funcionen aún cuando el usuario no esté conectado a internet y se integren de forma transparente en la experiencia iPhone.
La mejor parte es que la inmensa mayoría del desarrollo se hace de acuerdo con los estándares, exactamente igual que cualquier otra aplicación HTML5. Los únicos elementos propietarios son unas cuantas etiquetas meta
al principio del documento:
<!DOCTYPE html>
<html manifest="miniApp.manifest">
<head>
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<meta name = "viewport" content = "width = device-width, height = device-height, initial-scale = 1, user-scalable = no">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="apple-touch-icon" href="helloworld_icon.png"/>
<link rel="apple-touch-startup-image" href="startup.png" />
<title>Mi Aplicación</title>
</head>
<body>
<h1>¡Hola, Mundo!</h1>
</body>
En este ejemplo utilizamos todas las etiquetas necesarias para que nuestra aplicación se comporte como una aplicación nativa: tendrá su propio icono, su pantalla de inicio, y podemos establecer el aspecto de la barra de estado. Incluso si queremos utilizar el look and feel nativo del iOS, Apple pone a nuestra disposición Dashcode, una aplicación que nació para el desarrollo de widgets del Dashboard pero que actualmente incluye soporte para desarrollo de aplicaciones para Safari y Safari Mobile.
Evidentemente, esto no es una panacea. Si queremos construir una app realmente nativa y con acceso a todas las funciones del teléfono, siempre tendremos que pasar el filtro de la App Store, aunque podremos desarrollarlas utilizando técnicas parecidas gracias a proyectos como NimbleKit o Titanium, que al tratarse de puentes entre HTML/JavaScript y Objective-C sí están permitidas por Apple. No obstante, para el desarrollo de pequeñas utilidades que no requieran el uso del acelerómetro o la agenda, este es probablemente el mejor camino a seguir.