guia a la galaxia de aplicaciones móviles

Anuncio
Don’t Panic
nte actuali
me
a

is
n
Edició
aú
do
za
complet
a
GUIA A LA GALAXIA DE
APLICACIONES MÓVILES
n gra
t
1
publicado por:
Enough Software GmbH + Co. KG
Stavendamm 22
28195 Bremen
Alemania
www.enough.de
15a edición, Febrero de 2015
Esta guía se encuentra bajo la licencia Creative Commons
“Algunos derechos reservados”.
Por favor, envía tus aportaciones, preguntas o esponsorización a:
[email protected]
Síguenos en Twitter: @MobileDevGuide
traducción hecha posible por:
Diseño:
Cornelius Kwietniak (Enough Software)
Editores:
Marco Tabor (Enough Software)
Julian Harty, Chris Ward
Traductores:
Javier Melenchón, Eva Casado de Amezua
www.mobiledevelopersguide.com

2
1Prólogo
4
La Galaxia Móvil: Introducción
De la Idea al Concepto
27
Experiencia de Usuario & Diseño de Interfaz
38Android
56
BlackBerry 10
68
Firefox OS
74iOS
90
Java ME (J2ME)
101Tizen
106Windows
117 Hacia Multiplataforma
135 Sitios para Móviles & Tecnologías Web
151 Aplicaciones Empresariales
163 Videojuegos para Móviles
182 Desarrollo Móvil y el Internet de las Cosas
191 Programando Smartwatches
199 Analíticas Móviles
212 Seguridad de la Aplicación
225Accesibilidad
247Testeo
272Monetización
291Epílogo
292 Acerca de los Autores
17

3

4

5
Prólogo
El desarrollo de aplicaciones ha avanzado mucho en los últimos
10 años. Cuando fundamos Enough Software en el 2005, las
aplicaciones móviles eran algo realmente exótico y limitado a
los teléfonos, y la distribución era más que difícil. Ahora, no
sólo tenemos que limitarnos a los móviles como plataforma,
sino que hemos ampliado nuestro alcance a tablets, phablets,
PCs, relojes inteligentes (smartwatches), televisores y sistemas
de automoción. Asimismo, muchos productos derivados del
Internet de las Cosas (o IoT, del inglés Internet of Things) han
sido posibles gracias a la aplicaciones móviles.
En esta quinceava edición, y como siempre desde el 2009,
mostramos esas nuevas oportunidades, siendo en este caso los
capítulos más notables los capítulos dedicados a IoT y smartwatches; pero también cabe destacar que otros capítulos han
sido ampliados, mejorados, y en algunos casos completamente
renovados. Por ello queremos felicitar a los autores, ¡habéis
hecho un trabajo fantástico!
También agradecer el soporte de nuestros patrocinadores,
que hace posible imprimir esta guía en formato de libro de
bolsillo: ¡SAP, HP y Microsoft! Podéis documentaros sobre
su oferta de plataformas móviles en developers.sap.com,
developers.hp.com y dev.windows.com. Y por supuesto:
¡Muchísimas gracias a los traductores!
Prólogo
1
Por favor, compartid vuestro entusiasmo con nosotros vía Twitter en @enoughsoftware o vía email en
[email protected], y recordad que podéis encontrar
la edición electrónica de este libro, en varios idiomas, en
mobiledevelopersguide.com.
Robert + Marco / Enough Software
Bremen, Febrero 2015
PD: ¿Necesitas ayuda para triunfar en el universo móvil?
Contáctanos en [email protected] para saber más sobre
nuestros servicios de coaching de aplicaciones.
Prólogo
2
10
th
ION
EDIT
La Galaxia Móvil:
Introducción
Bienvenido al mundo del desarrollo móvil, un lugar donde
antiguos gigantes se tambalean y nacen nuevas estrellas,
aparentemente de forma habitual.
Éste libro se centra en el desarrollo de aplicaciones móviles,
abarcando fases como: planificación y especificación, prototipado y diseño, implementación, testeo interno y despliegue,
publicación en una tienda de aplicaciones, descubrimiento por
los usuarios, instalación, uso y feedback. En última instancia,
queremos que nuestros usuarios disfruten utilizando nuestras
aplicaciones y que nos den valoraciones positivas para alentar
a otros a hacer lo mismo.
Sigue leyendo para aprender cómo desarrollar aplicaciones
para las principales plataformas. Si ésta es la primera vez que
has considerado involucrarte en este tema, te recomendamos
no demorarlo más ya que el mundo se está enfocando
rápidamente hacia el móvil como forma predominante en la
informática, y es probable que otros te adelanten si esperas
demasiado.
Aunque el desarrollo de aplicaciones móviles tiene algunos
puntos en común con el de otro tipo de software, también
posee características específicas. Vamos a tratar algunas de
ellas a continuación.
La Galaxia Móvil: Introducción
4
Topología: Factores de Formato y
Patrones de Uso
Tradicionalmente, los desarrolladores de aplicaciones sólo nos
habíamos centrado en los teléfonos móviles; posteriormente
las tablets aparecieron en escena como plataformas objetivo;
y, hoy en día, nuestras aplicaciones pueden cubrir un amplio
espectro de dispositivos: smartwatch, móvil, tablet, PC, TV y
automoción. Y otros factores de forma se incorporarán en el
futuro. Cada factor de forma plantea sus propios retos de usabilidad; por ejemplo, un tablet exige una navegación diferente a
un teléfono y la entrada de datos en un televisor puede resultar
muy incómoda.
Naturalmente, los patrones de uso de Android difieren de los
de iOS, que a su vez son diferentes de aquellos para Windows
Phone, etcétera. Por tanto, deberías evitar ofrecer la misma
experiencia de usuario en todos los factores de forma, incluso
si tu plataforma objetivo se limita a los smartphones, de lo
contrario corres el riesgo de ofrecer un servicio mediocre a
algunos segmentos de tus base de usuarios.
Formación Estelar: Creando un Servicio
Móvil
Hay varias maneras de producir un servicio móvil:
—— Aplicación (app)
—— Sitio Web
—— SMS, USSD1 y STK2
1 es.wikipedia.org/wiki/USSD
2 en.wikipedia.org/wiki/SIM_Application_Toolkit
La Galaxia Móvil: Introducción
5
Aplicaciones
Las aplicaciones se ejecutan directamente en el dispositivo. Se
pueden desarrollar como nativas, web o híbridas.
Aplicaciones Nativas
Una aplicación nativa está programada en un lenguaje
específico con APIs propias de la plataforma. Se suele comprar,
descargar y actualizar a través de la tienda de aplicaciones
específica de la plataforma. Las aplicaciones nativas suelen
ofrecer mejor rendimiento, integración más completa y la mejor
experiencia de usuario en comparación con otras opciones; sin
embargo, el desarrollo nativo suele ser también la opción de
desarrollo más compleja.
Aplicaciones Web
Una aplicación web (web-app/web-based) se basa en HTML5,
JavaScript y CSS, y no depende de ninguna tienda de aplicaciones. Es un sitio almacenado localmente en el móvil que trata
de emular el look-and-feel (aspecto y comportamiento) de
una aplicación. Un famoso ejemplo de aplicación web es la del
Financial Times, que abandonó la tienda de aplicaciones con
el fin de evitar compartir los ingresos de los suscriptores; en
cambio, la aplicación web basada en Facebook iOS fue puesta
al día como aplicación nativa para mejorar dramáticamente su
rendimiento y usabilidad. Hay frameworks para aplicaciones
web que permiten construir un contenedor nativo para tales
aplicaciones de manera que puedan ser publicadas en las
tiendas de aplicaciones, por ejemplo Phonegap3.
3 www.phonegap.com
La Galaxia Móvil: Introducción
6
Aplicaciones Híbridas
Existe una exagerada controversia en torno a si las aplicaciones
nativas son el futuro o si lo son las aplicaciones web. Para
muchos de los desarrolladores de aplicaciones móviles esta
controversia ya no es relevante, porque la aproximación híbrida
al desarrollo de aplicaciones se ha convertido en algo bastante
común: una aplicación puede utilizar código nativo para incrementar su rendimiento e integrarse con la plataforma, mientras
que utiliza una webview con contenido basado en HTML5 para
otras partes de dicha aplicación. Una aplicación híbrida hace
uso tanto de las tecnologías nativas como las web. Partes de
ella se comportarán como una aplicación nativa, mientras que
otras se ejecutan sobre tecnologías web y pueden utilizar la
conexión a Internet para ofrecer contenidos actualizados y
funcionalidades sin necesitar de publicar actualizaciones en
las tiendas de aplicaciones. Mientras que esto podría ser visto
como un inconveniente, el uso de las tecnologías web permite
a los desarrolladores mostrar contenido actualizado sin tener
que volver a subir la aplicación a las tiendas de aplicaciones.
El desafío clave es combinar las capacidades únicas de
tecnologías nativas y web para crear una aplicación verdaderamente fácil de usar y atractiva.
Sitios web
Un sitio web se ejecuta en tu servidor, pero puedes acceder a
varias funciones del dispositivo con JavaScript, por ejemplo
para almacenar datos de forma local o solicitar la ubicación
actual del dispositivo. A diferencia de las aplicaciones, los
sitios web para móviles son inherentemente multiplataforma.
Históricamente, los sitios web se han centrado en ser compatibles con navegadores basados en WebKit como Safari.
Hoy en día, tanto WebKit como Chromium son los motores de
renderizado web dominantes, con Trident de Internet Explorer
7
y algunos otros como actores secundarios. En aras de una Web
abierta, intenta usar estándares HTML5 tanto como sea posible
y evita renderizar código específico de un sólo motor.
SMS, USSD y STK
Los servicios sencillos pueden ser realizados con SMS, USSD
o STK. Todo el mundo sabe cómo funciona el sistema de
mensajería de texto SMS (Short Message Service), y todos los
teléfonos son compatibles con él, pero necesitas convencer a
los usuarios de que recuerden comandos de texto para servicios
más complejos. Algunos operadores ofrecen APIs para servicios
de mensajería que funcionan para dispositivos que sólo usan
WiFi, tales como las APIs de red de Deutsche Telekom4 . En
el Reino Unido, se puede pagar en los parkings de muchas
ciudades via SMS. El USSD (Servicio Suplementario de Datos no
Estructurados, del inglés Unstructured Supplementary Service
Data) es un protocolo GSM utilizado para enviar sencillos
menús basados ​​en texto, cuyas capacidades dependen de
la compañía operadora y el dispositivo. En Sri Lanka, los
turistas pueden recibir una tarjeta SIM gratuita que se registra
utilizando menús USSD.
El STK (SIM Application Toolkit) permite implementar
aplicaciones interactivas de bajo nivel directamente en la
tarjeta SIM de un teléfono. El STK puede parecer irrelevante
cuando se están dando tanta relevancia a las aplicaciones
para smartphones, sin embargo hay casos como el de M-Pesa,
una aplicación STK que está transformando las transacciones
financieras en Kenia y otros países5.
4 www.developergarden.com/apis
5 memeburn.com/2012/03/how-m-pesa-disrupts-entire-economies/
La Galaxia Móvil: Introducción
8
El Universo de los Sistemas Operativos
Móviles
El espacio móvil es mucho más diverso que otras áreas TIC.
Cuando estás desarrollando software para ordenadores personales, tienes básicamente 3 sistemas operativos para elegir,
pero en el caso de los móviles hay muchos más. Este libro te
ofrece una introducción a aquellos sistemas operativos móviles
más relevantes actualmente, pero hay que ser consciente de
que el entorno móvil cambia continuamente a una velocidad
que rara vez se observa en otros negocios. Hemos visto cómo
muchas tecnologías prometedoras aparecen y desaparecen
rápidamente, sin importar lo grandes que eran las compañías
que las respaldaban o la relevancia que tuvieran históricamente
en el mercado.
Así que sigue leyendo, aprende cómo es el mercado actual
y prepárate para seguir sus cambios (o asegúrate de tener la
última edición de esta guía a mano).
Quásars: Android e iOS
Cuando la gente habla sobre aplicaciones móviles, en su
mayoría sólo se refieren a Android e iOS. ¿Por qué? En términos
de cuota de mercado, estas dos plataformas combinadas
dominan el mercado de smartphones con alcanzando fácilmente
el 90% de cuota en los principales mercados6 (ver la tabla a
continuación para los números globales). El estudio Developer
Economics 20147 también muestra que iOS y Android están a
la cabeza en términos de atención por parte de los desarrolladores, es decir, el porcentaje de desarrolladores utilizando
una plataforma, independientemente de la plataforma que
6 www.idc.com/getdoc.jsp?containerId=prUS24442013
7 developereconomics.com
La Galaxia Móvil: Introducción
9
ellos consideran su 'primaria'. Android era líder, con un 71% de
los desarrolladores trabajando en ella, seguido por iOS con un
55%.
Naturalmente, esto también significa que si vas a usar
Android o iOS, vas a tener muchos competidores.
Materia Oscura: Plataformas de Móviles de Gama Media
Si bien los smartphones acaparan todo el protagonismo en
los medios, algunas partes del mundo pertenecen al universo
del móvil de gama media. A nivel global, alrededor del 50%
de todos los teléfonos vendidos en el tercer trimestre de 2014
fueron feature phones (teléfonos de gama media)8, con una
base instalada muy superior a esa cifra. Aún así, Android está
incrementando su penetración en el mercado de dispositivos de
bajo coste, así que su futuro no está del todo claro. Incluso los
jugadores clave en el mercado de teléfonos de gama media se
han dado cuenta: Nokia planea cerrar completamente su tienda
para feature phones durante la primera mitad del 2015, para
ser "reemplazada" por Opera9.
Aunque se pueden desarrollar aplicaciones nativas para
teléfonos de gama media cuando se tiene estrecha relación con
el comercializador, normalmente desarrollarás aplicaciones para
esos teléfonos utilizando Java ME o BREW.
Magnetoestrella: Windows
Windows se ha convertido en el 'tercer ecosistema'10 en el
universo móvil, superando en ventas al iPhone en algunas
regiones, como Italia o Argentina. La cuota de mercado de Win8 gartner.com/newsroom/id/2944819
9 blogs.opera.com/news/2014/11/nokia-store-become-opera-mobile-store
10 kantarworldpanel.com/global/News/news-articles/Apple-iPhone-5S-outsells5C-three-to-one-in-Great-Britain
La Galaxia Móvil: Introducción
10
dows 8.1 y Windows 8 ha superado a la de todas las versiones
de Mac OS X juntas, y también las versiones de Windows XP,
según Net Applications11. Mientras que Windows 8 y 8.1 nunca
ha alcanzado tal popularidad entre los usuarios, parece posible
que Windows 10 sí lo consiga. Windows 10 soportará una gran
variedad de dispositivos, comenzando por sistemas embebidos,
dispositivos ponibles (wearables), teléfonos, tablets, PCs, e
incluso la Xbox One.
Supernovas: Sailfish OS, Firefox OS, BlackBerry 10 y
Aliyun
¿Se convertirán estas plataformas en espectaculares historias
de éxito o en desafortunados capítulos de la industria móvil?
Nadie lo sabe con seguridad, pero hay señales ambivalentes
abiertas a la interpretación.
La empresa finlandesa Jolla12 entró en el mercado en el
cuarto trimestre del 2013 con Sailfish OS13. Aunque aún es un
sistema enfocado a un nicho del mercado, Jolla ha lanzado
una versión estable de su firmware y ha recibido más de 1,8
millones de dólares estadounidenses vía crowdsourcing para
producir una tablet Jolla14 en Mayo de 2015.
Firefox OS15 no ha llegado muy lejos. Originariamente su
objetivo eran los dispositivos de bajo coste, pero la experiencia que ofrece un sistema operativo basado en web no es
óptima en ese tipo de hardware. Ya que habrá nuevas mejoras
en hardware en el 2015, será interesante probar Firefox Os en
potentes dispositivos de bajo coste.
BlackBerry 10 se niega a morir, y tiene buenas razones para
11 netmarketshare.com/operating-system-market-share
12 jolla.com
13 sailfishos.org
14 www.indiegogo.com/projects/jolla-tablet-world-s-first-crowdsourced-tablet
15 mozilla.org/firefox/os
11
ello. A medida que la seguridad de datos gana atención en un
mundo cada vez más conectado, BlackBerry aporta algunas
ideas interesantes en ese ámbito. Aunque es claramente un
nicho de mercado, parece un nicho acogedor y provechoso.
Aliyun fue lanzado en el 2014 en un solo dispositivo en
China, con una cuota de mercado desconocida. Como no
le siguieron otros dispositivos, es posible asumir que esa
plataforma está muerta desde el punto de vista de los desarrolladores.
Enanas Blancas: Symbian, bada y otras estrellas muertas
Algunos sistemas operativos han ido consumiéndose lentamente (como Samsung bada), otros han terminado con una
explosión (como WebOS), y algunos han sido reabastecidos gracias a nuevos desarrollos (Windows Mobile). ¿Por qué algunos
sobreviven mientras que otros fracasan? Al final todo se reduce
al marketing, al reconocimiento por parte de la comunidad de
desarrolladores, a las políticas corporativas y a una buena dosis
de pura suerte. Cada vez es más difícil competir con el enorme
peso que tienen iOS y Android, un hecho que parece reflejarse
en el mercado de smartwatches.
Nuevas Estrellas: Tizen y Ubuntu
Despues de que el esfuerzo en crowdsourcing16 para financiar
el primer teléfono con Ubuntu no alcanzó sus objetivos, en
Febrero 2015 la empresa española BQ17 presentó el Aquaris
E4.5 con Ubuntu.
Tizen18 ha disfrutado de un cierto éxito en el mercado de
smartwatches (ver el capítulo dedicado a esos dispositivos),
aunque se ha retrasado la producción de los teléfonos
16 indiegogo.com/projects/ubuntu-edge
17 www.bq.com
18 tizen.org
La Galaxia Móvil: Introducción
12
prometidos por Samsung que lo soportarían. El Z1, el primer
teléfono Tizen ha sido finalmente lanzado en India en enero
de 2015. Aparentemente impulsado suave pero firmemente
por Samsung e Intel, Tizen aspira soportar no sólo teléfonos
y smartwatches, sino también televisores, tablets, netbooks
y sistemas de infotenimiento para vehículos. El hecho de que
incluyamos un capítulo dedicado a Tizen en esta edición refleja
que nos estamos tomando esa plataforma seriamente.
Sistema Solar: Cuotas de Mercado de Sistemas Operativos
para Smartphones
Si hechas un vistazo a la cuota de mercado mundial de
smartphones para el mismo trimestre durante años sucesivos,
la imagen resulta muy clara:
Plataforma
Cuota T3
2014
Cuota T3
2013
Cuota T3
2012
Cuota T3
2011
Android
84,4%
81,2%
74,9%
57,4%
iOS (Apple)
11,7%
12,8%
14,4%
13,8%
Windows
Phone
2,9%
3,6%
2,0%
1,2%
BlackBerry
0,5%
1,7%
4,1%
9,6%
0,6%
0,6%
4,5%
18,8%
Otras
(Fuente: idc.com/prodserv/smartphone-os-market-share)
Es posible que, como la mayoría de los desarrolladores,
consideres que invertir tiempo en todo lo que no sea iOS y
Android es una pérdida de tiempo, pero te aeguramos que no
es tan sencillo como parece. En el primer trimestre del 2013,
por primera vez, las ventas de smartphones a nivel global
La Galaxia Móvil: Introducción
13
superaron a las de teléfonos de gama media19, y Nokia Asha
está considerada como la próxima plataforma que llegará
al billón de usuarios, ofreciendo ya la posibilidad de portar
aplicaciones desde Android.
Recuerda también que se estas son cifras globales; la
participación de cada plataforma en los mercados regionales es
muy variable. En un mundo donde el contenido geolocalizado
está aumentando en importancia, es fundamental conocer los
detalles y las características del mercado objetivo. Por ejemplo,
China es el mayor mercado de smartphones en la actualidad y
es responsable de más del 40% de las ventas de aplicaciones
Android en el tercer trimestre de 201320, pero los dispositivos
Android chinos se comercializan habitualmente sin acceso a
Google Play y otros servicios Google para móviles.
Para obtener información sobre la cuota de mercado
en tu región objetivo, tienes recursos en línea tales como
comscore21, StatCounter22, VisionMobile23, Gartner24 o Kantar
Mobile World Panel25.
Sobre Tiempo y Espacio
Como desarrolladores, tendemos a mostrar mucha pasión por
nuestros sistemas favoritos. Sin embargo no debemos olvidar
que estas tecnologías son sólo eso, tecnologías que son
relevantes en un momento y lugar dado, pero nada más. Sí, al19 idc.com/getdoc.jsp?containerId=prUS24085413
20 engadget.com/2013/11/14/android-ios-market-share-gartner-q3-2013/
21 www.comscore.com/Insights/Data-Mine
22 gs.statcounter.com
23 visionmobile.com
24 gartner.com
25 kantarworldpanel.com/global/smartphone-os-market-share
La Galaxia Móvil: Introducción
14
gunas flamewars son divertidas pero, en retrospectiva, siempre
son pueriles. ¡Que levanten la mano aquellos que participaron
en el debate Atari versus Amiga, en los viejos y buenos años
80! Probablemente no muchos de vosotros, pero seguramente,
entendéis a los que nos referimos. Iniciativas como FairPhone26
o IndiePhone27 pueden ser más importantes que el sistema
operativo o el proveedor que elijas en el futuro.
Perdido en el Espacio
Si estás perdido en el vasto universo del desarrollo móvil, no
te preocupes, mantén la calma y sigue leyendo. Explora tus
opciones y evalúa el problema que deseas resolver, tu público
objetivo y tu know-how. Pon un gran esfuerzo en diseñar la
experiencia de tu servicio, concéntrate en el problema en
cuestión, y mantenlo simple. Es mejor hacer una cosa bien que
hacer "todo" sólo regular. Invierte en el diseño y la usabilidad de la solución. Por último, pero no menos importante,
encontrar el nicho de mercado adecuado es a menudo mejor
que tratar de copiar algo que ya ha tenido éxito. ¡Esta guía te
ayudará a tomar una decisión informada!
26 fairphone.com
27 indiephone.eu
De la Idea al Concepto
Desarrollar soluciones digitales populares e innovadoras
significa beneficios importantes en esta industria. Hay millones
de apps en las tiendas de aplicaciones, muchas agrupadas
en una masa de aplicaciones similares que no ofrecen nada
especial. Sin embargo, algunas aplicaciones son excepcionales.
Es posible que te hayas preguntado: ¿Qué hace que estas
aplicaciones tengan éxito, y cómo puedo lograr un éxito
similar con mis productos? Este capítulo te ofrece herramientas
y un marco para generar sistemáticamente ideas innovadoras
para productos.
Los Ingredientes del Éxito: Conveniencia,
Viabilidad & Factibilidad
Comenzaremos debatiendo qué hace a un producto innovador
y exitoso. Una característica importante de los productos
innovadores es su combinación de tres aspectos principales:
conveniencia humana, viabilidad financiera y viabilidad
técnica.
Comprender su conveniencia implica poder responder a las
preguntas: ¿Qué desean las personas, y qué les hace felices?
Por un lado, esto significa que una buena idea debe crear valor
para las personas en su vida cotidiana; una buena idea debería
simplificar tareas o hacer más cómoda la vida de las personas.
Así, una idea de producto genera interés y atrae a la gente a
utilizar el producto. Por otro lado, una experiencia de usuario
atractiva fomenta el placer de su uso, ya que las tareas se pueden realizar fácilmente, la estructura de la aplicación es muy
clara y fácil de entender, y las actualizaciones periódicas sobre
el contenido o sitio ofrecido mantienen el interés en la misma
constante. Las aplicaciones móviles pueden permitir a los
De la Idea al Concepto
17
usuarios hacer cosas que no podrían hacer antes fácilmente;
por ejemplo, comprar precios en una tienda, comprar y vender
sobre la marcha, o el control de su salud y estado físico.
Considera formas de desarrollar aplicaciones que aprovechen lo
que ofrecen los dispositivos móviles.
La viabilidad financiera es crucial para el desarrollo de la
mayoría de productos, incluyendo las aplicaciones móviles. La
viabilidad ayuda a cubrir los costes en tiempo y energía del
desarrollo y mantenimiento de tu aplicación. Para aquellos que
esperan que la aplicación se autofinancia, el desafío es definir
un modelo de negocio que permite crear ingresos a partir de
una idea y mantener los costes en niveles aceptables para los
clientes finales. Sin embargo, muchos desarrolladores de aplicaciones se mantienen por debajo del umbral de la pobreza1 .
En particular, en el mundo digital han surgido varios nuevos
modelos de negocio en la última década. Por ejemplo, tanto la
publicidad como el modelo freemium se han utilizado en a las
aplicaciones móviles, siendo las compras In App especialmente
populares en los videojuegos, aunque con riesgo de ser
contraproducentes2 . Lee el capítulo monetización de esta guía
para aprender más sobre qué opciones tienes de ganar dinero
con el software móvil.
El tercer aspecto es la viabilidad técnica. La mayoría de los
ingenieros de software y desarrolladores están involucrados en
la evaluación de esta dimensión. A menudo, construir y combinar la tecnología adecuada para hacer un producto es todo
un desafío. Casos de la vida real muestran que los productos
innovadores no siempre necesitan tecnología de vanguardia
1 developereconomics.com/reports/developer-economics-q3-2014/
2 juego-developers
developereconomics.com/freemium-apps-killing-game-
developers/
De la Idea al Concepto
18
para tener éxito y que una combinación inteligente de las
tecnologías existentes puede generar productos innovadores.
Es importante tener en cuenta los tres aspectos (conveniencia, viabilidad y factibilidad) para desarrollar un concepto
suficientemente detallado antes de invertir esfuerzos innecesarios en la implementación de una solución. Obtén feedback
de otras personas, incluidos los usuarios potenciales, para
ayudarte a refinar idea y concepto.
Céntrate en el Usuario
En teoría, es posible que un producto encaje inmediatamente
con los deseos de su grupo objetivo, pero en la práctica esto
es poco habitual. En la mayoría de casos, el producto no
agrada a muchos de los clientes previstos. Aunque las capacidades ofrecidas por el producto pueden ser muy innovador,as
frescas, y realmente útiles, los usuarios pueden considerar el
producto no apto para su contexto o pueden necesitar varias
funciones adicionales para hacer un uso real del mismo.
Para mejorar la satisfacción de los usuarios, las empresas
de software tienden a hacer ajustes y tratar de responder a
todos los deseos y al perfil del grupo objetivo de una manera
desorganizada. Consecuentemente, el producto se va volviendo
complejo, no es muy usable, y pierde más y más usuarios, ya
que las expectativas de los usuarios no se pueden cubrir con la
aplicación existente.
Comenzar a desarrollar sin comprender realmente las
necesidades del usuario es muy arriesgado porque los cambios
en una aplicación ya lanzada son caros. Además, los recursos
se malgastan creando funciones innecesarias.
De la Idea al Concepto
19
Define las Necesidades del Usuario
Para evitar ese tipo de fallos, es importante centrarse en el
usuario y desarrollar la aplicación usando su feedback. El
análisis de los requisitos de usuario describe los procesos
cruciales al revelar las necesidades del usuario y determinar sus
expectativas. Analizar el escenario del problema y comprender
los requerimientos del usuario son partes integrales del diseño
de soluciones digitales innovadoras.
El primer paso es saber quiénes son tus usuarios y definir el
grupo(s) de destino para tu aplicación. Tienes que comprender
cuáles son los objetivos de los usuarios, qué tareas necesitan
realizar, y por qué tu aplicación es relevante para sus necesidades. Comprueba que sabes qué grupos de usuarios desearían
utilizar la aplicación.
Con el fin de revelar lospain points (puntos de dolor) y
deducir los requisitos reales, es necesario entender cómo
los usuarios realizan las tareas actualmente, incluyendo sus
soluciones alternativas. La mejor manera de obtener esa información es hablar directamente con los representantes de los
grupos de usuarios y observarlos en su vida o su trabajo diario.
Los estudios secundarios de mercado, por ejemplo informes o
datos demográficos, pueden ampliar tu investigación, ¡pero no
dependas de ellos como principal fuente de información!
Además, durante el análisis de requisitos es importante
tener en cuenta las diferencias entre deseos y necesidades.
Según Merriam Webster, un deseo es "un deseo de que algo
suceda o sea hecho."3 Además, se trata de "un acto de pensar
en algo que deseado, con la esperanza de que se conseguirá
o que va a pasar de alguna mágica manera." Este deseo es,
habitualmente, consciente. Los deseos se centran en objetos
materiales concretos (por ejemplo los smartphones) o en las
3 www.merriam-webster.com/dictionary/wish
De la Idea al Concepto
20
habilidades (por ejemplo la creatividad). Es por esto que los
usuarios pueden expresar sus deseos para un determinado
producto, como funciones o colores especiales. Los deseos se
pueden cambiar (por la publicidad o cuando mejores productos
llegan a ser conocidos, etc.), pero si un nuevo producto refleja
sólo los deseos de usuarios, no significa necesariamente que
ayude a los usuarios con sus objetivos. Por ejemplo, algunos
clientes quieren obtener un producto sólo porque tiene un
diseño agradable.
En cambio, las necesidades se esconden tras los deseos.
Éstas no se centran en objetos o habilidades, sino en factores
emocionales, como el recibir reconocimiento, la confianza, o
una habilidad. Según Merriam Webster, una necesidad es "algo
que una persona debe tener" y "algo que se necesita para
vivir o tener éxito o ser feliz."4 . Una necesidad es un deseo
basado en la escasez. Si una persona experimenta la ausencia
de algo, esto crea un deseo profundo en el subconsciente. Este
deseo motiva los actos, lo que debería eliminar dicha ausencia.
Diferentes carencias inducen diferentes niveles de acción.
De acuerdo con la famosa pirámide de Maslow5, la necesidad
fisiológica de dormir o el hambre son, por ejemplo, mucho más
fuertes que la necesidad de comunicación social. A diferencia
de los deseos, las necesidades son inespecíficos y, a menudo,
inconscientes.
Para iniciar el análisis de los requisitos, asegúrate de
plantear las necesidades y definir tu producto basándote en
necesidades reales en lugar de deseos arbitrarios.
4 merriam-webster.com/dictionary/need
5 en.wikipedia.org/wiki/Maslow’s_hierarchy_of_needs
De la Idea al Concepto
21
Ideando
El resultado del análisis no es una solución, sino una declaración clara y bien fundamentada del problema. Este planteamiento debe ser una base para explorar el escenario de la
solución en la fase de ideación del proyecto. Durante esta fase,
es importante comenzar a pensar muy divergentemente y llegar
a una gran cantidad de ideas. Si creas una gran cantidad de
ideas, será más fácil discutir diferentes enfoques para resolver
los pain points de los usuarios y combinar las mejores.
Existen muchas técnicas para fomentar el pensamiento
creativo. Algunas son bien conocidas, como el brainstorming
(lluvia de ideas). Sin embargo, se han inventado muchas otras
que se pueden utilizar en situaciones específicas, como el
método 6-3-56, la confrontación visual, o el método Disney7.
Lo que todas estas técnicas tienen en común es que fomentan
tanto el pensamiento divergente como el convergente,
fomentando el pensar fuera de la caja (del inglés thinking
outside the box).
Un consejo habitual es celebrar sesiones de creatividad
en un grupo con 5-8 participantes. Un grupo, por lo general,
tiene mejores resultados que los de una persona individual.
El brainstorming es el método más popular, pero no produce
los mejores resultados en cuanto a la cantidad de ideas;
para mejorarlos, se recomienda la aplicación de técnicas de
brainwriting, que permiten a cada participante recabar ideas
individualmente antes de discutirlas en grupo. Esto anima a
cada miembro del equipo a participar activamente en la lluvia
6 una
técnica de brainwriting para grupos, ver
en.wikipedia.org/wiki/6-3-5_Brainwriting
7 desarrollado
por Robert Dilts en 1994, ver
en.wikipedia.org/wiki/Disney_method
De la Idea al Concepto
22
de ideas y reduce el riesgo de que estas se evalúan antes de
tiempo.
No es importante la técnica que se utilice, sino tener en
cuenta las siguientes reglas de equipo durante la fase de
ideación del proyecto:
——
——
——
——
——
——
Aplazar el juicio
Fomentar ideas extrañas
Mantenerse centrado
Centrarse en la cantidad
Ser visual
Construir sobre las ideas de otros
Una vez recogidas las diversas ideas, deberán
revisarse, retocarse o combinarse por el equipo,
y las resultantes más prometedoras serán las
seleccionados.
Probando las Ideas
Tras seleccionar una idea, es crucial descubrir si proporciona
un valor real para el grupo objetivo y si lo realmente
satisfaría las necesidades de los usuarios. Los comentarios
de los usuarios potenciales son clave para evaluar el valor
de tu idea. Al principio sólo tienes que hablar de tu idea y
el concepto general de la aplicación. Sin embargo, puede ser
un reto para describir tus pensamientos de una manera en la
que el público los entienda. El lenguaje natural se interpreta
De la Idea al Concepto
23
a menudo de manera diferente y crea diferentes modelos
mentales de cada persona. Por tanto, la comprensión puede ser
diversa y la comunicación de las ideas un reto.
Con el fin de superar los retos de la comunicación, debes
expresar tus ideas de maneras visuales y tangibles, por ejemplo
con prototipos. El término prototipo puede sonarte como algo
que requiere mucho esfuerzo; de hecho, tradicionalmente se
entiende como una pre-versión de un producto final, pero un
enfoque más moderno del concepto es más versátil al incluir
borradores (por ejemplo, un dibujo en papel). En las primeras
fases de desarrollo de una aplicación innovadora, un prototipo
debe ser una herramienta que se utiliza para discutir ideas y
conceptos. Un prototipo puede ser, por ejemplo, un dibujo,
guión gráfico, o la visualización física de un concepto. Debe
ser fácil y rápido de construir y representar las partes esenciales de tu idea.
El principio más importante para trabajar con prototipos
es "empezar poco a poco, fallar pronto y aprender rápido".
Esto significa que puedes crear un prototipo rápido con costes
muy bajos para hacer tangible tu idea, obteniendo feedback
y aprendiendo en ciclos de iteración muy cortos. En esas
iteraciones puedes probar y mejorar el prototipo rápidamente
y a bajo coste. De esta manera, es posible validar nuevas ideas
con riesgos bajos y sin costes adicionales para la ejecución del
proyecto.
Cuando se trata de la ingeniería de software, hay tres
herramientas relacionadas con el término prototipo: wireframe,
mock-up, y una prueba de concepto. Wireframes y maquetas
se utilizan generalmente en las primeras fases para validar un
concepto, arquitectura de la información o interacción básica.
Implementar una prueba de concepto se utiliza para validar la
viabilidad técnica. Durante la implementación de una prueba
de concepto, es fundamental centrarse en los riesgos del
De la Idea al Concepto
24
proyecto e identificar soluciones y límitaciones técnicas. Lee
el siguiente capítulo para obtener más información sobre cómo
crear prototipos.
Si conveniencia y viabilidad son validados, también es
importante pensar en el modelo de negocio que vas a adoptar.
Herramientas como el Osterwalder Business Model Canvas8 pueden ayudar a construir tu modelo de una manera estructurada.
Aprende Más
Aquí puedes aprender más acerca sobre metodologías y
técnicas:
—— businessmodelgeneration.com, el sitio web del famoso libro
sobre cómo generar tu propio modelo de negocio. También
ofrecen una herramienta online, una vista previa del libro9,
y mucho más.
—— mycoted.com/Brainwriting, una buena introducción a
métodos de brainwriting. Forma parte de una Wiki sobre
técnicas creativas mantenida por la empresa inglesa
mycoted.
—— uxbooth.com/articles/complete-beginnersguide-to-design-research, la "Complete Beginner’s Guide to
Design Research" por Andrew Maier. El título es un tanto
exagerado, pero el libro es una buena introducción con
enlaces útiles a otros recursos.
—— theleanstartup.com, el sitio web del libro "Lean Startup"
de Eric Reis. Ayuda a los lectores a descubrir maneras de
crear productos más deseables con menor coste.
8 alexosterwalder.com
9 businessmodelgeneration.com/book
De la Idea al Concepto
25
Experiencia de Usuario &
Diseño de Interfaz
A estas alturas probablemente ya tienes una idea para tu
aplicación. Este capítulo trata sobre las técnicas a utilizar para
transformar tus planteamientos en un producto utilizable.
Diseñar una aplicación desde cero requiere una aproximación diferente a trabajar con una interfaz de usuario (o UI,
del inglés User Interface) ya existente. En ambas situaciones,
habitualmente irás alternando una visión más global con una
más detallada para asegurarte de que continuas mejorando su
calidad pero alineándote con las directrices del proyecto.
Utiliza los métodos descritos aquí como una caja de
herramientas más que como una fórmula magistral, y aplícalos
en el orden que mejor encaje con el proyecto en el que estés
trabajando.
Las fases de diseño -diseño conceptual, aplicar las capas
con los detalles a la interfaz, y verificar los conceptos implementados con usuarios- forman un ciclo que puedes repetir
tantas veces como necesites (o tiempo tengas para ello).
Pensamiento Conceptual
Personas
Persona es un perfil ficticio de usuario que representa una potencial tipología de usuario para un producto. En diseño, una
persona típica consistirá en una información de base acerca de
un usuario tipo, por ejemplo su profesión y motivaciones para
usar tu aplicación, y cómo ésta podría mejorar su vida. ¿Le
ayudaría a ser más productivo en el trabajo? ¿Realizar nuevas
actividades? ¿Aprender nuevas habilidades? Habitualmente hay
Experiencia de Usuario & Diseño de Interfaz
27
más de una persona para un proyecto. Para facilitarte adecuar
la aplicación a las necesidades de tus usuarios, elige también
nombres y fotografías que te permitan perfilar en detalle las
personas que utilizarás.
Los perfiles de usuarios son relevantes para ayudarte a
evitar que tiendas a diseñar para ti mismo. Dado que ya estás
trabajando en el producto, tu conocimiento de él es mayor que
el que tendrá cualquier la primera vez que lo utilice. Incluso
si tu propio perfil personal encaja en el de una persona, es
probable que no seas el único tipo de usuario al que te quieras
enfocar. Ya que vas a invertir tiempo y esfuerzo en comprender
y diseñar tu interfaz, no será así para tus usuarios. En cambio,
juzgarán la interfaz de tu aplicación según cómo esta encaje
en sus prejuicios al respecto. Para asegurarte de que estás
comunicando sus funciones con claridad, mantén en todo
momento tus personas presentes, y realiza el tipo de preguntas
que esos perfiles harían en cada paso de su viaje por tu
aplicación (llamados User Journeys).
User journeys
Cuando tengas una idea precisa del tipo de audiencia para la
que estás diseñando, puedes comenzar pareando las funciones
con escenarios de uso; pensar en flujos -un viaje específico
en tu aplicación desde un punto A a uno B- antes de pasar
a definir en más detalle la interfaz es también importante.
Esbozar esos flujos cuanto antes te ayudará a definir el número
de interacciones y pantallas que realmente vas a necesitar para
ellos.
Ejemplos de viajes pueden ser el flujo de compra en la
aplicación, subir y compartir una imagen, hacer un boceto,
etc. Para mapearlos deberás usar diagramas de flujo, mockups,
diseños de pantalla, descripciones escritas de cada paso,
storyboards o simples ilustraciones anotadas. Cualquier
Experiencia de Usuario & Diseño de Interfaz
28
técnica que elijas como la más apropiada para cada estado de
desarrollo te ayudará no solo a visualizar nuevos productos,
sino a evolucionas funciones existentes. Los flujos pueden ser
detallados y usar diseños precisos o ser abstractos y enfocados
a elementos específicos, por ejemplo el sistema de mensajería
de la aplicación.
Tras definir el flujo principal, puedes dividirlo en múltiples
tareas menores que necesites considerar en cada paso del
flujo. Esto te dará el enfoque que necesitas para diseñar
una experiencia complete con la comodidad de tener el flujo
principal cubierto antes de entrar en detalles.
Iterar sobre un problema de diseño revelará diferentes
retos según el tipo de persona que tengas en mente. Algunos
usuarios necesitan más guía que otros. Incluso si es poco probable que todo el mundo perciba cada detalle de información y
diseño, mientras estén disponibles para quienes los necesiten
y equilibrados no interfieran en la experiencia de usuario de
usuarios avanzados, mayor amplitud de usuarios alcanzará.
Wireframes
Los wireframes (o maquetas de estructura) son versiones
esquemáticas de las pantallas de tu aplicación. Muestran
dónde debe colocarse cada elemento y qué relevancia tiene
en relación con el resto en pantalla. Esta composición básica
ayuda a comprender el nivel de complejidad de contenido e
interacciones.
Los wireframes pueden ser tan sencillos como bocetos
en papel, o puedes usar una de las muchas herramientas
existentes. Dibujar en papel es probablemente la mejor manera
de generar conceptos rápidamente. Las herramientas más especializadas incluyen una librería de widgets listos para utilizar
en una página del diseño. La ventaja de utilizar herramientas
digitales es que tienes una versión editable de tus mockups
Experiencia de Usuario & Diseño de Interfaz
29
que puedes transformar en prototipos funcionales. Aunque
también puedes usar bocetos para ello, cuando profundices en
el nivel de detalle te será mucho más fácil de actualizar una
versión digital del diseño.
Mantener actualizados tus mockups guiará tu desarrollo
de contenidos y diseño visual, y son un excelente punto de
referencia para la discusión de los detalles y pasos a seguir
con tu equipo. Tu librería de patrones de interfaz de usuario
se basará en elementos reutilizables de tus diseños. La
arquitectura de información de la aplicación se estructurará
según cómo elijas organizar el contenido y la navegación a su
alrededor del mismo.
Añadir los detalles
Diseñar para una plataforma y varios tamaños de pantalla
Piensa en estructura y widgets en el contexto de la plataforma
en la que se ejecutará tu aplicación. Cada plataforma tiene
sus propias convenciones de estilo y métodos para gestionar
la interacción. Seguir las prácticas recomendadas hará que tu
aplicación sea más fácil de utilizar para los usuarios familiarizados con esos dispositivos. Para más información y enlaces
a recursos online ve a los capítulos específicos para cada
plataforma en esta guía.
Debido a la naturaleza siempre cambiante del mercado móvil
deberías considerar cómo se verá tu interfaz en diferentes
tamaños de pantalla y densidades de resolución. Aunque puede
ser demasiado pronto para analizarlo en detalle si no tienes tu
concepto de aplicación refinado, trabajar la ratio escalabilidadusabilidad durante el wireframing y la fase de diseño visual
puede ahorrarte tiempo de desarrollo y testeo después. Si
este tema es completamente nuevo para ti, vale la pena que
Experiencia de Usuario & Diseño de Interfaz
30
leas más acerca de las mejores practicas en Responsive Web
Design (RDW). Los diseñadores web llevan tiempo resolviendo
estos problemas. Averigua si la plataforma ofrece directrices
específicas al respecto.
Lenguaje
Tan pronto como comiences a utilizar etiquetas y nombres
significativos en los elementos, comenzarás a definir cómo
comunicarte con tus usuarios. Según sea tu aplicación, el lenguaje tendrá diferentes roles a la hora de guiar a tus usuarios.
Pero incluso si el uso de palabras en tu interfaz es mínimo, no
las abandones a un rol secundario (por ejemplo como placeholders). Tu manera de nombrar es algo que también deberías
someter a testeo de usuarios. Una sola palabra errónea puede
llevar a los usuarios a confusión o hacerles creer cosas que
pueden afectar negativamente a la experiencia que quieres
construir.
Diseño visual
A menos que estés construyendo una app que utilice un
sistema no visual de entrada/salida, su interfaz deberá basarse
en el uso de gráficos. Cuidar los detalles visuales del diseño te
ayudará a mejorar la experiencia de usuario y destacarla de la
gran masa de aplicaciones del mercado.
Hay una serie de principios de diseño gráfico que ya
deberías haber aplicado durante el wireframing. Estos incluyen
la jerarquización espacial y visual así como la posición de sus
elementos. Un estilo visual pulido no sólo mejora el atractivo
de la interfaz en sentido estético, reforzar la marca también
mejora la funcionalidad y reduce la curva de aprendizaje al
ofrecer una visualización intuitiva.
Experiencia de Usuario & Diseño de Interfaz
31
La consistencia de estilo en toda la aplicación ayuda a los
usuarios a comprender el sentido de tu interfaz y aprender sus
interacciones más rápido. Por ejemplo, si un botón principal
cambia de color de una pantalla a otra, deberás considerar
el impacto de dicho cambio. ¿Se confundirán los usuarios?
¿Comprenderán el sentido de dicho cambio? Si los cambios de
estilo son intencionales, asegúrate de que los haces por una
buena razón.
De manera similar al diseño de interfaz e interacción a
nivel wireframe, algunas decisiones de estilo deben seguir
una guías de estilo específicas de la plataforma. Tu aplicación
puede verse muy diferente dependiendo de para qué plataforma
fue diseñada. Asegúrate de que tu diseño sigue las prácticas
recomendadas respecto a uso de fuentes, iconos y convenciones de disposición de elementos. Como ya hemos mencionado,
lee los capítulos de esta guía dedicados a las plataformas que
te interesan para saber más y acceder a recursos específicos.
El branding en la interfaz puede ser aplicado de manera
no obstructiva para que los usuarios puedan concentrarse en
interactuar con tu aplicación. Utiliza los colores de fondo, de
control, y tal vez algunas imágenes u opciones de diseño para
conseguir el aspecto deseado. Una pantalla de inicio (si la
utilizas) es el lugar donde mostrar algunos gráficos adicionales.
Por último, el icono de la aplicación es el elemento visual
que dará la primera impresión de tu aplicación y su identidad,
y el cual se la juzgará. Haz que sea muy atractivo. Si planeas
lanzar en múltiples plataformas, comprueba los requisitos
de diseño cuanto antes para que tu grafismo sea fácilmente
portable.
Experiencia de Usuario & Diseño de Interfaz
32
Prototipado
Un prototipo es la mejor manera de visualizar y evaluar las
interacciones de tu aplicación, porque es suficientemente
funcional para comunicar tu visión sin tener que aportar mucha
documentación adicional, por ejemplo imágenes estáticas. Tu
prototipo puede tener ya su diseño visual y mostrarse exactamente como lo hará después de la implementación, o puedes
dejarlo simplificado a nivel wireframe.
No importa el tamaño de tu presupuesto, o si trabajas en un
proyecto personal durante el fin de semana, tener un prototipo
suficientemente completo es la mejor manera de comunicar tu
concepto y discutirlo con terceros. La narración no lineal de
tus aplicaciones debe explicarse por sí misma ya en esta etapa.
Puedes experimentar tu concepto con algunos prototipos en
un dispositivo real, recuerda que tu interfaz puede verse muy
diferente en diferentes tamaños de pantalla.
No existe la manera perfecta de crear un prototipo. Puedes
usar cualquier técnica con la que estés cómodo. Desde papel
hasta alguna herramienta especializada, u otra aplicación
con la que puedas crear una mínima interactividad. Si sabes
programar, usar HTML es una buena opción. Puedes crear rápidamente prototipos sobre la parte de la aplicación existente y
trabajar directamente en el código final, todo depende de qué
enfoque encaje con las especificaciones del proyecto.
Los prototipos se desarrollan, normalmente, antes de
invertir tiempo en el desarrollo del código final y de realizar
diseños con precisión a nivel de píxel. Un prototipo funcional
validado también es una referencia útil para que los equipos
puedan trabajar sin arriesgarse a desviarse demasiado del plan
director, y también es útil para obtener feedback de terceros.
Algunas herramientas son gratuitas, y la mayoría de las
comerciales ofrecen una versión de prueba o gratuitas para
un número limitado de proyectos. A menudo aparecen nuevas
Experiencia de Usuario & Diseño de Interfaz
33
aplicaciones; a continuación, una lista de algunas que puedes
probar:
Herramientas de prototipado & wireframing
——
——
——
——
——
——
——
——
——
——
Axure: axure.com
Balsamiq Mockups: balsamiq.com
Framer: framerjs.com
Mockingbird: gomockingbird.com
OmniGraffle: omnigroup.com/products/omnigraffle
Origami: facebook.github.io/origami
Pencil: pencil.evolus.vn
POP: popapp.in/ popapp.in
Proto io: proto.io
Sketch: designcode.jo/sketch
Pruebas de usuario
La mejor manera de validar tu interfaz es enfrentarla con
usuarios reales, tan pronto como sea posible. No tienes que
esperar hasta que haya un producto acabado y pulido. De
hecho, una prueba temprana puede ahorrarte mucho tiempo a
largo plazo ya que saca a la luz rápidamente las ideas que no
funcionan. A más tiempo inviertas en desarrollar tus diseños,
más difícil será abandonarlos y comenzar de cero. Es más difícil
aceptar comentarios sobre algo que se considera casi terminado que en un prototipo funcional que se puede actualizar
con bastante rapidez.
Normalmente, las pruebas de usuario duran alrededor de una
hora. Durante ese tiempo, se le pide a usuarios no familiarizados con el producto que realicen ciertas tareas, por lo general
acciones básicas. Durante la búsqueda de usuarios a entrevistar
Experiencia de Usuario & Diseño de Interfaz
34
es positivo utilizar las descripciones originales de Persona
como referencia y buscar gente que coincida con estos perfiles.
Para un mejor uso del tiempo de prueba, prepárate con
antelación. Define tus presentaciones, piensa en cómo vas a
explicar la sesión a los usuarios y cómo utilzarás su feedback.
También deberías preparar las tareas correspondientes a lo
que quieres probar. Ponlas en una lista y ten ésta a mano para
asegurarte de que se prueban todas.
Si estás probando un prototipo, vale la pena mencionar
a los usuarios que la applicación no está terminada y que
pueden encontrar elementos sin terminar. Si asumen que quien
dirige la sesión es el autor del diseño pueden tener reparos
en dar un juicio negativo. Asegúrales que pueden expresar
sus opiniones con total honestidad. Después de todo, la única
razón por la que organizaste la sesión es obtener información
independiente. Una vez que las introducción ha terminado, es
importante que sigas las reglas y no dirijas a los usuarios a
ninguna conclusión. No demasiado (a menos que si no lo haces
no puedas continuar con la sesión) y formula tus preguntas
de manera que no interrumpas su flujo de trabajo. Graba a los
usuarios para registrar el feedback obtenido o asegúrate de
tomar suficientes notas.
Cuando recibes feedback, puedes iterar sobre tus diseños y
mejorar las partes incompletas, o avanzar en el desarrollo con
más confianza. Si estás explorando nuevas áreas y el prototipo
aún no está listo, puede realizar sesiones de pruebas en otras
aplicaciones ya publicadas. Lo que otros llegan a percibir de
una aplicación son cosas que pueden sorprendente porque
nunca las hubiéras pensado.
Experiencia de Usuario & Diseño de Interfaz
35
Incluso si no puedes probar con un gran número de
personas, realizar pruebas con un número limitado de usuarios
identificará problemas clave que podrían causar problemas
de usabilidad. No tengas miedo de emprender estas sesiones
siempre que tengan sentido para validar la dirección que has
tomado. Una sola opinión no sesgada es mejor que ninguna
opinión en absoluto.
Aprende más
Hay una gran cantidad de recursos disponibles online. Aquí te
mostramos algunos para abrirte el apetito:
—— UX Archive: uxarchive.com
—— User Onboarding: useronboard.com
—— Smashing Magazine (UX design section):
uxdesign.smashingmagazine.com
—— UX Magazine: uxmag.com
—— UX Matters: uxmatters.com
—— Nielsen Norman Group: nngroup.com
—— Interaction Design Foundation: interaction-design.org
Experiencia de Usuario & Diseño de Interfaz
36
Android
El Ecosistema
La plataforma Android ha sido desarrollada por la Open Handset
Alliance, liderada por Google, y ha estado a disposición del
público desde noviembre de 2007. Su uso por muchos fabricantes de hardware la ha convertido en el sistema operativo
de smartphones con mayor crecimiento. Alrededor del 84%
de todos los smartphones vendidos en el tercer trimestre del
2014 en todo el mundo fueron Android1. En la keynote anual
Google I/O de 2014, Google anunció que más de 1 billón de
dispositivos Android habían sido activados hasta la fecha2
incluyendo wearables, tablets, reproductores multimedia, decodificadores de televisión, teléfonos de sobremesa y sistemas
de infotenimiento para automóviles. Las Google Glass también
incluyen una versión reducida de Android compatible tanto con
aplicaciones web como nativas. Algunos dispositivos noAndroid también son capaces de ejecutar aplicaciones Android
con una funcionalidad reducida, como por ejemplo el Playbook
de RIM con su BlackBerry Android runtime, el nuevo sistema
operativo de código abierto Sailfish3 y la consola financiada en
crowdfounding Ouya.
En diciembre de 2014, el número de aplicaciones Android en
Google Play rompió la barrera de los 1,5 millones4 .
1 www.idc.com/prodserv/smartphone-os-market-share.jsp
idc.com/prodserv/
smartphone-os-market-share.jsp
2 engadget.com/2014/06/25/google-io-2014-by-the-numbers
3 sailfishos.org
4 www.appbrain.com/stats/number-of-android-apps
Android
38
Android es un sistema operativo, una colección de
aplicaciones preinstaladas y una plataforma de desarrollo de
aplicaciones soportada por un amplio paquete de herramientas.
La plataforma sigue evolucionando rápidamente, con la adición
de nuevas características regularmente, cada 6 meses aproximadamente, siendo la última Android 5.0 (nombre en clave
'Lollipop'). Siendo el primer lanzamiento mayor tras una larga
serie de versiones menores, Lollipop fue anunciado como la
mayor y más ambiciosa versión hasta la fecha. El nuevo kit de
interfaz de usuario, llamado Material Design5 tiene como meta
unificar todas las plataformas, tales como teléfonos, wearables
y televisores, con una misma filosofía de diseño. El anterior
framework, Dalvik, ha sido reemplazado con el nuevo Android
Runtime (ART), que aporta funciones tales como una recolección de basura (garbage collection o GC) más inteligente
que llega a multiplicar el rendimiento or 4. El proyecto Volta
mejora la vida de la batería optimizando el comportamiento
de la aplicación, mientras que otras funciones incluyen control
de privacidad, compartición de cuentas entre dispositivos, y
extensiones al sistema de notificaciones.
Uno de los problemas más debatidos cuando se desarrolla
para Android es la fragmentación del sistema: La multitud
de dispositivos diferentes de diversos fabricantes y el rápido
progreso de la plataforma en sí generan incertidumbre sobre
si una aplicación Android podrá ejecutarse o no en cualquiera
situación. Además, la adopción de la última versión del sistema
operativo está siendo más lenta que en otras plataformas. En
cualquier caso, actualmente puedes alcanzar más del 90% de la
base instalada si decides centrarte en Android 4.0 o versiones
superiores6.
5 developer.android.com/design/material/index.html
6 developer.android.com/about/dashboards
Android
39
Froyo 2.2
Gingerbread 2.3
0.4%
7.8%
18
API
Ice Cream Sandwich
4.0
API 17
Jelly Bean
4.1 - 4.3
6.7%
46,0%
39,1%
KitKat 4.4
(datos de Enero de 2015)
Para fomentar una experiencia de usuario sólida y una
apariencia consistente en las aplicaciones Android, Google
publica una guía de diseño7. Al introducirnos en la importancia
de los esquemas de color, pautas de diseño y el nuevo diseño
Material, la guía provee una excelente orientación a la hora de
construir aplicaciones para el ecosistema Android.
Prerrequisitos
El lenguaje de programación principal para Android está basado
en Java. Pero ten cuidado, sólo un subconjunto de las librerías
y paquetes de Java son compatibles y hay muchas APIs
específicas de la plataforma que no funcionarán en Android.
Puedes encontrar respuestas online a la preguntas "¿Qué y
Por qué?" en la Dev Guide para Android8 y a al "¿Cómo?" en la
documentación de referencia9. Además, Google ha introducido
una sección en su documentación llamada "Android Training"10
que ayuda a los nuevos desarrolladores a aprender las mejores
7 developer.android.com/design
8 developer.android.com/guide
9 developer.android.com/reference
10 developer.android.com/training/index.html
40
prácticas. Allí es donde puedes aprender conceptos básicos
como la navegación y comunicación entre aplicaciones, así
como funciones más avanzadas como la descarga inteligente
de bitmaps y la optimización de la aplicación para reducir el
consumo de la batería.
Para empezar, necesitas el SDK de Android11, que está
disponible para Windows, Mac OS X y Linux. Contiene las
herramientas necesarias para crear, probar, depurar y analizar
aplicaciones. Las herramientas de desarrollo de Android (ADT)12
son responsables de la integración con IDEs y de asegurarse
que tu flujo de desarrollo es lo más cómodo posible.
Soporte a IDEs
Actualmente, Google ofrece IDEs basadas en IntelliJ llamadas
"Android Studio". y Eclipse (entendido como "Eclipse + ADT
Plugin"), uniendo de manera eficaz las Android Developer Tools
con IDEs. Tras dos años de desarrollo, Android Studio 1.013
es por fin la IDE oficial para Android, soporta Gradle y ofrece
muchas funciones específicamente diseñadas para desarrollos
en Android.
IDE
soporte a plugin
versión incluida
Eclipse
paquete ADT por
separado
Eclipse + ADT Plugin
Intellij
plugin Android por
separado
Android Studio
11 developer.android.com/sdk
12 developer.android.com/tools/sdk/eclipse-adt.html
13 android-developers.blogspot.de/2014/12/android-studio-10.html
Android
41
Encontrarás más información, así como los necesarios
enlaces de descarga, en la sección "Tools" de la documentación
de Android14 .
Desarrollo nativo
El Android NDK15 permite la creación de componentes nativos
para tu aplicación al aprovechar tanto JNI para la invocación
de métodos nativos y el uso de subclases nativas que ofrecen
callbacks a aquellos no nativos. Esto es importante tanto
para desarrolladores de videojuegos como para cualquiera que
necesite fiabilidad y eficiencia.
Implementación
Arquitectura de la aplicación
Las aplicaciones Android incluyen habitualmente una mezcla
múltiples objetos tipo actividades (Activity), servicios
(Service), BroadcastReceiver y proveedores de datos (Data
Provider), los cuales tienen que ser declarados en el manifiesto
de aplicación.
Una actividad es un bloque de funcionalidad con una
interfaz de usuario adjunta. Un servicio se utiliza para tareas
que se ejecutan en segundo plano y, por lo tanto, éstas no
están ligadas directamente a una representación visual. Un
receptor de mensajes gestiona los mensajes transmitidos por el
sistema, por tí mismo o por otras aplicaciones. Un proveedor
de datos es una interfaz para el contenido de una aplicación
que abstrae de los mecanismos de almacenamiento subyacentes
(por ejemplo, SQLite).
Una aplicación puede consistir en varios de estos com14 developer.android.com/tools developer.android.com/tools developer.android.
com/tools
15 developer.android.com/tools/sdk/ndk
42
ponentes, por ejemplo, una actividad para la interfaz de
usuario y un servicio para tareas dilatadas en ejecución. La
comunicación entre los componentes se consigue con objetos
Intent o llamadas a procedimientos remotos vía (AIDL) Android
Interface Definition Language.
Los Intents empaquetan datos tales como la localización del
usuario, o una URL, con una acción, desencadenan acciones en
la plataforma y pueden ser utilizados como un sistema de mensajería en tu aplicación. Por ejemplo, el Intent para mostrar
una página web abrirá el navegador web. La fuerza de esta
filosofía de bloques de construcción es que se puede sustituir
cualquier funcionalidad por otra aplicación, ya que Android
siempre utiliza la aplicación por defecto para un propósito específico. Por ejemplo, el Intent para compartir una página web
llamada por una aplicación de lectura de noticias puede abrir
un cliente de correo electrónico o una aplicación de mensajería
de texto, dependiendo de las aplicaciones instaladas y de las
preferencias de usuario: se puede utilizar cualquier aplicación
que declare un Intent tipo share como interfaz.
La interfaz de usuario de una aplicación está separada
del código en archivos XML de layout específicos de Android.
Diferentes diseños pueden ser creados para diferentes tamaños
de pantalla, localización por país y características del dispositivo, sin tocar el código Java. Con este fin, textos e imágenes
están organizados en carpetas separadas de recursos. Por
supuesto, también puedes definir y diseñar layouts vía código
o hacer use de ambas estrategias para permitir actualizaciones
dinámicas de la interfaz de usuario.
El SDK y los Plug-ins
Para ayudarte en el desarrollo tienes muchas herramientas a tu
disposición en el SDK, los más importantes son:
43
—— android: Para crear un proyecto o gestionar dispositivos
virtuales y versiones del SDK.
—— adb: Para llamar a los dispositivos, conectarse e interactuar con ellos (así como dispositivos virtuales) moviendo
archivos, instalando aplicaciones, etc.
—— emulator: Para emular las características de un dispositivo
virtual. Lleva un tiempo arrancarlo, por lo que hazlo sólo
una vez por sesión de trabajo y no para cada compilación.
—— ddms: Para observar el interior del dispositivo o emulador,
ver los mensajes del registro (log) y funciones de control
del emulador, como la latencia de red y la posición GPS.
También se puede utilizar para monitorizar el consumo
de memoria y terminar procesos. Si esta herramienta
está en ejecución, también puedes conectar el depurador
de Eclipse a un proceso que se ejecuta en el emulador.
Aparte, ddms es la única manera (sin acceso root) para
realizar capturas de pantalla de las versiones de Android
por debajo de la 4.0.
Estas cuatro herramientas y muchas otras se pueden
encontrar en el directorio de herramientas del SDK, incluyendo
algunas para el análisis de los registros de método de rastreo,
inspeccionar diseños y probar aplicaciones con los eventos al
azar.
Los plug-ins IDE están disponibles para ayudar a gestionar
estos archivos. La versión 11.x de IntelliJ incluye un editor
visual de layouts, por lo que tienes libertad para elegir entre
Eclipse e IntelliJ en caso de que quieras hacer prototipado
rápido, arrastrando y posicionando elementos de la interfaz en
el editor.
Si te enfrentas a problemas, tales como generación
de excepciones, asegúrate de revisar el registro de ddms
o usar el mecanismo logcat. Te permite comprobar si
Android
44
olvidaste agregar todos los permisos necesarios, tales como
android.permission.INTERNET en el elemento usespermission16.
Si estás utilizando las características introducidas después
de Android 2.3, tales como Fragments17 para pantallas grandes,
asegúrate de agregar el paquete Android Compatibility de
Google. Está disponible a través del SDK y AVD Manager y
ayuda a desarrollar para Android 3.0+ sin causar problemas
con el despliegue a Android 1.6 a través de Android 2.318.
Asegúrate también de utilizar los paquetes de la versión 4
en tu aplicación para proveer de máximo soporte a versiones
previas. También hay una versión para Android 2.1 y versiones
superiores, la librería v7 appcompat, que ofrece una manera de
implementar la ActionBar; véase su documentación online19.
Desarrollar tu aplicación para Android 3.1+ te permitirá
crear widgets flexibles en tamaño para la pantalla de inicio,
conectar por USB a muchos dispositivos, por ejemplo cámaras
digitales y gamepads. Las versiones Android 4.X introducen
interesantes novedades, como notificaciones expandibles,
widgets de bloqueo de pantalla y una cámara con detección de
rostros. El Material Design UI Toolkit fue introducido con Android 5.0 e incluye nuevos widgets y otros elementos para usar
en teléfonos, wearables y otras plataformas. El entorno nativo
Renderscript (introducido en la 3.1) ha cambiado mucho y no
proporciona la capacidad de renderizar gráficos, pero ahora es
posible utilizarlo para tareas exigentes en procesamiento.
Para ofrecer compatibilidad con dispositivos con versiones
anteriores de Android, Google comenzó a utilizar el framework
16 developer.android.com/reference/android/Manifest.permission.html
17 developer.android.com/guide/topics/fundamentals/fragments.html
18 android-developers.blogspot.com/2011/03/fragments-for-all.html
19 developer.android.com/tools/support-library/features.html
Android
45
Google Play Services20, que se actualiza a través de la Play
Store y añade librerías, como por ejemplo la más reciente de
Google Maps. Si estás interesado en autentificar usuarios,
puede que te interese echar un vistazo a los beneficios que
aporta tener datos reales de usuarios en tu aplicación con
Google+ Sign. La funcionalidad se gestiona vía tokens de OAuth
2.0 que permiten el uso de la cuenta Google del usuario en
nombre de éste.
Testeo
El primer paso para probar una aplicación es ejecutarla en
el emulador o en un dispositivo. Es posible depurarla, si es
necesario, a través de la herramienta ddms.
Todas las versiones del sistema operativo Android están
preparadas para ejecutarse en dispositivos sin necesidad de
modificaciones aunque, sin embargo, algunos fabricantes
de hardware pueden realizar cambios en algunos elementos
de la plataforma; por tanto, probar la aplicación en varios
dispositivos es esencial. La lista de AppBrain21 puede ayudarte
a hacerte una idea de qué dispositivos son los más populares.
Para automatizar las pruebas, el SDK de Android viene con
algunas herramientas muy útiles22 . Los tests se pueden escribir
con el formato estándar JUnit, utilizando los objetos simulados
de Android (mock objects) que se incluyen en el SDK.
Las clases Instrumentation pueden monitorizar la interfaz
de usuario y enviar eventos del sistema tales como pulsaciones de teclas. Tus tests pueden comprobar el estado de tu
aplicación tras estos eventos. MonkeyRunner23 es una potente
20 developer.android.com/google/play-services/
21 www.appbrain.com/stats/top-android-phones
22 developer.android.com/guide/topics/testing/testing_android.html
23 developer.android.com/guide/developing/tools/monkeyrunner_concepts.html
46
y extensible herramienta de automatización de pruebas que
permite probar toda la aplicación. Estas pruebas se pueden
ejecutar tanto en dispositivos virtuales como físicos.
En la revisión 21 del SDK, Google introdujo finalmente
un framework de automatización de pruebas de interfaz más
eficiente24, que permite realizar pruebas funcionales de interfaz
de usuario en Android Jelly Bean y versiones superiores. La
herramienta puede ser ejecutada desde el shell con el comando
uiautomatorviewer y muestra la interfaz capturada,
incluyendo información sobre las vistas. Ejecutar las pruebas
es relativamente fácil: Una vez que hayas escrito tu test, éste
se compila a través de ANT como un archivo JAR. Este archivo
tiene que ser subido al dispositivo y ejecutado con el comando
adb shell uiautomator runtest.
En octubre de 2013, una nueva herramienta llamada
Espresso25 fue lanzada por Google. Proporciona una API muy
sencilla que ayuda a escribir con rapidez test procedurales para
la interfaz de usuario.
Entornos de prueba de código abierto, como Robotium26,
pueden complementar otros tests automatizados. Robotium
incluso puede ser utilizado para probar archivos binarios
apk si el código fuente de la aplicación no está disponible.
Roboelectric27 es otra gran herramienta que ejecuta las pruebas
directamente sobre tu IDE en el JVM estándar de tu ordenador.
Tus pruebas automatizadas se pueden ejecutar en servidores
de integración continua como Jenkins o Hudson. Roboelectric
se ejecuta en una JVM estándar y no necesita un runtime
Android. Muchos otros entornos automatizados de pruebas,
24 android-developers.blogspot.de/2012/11/android-sdk-tools-revision-21.html
25 googetesting.blogspot.de/2013/10/espresso-for-android-is-here.html
26 code.google.com/p/robotium
27 robolectric.org
Android
47
incluyendo Robotium, se basan en el entorno de Instrumentación de Android, y requerirán ser ejecutados en la JVM Dalvik.
Plug-ins como el Android Emulator Plugin28 permiten que estos
tests sean configurados y ejecutados en Hudson y Jenkins.
Compilación
Aparte de crear tu aplicación directamente en el IDE que
prefieras, hay maneras más cómodas de construir aplicaciones
Android. Gradle29 es actualmente la herramienta de creación
automatizada con soporte oficial para Android. También hay
un plug-in de Maven30 que cuenta con un gran apoyo en la
comunidad de desarrolladores. Ambas herramientas pueden
tener dependencias de diferentes repositorios Maven, véase el
Maven Central Repository31.
El sistema que utiliza Google para publicar librerías para
Gradle se conoce como Android Archive (archivos .aar) y se
puede acceder a él vía Android SDK Manager. También puedes
crear tus propias librerías o SDKs utilizando el plugin androidlibrary para Gradle. Una excelente fuente de librerías Android
compatibles con Gradle es 'Gradle, please'32 .
28 wiki.hudson-ci.org/display/HUDSON/Android+Emulator+Plugin
29 tools.android.com/tech-docs/new-build-system
30 code.google.com/p/maven-android-plugin/
31 www.maven.org/
32 gradleplease.appspot.com
Android
48
Firmado
Tus aplicaciones tienen que haber sido firmadas en el
compilado, ya sea con una firma de depuración o con una de
publicación. Puedes utilizar un mecanismo de auto-firma, lo
que evita gastos relacionados con la firma (y seguridad).
La misma firma debe ser utilizada para las actualizaciones
de tus aplicaciones, así que asegúrate de no perder tu keystore
o contraseña. Recuerda: puedes utilizar una única clave para
todas tus aplicaciones o crear una nueva para cada una de
ellas.
Distribución
Una vez hayas creado tu rompedora aplicación y la hayas
probado, debes publicarla en la tienda de aplicaciones de
Android llamada "Play". Este es un buen lugar para llegar a los
clientes y vender tus aplicaciones. Android, desde la versión
1.6 en adelante, también es compatible con compras desde la
misma aplicación vía Google Wallet, lo que te permite vender
contenido adicional, paquetes de funciones, etcétera, dentro
de tu aplicación utilizando la infraestructura de Android Play33.
También se utiliza por otros portales de aplicaciones
como fuente de metadatos de aplicaciones. Para subir
tu aplicación a Android Play, el punto de partida es
play.google.com/apps/publish/.
Estás obligado a inscribirte en el servicio a través de tu
cuenta de Google Checkout y pagar una cuota de inscripción
de $25 (USD). Una vez aprobado tu registro, puedes cargar
33 developer.android.com/guide/google/play/billing/
Android
49
la aplicación, añadir imágenes y descripciones, y entonces
publicarla.
Asegúrate de que has definido versionName,
versionCode, un icono y una etiqueta en tu
AndroidManifest.xml. Además, las características declaradas en el manifiesto (nodos uses-feature) se utilizan para
filtrar aplicaciones para distintos dispositivos.
Una de las novedades más recientes en Google Play Store es
que aceptan versiones alpha y beta, lo que te permite realizar
pruebas con usuarios de manera amigable antes de lanzar la
aplicación y hacerla pública a todos los usuarios. Aún más,
puedes dirigirlas a países y dispositivos específicos utilizando
el Developer Console y exportar las estadísticas resultantes
para comprender mejor tu base de usuarios. Utilizando los servicios de localización integrados, puedes fácilmente comprar la
capacidad de añadir nuevos idiomas a tu aplicación (asegúrate
de revisar la Localization Checklist34 para obtener información
detallada acerca de la importancia de este tema).
Como hay una gran cantidad de aplicaciones compitiendo en
Android Play, es posible que desees utilizar tiendas alternativas
de aplicaciones35. Ofrecen diferentes métodos de pago y
pueden dirigirse a grupos específicos de consumidores. Uno de
esas tiendas es la Amazon Appstore, que viene instalada en la
familia de tablets Kindle Fire.
Adaptación
A medida que la adopción de Android se incrementa, también
lo hace un ecosistema de elementos específicos de fabricante
que incluyen sus propios SDKs, versiones de Android comple34 developer.android.com/distribute/googleplay/publish/localizing.html
35 onepf.org/appstores/
Android
50
tamente adaptadas y herramientas en torno a temas tales
como las pruebas de versiones alpha y beta. Esto tiene su lado
positivo, por ejemplo una integración sólida que posibilita
una fantástica experiencia de usuario, pero también negativo,
incrementa la fragmentación del ecosistema. A menudo, las
tiendas de los fabricantes bloquean la descarga de aplicaciones
genéricas que utilicen servicios de terceros.
Un ejemplo es el ecosistema de la Kindle Fire de Amazon,
que es básicamente una nueva y customizada rama de Android
y supone la tablet Android con mayor cuota de mercado: en vez
de utilizar Google Play Services para utilizar Google Maps o la
compra de aplicaciones, obliga a utilizar las librerías propias
de Amazon que ofrecen funcionalidades similares. Las razones
tras esto son sencillas los dispositivos Kindle no se comercializan con las librerías necesarias para ejecutar servicios
de Google porque Amazon ofrece sus propios servicios de
juegos y publicidad (comparable a Google Play Glames) que te
ayuda a dirigirte a tu audiencia objetivo. Además, ofreciendo
emuladores para sus cuatro dispositovos (1st Gen, 2nd Gen, HD
7" y HD 8.9"), Amazon proveede de un entorno realista para
perfeccionar las aplicaciones y, a parte de las herramientas de
pruebas que ofrece a su comunidad de desarrolladores, también
verifican todas aquellas que se suben a su Appstore.
Android
51
A continuación, un breve resumen que te ayudará a localizar
los recursos que puedas necesitar:
Fabricante
Documentación
Amazon
developer.amazon.com/sdk/fire.html
HTC
htcdev.com
LG
developer.lge.com
Motorola
developer.motorolasolutions.com/
community/android
Samsung
developer.samsung.com/android
Sony
developer.sonymobile.com
Curiosamente, un número creciente de fabricantes (por
ejemplo Samsung y HTC) han comenzado a ofrecer “vanilla
versions” (versiones no customizadas) de Android en sus
dispositivos, etiquetadas como “Google Play Edition”.
Estos dispositivos usan el mismo hardware que los modelos
estándar, pero sin software personalizado, que se distribuye
directamente a través de la Play Store de Google y permite a
los usuarios de los dispositivos más innovadores y novedosos
(bleeding edge devices) utilizar servicios Google.
Monetización
Además de venderla en alguna de las muchas tiendas de
aplicaciones , hay muchas maneras diferentes de monetizar
una aplicación Android. Una forma viable es mediante el uso
de la publicidad, que puede ser basada en clics o en número
de visitas, y puede proporcionar un ingreso estable. Aparte,
hay diferentes posibilidades para facturar desde la aplicación,
Android
52
como el servicio propio de facturación de Google36, que
utiliza la tienda Google Play, el Mobile SDK de PayPal37 o la
Librería Mobile Payments Library de PayPal38. La mayoría de
los servicios difieren en las comisiones por transacción y las
posibilidades que ofrecen, por ejemplo suscripciones, pagos
paralelos o pagos previamente aprobados. Si buscas añadir una
funcionalidad muy atractiva a tu aplicación, evalúa implementar el SDK de card.io39 para el escaneado de tarjetas de crédito
con la cámara del móvil.
Para los ecosistemas de los fabricantes, tales como Samsung
Apps o Amazon Appstore, considera el uso de sus SDKs para
beneficiarte de sus optimizados modelos de monetización.
Asegúrate de verificar que el método de pago de tu
elección está en armonía con los términos y condiciones de
las diferentes tiendas en las que deseas publicar la aplicación;
en especial vale la pena echarle un vistazo a aquellas que
permiten descargas digitales, ya que suelen tener diferentes
directrices.
36 developer.android.com/google/play/billing/
37 github.com/paypal/PayPal-Android-SDK
38 developer.paypal.com/webapps/developer/docs/classic/mobile/gs_MPL/
39 card.io
Android
53
Android
54
BlackBerry 10
Introducción
La plataforma BlackBerry 10 (BB10) es un relanzamiento global
de BlackBerry (empresa anteriormente conocida como RIM).
BlackBerry ha adoptado este enfoque con el fin de ponerse
al día con los sistemas operativos móviles competidores: iOS,
Android y Windows Phone 8. Los dispositivos BB10 fueron
introducidos en el mercado en el primer trimestre del 2013
(sin planes de actualización para dispositivos anteriores), y
actualmente hay cuatro modelos disponibles, siendo los nuevos
buques insignia la Blackberry Passport y la Blackberry Classic.
Blackberry ofrece modelos tanto con teclado físico como
virtual.
Aunque el sistema operativo es nuevo, su núcleo está
basado en QNX, un sistema operativo en tiempo real para
dispositivos integrados. Las otras partes del ecosistema
BlackBerry, como la BlackBerry World o el servicio push, no
han cambiado, y se han aliado con Amazon para una mayor
oferta de aplicaciones. Con el lanzamiento de la versión 10.3
del sistema operativo de Blackberry, los usuarios pueden elegir
entre el Blackberry World Appstore y el Amazon Appstore. Un
elemento importante para BlackBerry en el mundo empresarial
es el software de gestión de móviles BlackBerry Enterprise
Server.
La última versión del BlackBerry SDK es la 10.3.1, que ha
sido lanzada en Noviembre del 2014.
BlackBerry 10
56
Desarrollo
Con BB10, las aplicaciones se pueden desarrollar utilizando
una amplia variedad de tecnologías:
——
——
——
——
——
——
C Native SDK
C++ Cascades SDK
HTML5 (WebWorks SDK)
Adobe Air
Android Runtime
BlackBerry App Generator
Con el fin de atraer a los desarrolladores a su nuevo sistema
operativo, BlackBerry proporciona un amplio conjunto de
recursos, incluyendo un simulador, y documentación frecuentemente actualizada1. También se publica el eBook gratuito
Learn BlackBerry 10 App Development2 . y, en términos de
programación, mucho código online3 y varios proyectos de
ejemplo en GitHub4
Un punto importante de descontento, por el que BlackBerry
ha recibido muchas críticas, es que BB10 ya no soporta la
anterior API de Java. Esto significa que los desarrolladores
Java que escriban código para dispositivos BlackBerry
anteriores a BB10 deben reorientarse a una de las tecnologías
anteriormente mencionadas. Como no todos los desarrolladores
están dispuestos a hacer esto, hay cierta preocupación
respecto a que un gran número de ellos “abandonen el barco"
y se reorienten a las plataformas de la competencia. Además,
1 developer.blackberry.com/platforms/bb10
2 apress.com/9781430261575
3 developer.blackberry.com/develop/platform_choice/bb10.html
4 github.com/blackberry
BlackBerry 10
57
dado que no hay vía de migración para las aplicaciones de la
generación actual, los desarrolladores tendrán que volver a
escribirlas para la nueva plataforma. Esto es necesario porque
el núcleo del nuevo sistema operativo se basa en QNX5, un
sistema operativo de tiempo real. Por otra parte, la nueva
plataforma ofrece nuevas oportunidades, por ejemplo para los
desarrolladores web y Android, que pueden migrar fácilmente
sus aplicaciones. En cualquier caso, algunas aplicaciones
migradas no tienen especial valor y bien podrían desaparecer
masivamente de la tienda de aplicaciones en bloque en vez de
aparecer otras nuevas6.
C Native SDK
El BlackBerry SDK es compatible con estándares abiertos
que permiten a los desarrolladores llevar sus aplicaciones ya
existentes a la plataforma. Para comenzar tienes el sitio web
Native Dev7. Escribir código con el SDK nativo permite que tu
aplicación esté tan cerca del hardware como sea posible y, por
tanto, mejorar el rendimiento y la integración con BB10. El
BlackBerry 10 SDK incluye todo lo necesario para desarrollar
programas que se ejecutan en BlackBerry OS 10: un compilador,
un enlazador, librerías, y un extenso entorno de desarrollo
integrado (IDE). Está disponible para Windows, Mac y Linux.
Los pasos básicos de desarrollo son los siguientes:
—— Solicitar una cuenta de firmado y sus claves
—— Instalar el SDK nativo8
5 www.qnx.com
6 mashable.com/2013/08/21/blackberry-10-app-spam/
7 developer.blackberry.com/native/beta/
8 developer.blackberry.com/native/download
BlackBerry 10
58
—— Instalar y configurar el simulador9
—— Configurar el entorno para desarrollo y despliegue
—— Crear tu primer proyecto y/o ejecutar aplicaciones de
ejemplo
C++ Cascades SDK
Desarrollar aplicaciones con C++ y Cascades es otra opción.
Cascades ha sido diseñado para permitir a los desarrolladores
crear una aplicación BlackBerry con facilitando la implementación de la interfaz de usuario. El marco Cascades separa la
lógica de aplicación del motor de renderizado de la interfaz. En
la aplicación, los controles de interfaz de usuario declarados,
sus propiedades y comportamiento se definen en un lenguaje
de marcado llamado Qt Modeling Language (QML)10. Cuando
se ejecuta la aplicación, el motor de renderizado de interfaz
de usuario muestra los controles de la misma y aplica las
transiciones y los efectos que hayan sido especificados. El
Cascades SDK ofrece las siguientes características:
—— Interfaz de usuario Cascades y APIs de plataforma
—— Herramientas para desarrollar tu interfaz en C++, QML, o
ambos
—— Capacidad de beneficiarse de controles básicos de la
interfaz y crear nuevos
—— Comunicación por redes móviles y WiFi
—— Grabación y reproducción de archivos multimedia
—— Almacenamiento y retorno de datos
—— Gestión de certificados y herramientas criptográficas
9 developer.blackberry.com/native/download
10 en.wikipedia.org/wiki/QML
BlackBerry 10
59
El entorno Cascades se basa en el entorno de desarrollo
de aplicaciones Qt. Esta arquitectura permite a Cascades
aprovechar los modelos Qt de objetos, eventos y threading.
Los slots y señales en Qt permiten una potente y flexible
comunicación entre objetos. El framework Cascades incorpora
características de clases Qt fundamentales (tales como QtCore,
QtNetwork, QtXml, QtSql, y otras) y compila sobre ellas. Esto
permite a los desarrolladores definir las cosas en lugar de
programarlas, por ejemplo, sólo tienen que definir la duración
y el tipo de una animación, en lugar de programarla. Este
enfoque es similar a iOS con Core Animation. Debido a su
marcado parecido a JSON, QML puede incluso ser escrito por
desarrolladores JavaScript experimentados.
Para ayudar a los desarrolladores con este nuevo enfoque
en la construcción de interfaces de usuario, existe una
herramienta llamada Cascades Builder. Está incluida en el QNX
Momentics IDE y permite a los desarrolladores diseñar una
interfaz de usuario mediante una interfaz visual. Cuando se
realiza un cambio en el código, se puede ver el efecto inmediato en la vista de diseño. El desarrollador no tiene necesidad
de programar un control, puede simplemente arrastrar y soltar.
Si eres un diseñador, el Cascades Exporter11 es para tí. Este
plugin de Adobe Photoshop recorta y reescala las imágenes
y las empaqueta en un archivo tmz (en recursos de imagen
comprimidos, recortados y mejorados con metadatos). Estos
archivos de recursos puede ser utilizados fácilmente por un
desarrollador con el QNX Momentics IDE.
Para más información, investiga el sitio web de Cascades
Dev12 .
11 developer.blackberry.com/cascades/documentation/design/cascades_
exporter/
12 developer.blackberry.com/cascades/
BlackBerry 10
60
HTML5 WebWorks
Si eres un desarrollador Web/JavaScript, puedes utilizar tus
habilidades para escribir aplicaciones para BlackBerry. Hay dos
herramientas relevantes que puedes utilizar:
La primera es WebWorks SDK13. Entre otras características,
permite escribir páginas web regulares y luego compilarlas
como aplicaciones nativas de BlackBerry con facilidad. La
nueva versión de WebWorks, la 2.0, encaja perfectamente
con el entorno Apache Cordova, también conocido como
PhoneGap; BlackBerry publicó todas las APIs como plugins para
ésta herramienta. Si quieres imitar el estilo de la interfaz de
usuario BlackBerry en HTML, hay un proyecto en GitHub que
te ayudará. Se llama BBUi.js14 y ofrece un amplio y detallado
CSS para hacer que tu página web estándar se visualice como
una aplicación nativa BlackBerry. En esta aproximación debes
utilizar atributos de datos para mejorar el código HTML. Como
alternativa a bbui.js también se soporta jQueryMobile con
un tema de BB10, y el SenchaTouch framework15 también es
compatible con BB10.
Es bueno saber que BlackBerry ofrece soporte WebGL
acelerado por hardware, y que puedes realizar la depuración y
perfilado del dispositivo móvil a través del WebInspector como
una función integrada.
Para obtener más información sobre el desarrollo con
WebWorks hay un micro-site de HTML5 Dev16.
13 developer.blackberry.com/html5/download/sdk
14 github.com/blackberry/bbUI.js
15 www.sencha.com/products/touch
16 developer.blackberry.com/html5
BlackBerry 10
61
Adobe Air
La versión 10.3.1 de BB10 ya no soporta Adobe Air.17
Android en Tiempo de Ejecución (Runtime)
Puedes utilizar el BlackBerry Runtime para ejecutar aplicaciones Android Jelly Bean 4.2.2 en BlackBerry 10.2 y 10.3. Para
utilizar el runtime, primero debes volver a empaquetar tus
aplicaciones Android en el formato de archivo BAR, que es el
necesario para que una aplicación se ejecute en BlackBerry 10.
Como desarrollador, tendrás que utilizar una de las herramientas siguientes para volver a compilar la aplicación. Estas
herramientas también comprueban cómo es de compatible tu
aplicación para ser ejecutada en BlackBerry 10, ya que algunas
de las APIs del SDK de Android pueden no ser compatibles, o
pueden serlo sólo parcialmente con la plataforma BlackBerry.
—— Plug-in de recompilación para Eclipse
La principal ventaja de la utilización de esta herramienta es
su capacidad de comprobar niveles de compatibilidad, compilar,
depurar y ejecutar aplicaciones en BlackBerry PlayBook,
BlackBerry Tablet Simulator, BlackBerry 10 Dev Alpha Simulador
y dispositivos BlackBerry 10, todo sin salir de Eclipse. También
puedes usar este plug-in para firmar tu aplicación antes de
distribuirla. Si deseas probar la aplicación sin firmarla, puedes
utilizarlo para crear e instalar un token de depuración en el
dispositivo de destino o en el simulador.
17 developer.blackberry.com/air/downloads/endofsupport/
BlackBerry 10
62
—— Compilador online
La ventaja principal de la BlackBerry Packager para
aplicaciones de Android es que se puede utilizar para volver
rápidamente a compilar tu aplicación para Android utilizando
sólo tu navegador. Puedes probar la compatibilidad de la aplicación, volver a compilarla como un archivo BAR compatible
con BlackBerry Tablet OS o BlackBerry 10, y después firmarlo
para que pueda ser distribuido a través de la tienda BlackBerry
App World.
—— Herramientas recompiladoras de línea de comandos
Una de las principales ventajas de utilizar el BlackBerry
SDK para aplicaciones de Android es que se puede utilizar para
recompilar múltiples aplicaciones Android desde el formato
de archivo APK al formato de archivo BAR. Además, también
puedes utilizar este conjunto de herramientas de línea de comandos para comprobar la compatibilidad de tus aplicaciones
Android, firmarlas, crear tokens de depuración y un certificado
de desarrollador.
Si deseas obtener más información acerca de cómo ejecutar
aplicaciones Android en BB10, visita el sitio web18.
BlackBerry App Generator
Si no eres un desarrollador, BlackBerry proporciona una
manera fácil de generar una aplicación sencilla para BB10 con
el BlackBerry App Generator19. Esa página web genera una
aplicación basada en fuentes de información como
18 developer.blackberry.com/android
19 blackberryappgenerator.com/blackberry/
BlackBerry 10
63
——
——
——
——
——
RSS feeds
Tumbler
Facebook
YouTube
Flickr
y otras. Genera una aplicación master-detail que se puede
personalizar con un logotipo y una selección de colores. Para
una aplicación de noticias sencilla este enfoque es totalmente
correcto, pero no esperes obras maestras tipo CNN.
Testeo
BlackBerry continúa proporcionando un simulador para teléfonos BB10 como una descarga independiente20. Este simulador
permite ejecutar una aplicación en un PC/Mac/Linux de la
misma manera que se ejecutaría en un dispositivo BlackBerry
real. Para asistirte en tus pruebas, el simulador viene con una
aplicación llamada controller. Esta utilidad te permite simular
cosas tales como el nivel de la batería, la posición GPS, NFC o
la inclinación del dispositivo y, por lo tanto, comprobar cómo
reacciona tu aplicación en escenarios reales.
Firma
Muchas clases y características de la plataforma de nivel de
seguridad crítico (por ejemplo, la creación de redes o APIs
de archivo) requieren que la aplicación esté firmada para que
el desarrollador pueda ser identificado. Este último paso en
el desarrollo de una aplicación para BlackBerry a menudo es
difícil.
20 developer.blackberry.com/devzone/develop/simulator/
BlackBerry 10
64
Si quieres probar tu aplicación sin firmar en un dispositivo
físico, es necesario solicitar un archivo llamado token de
depuración. Esta token permite a un dispositivo específico
BB10 ejecutar aplicaciones sin firmar. Para realizar este
procedimiento de configuración necesitas solicitar un archivo
de firma (cliente-PBDT-xxxxx.csj) a través del BlackBerry Orden
Key Form21. Después de recibir el archivo por email podrás
instalar un token de depuración con las herramientas de línea
de comandos. Después de realizar esta configuración, también
podrás ejecutar aplicaciones sin firmar en tu dispositivo. Ten
en cuenta que esto requiere ser hecho en cada dispositivo por
separado.
Si quieres publicar tu aplicación en BlackBerry App World
también necesitas una clave de firma, que se solicitan a través
del BlackBerry Orden Key Form22 . Para ayudarte con este
proceso de configuración, BlackBerry ofrece una guía paso a
paso en esta página web23 que te guiará en el proceso.
21 www.blackberry.com/SignedKeys/codesigning.html
22 www.blackberry.com/SignedKeys/codesigning.html
23 developer.blackberry.com/CodeSigningHelp/codesignhelp.html
BlackBerry 10
65
Distribución
Al igual que con todas las versiones anteriores del sistema
operativo de BlackBerry, las aplicaciones para BB10 se
distribuyen a través de BlackBerry App World24 . La necesaria
cuenta de proveedor se puede crear en el Portal de Proveedores
para BlackBerry World25.
En el caso de aplicaciones de pago, los desarrolladores
obtener una participación en los ingresos del 70%.
La otra opción es una distribución corporativa. Esto te
permite lanzar una aplicación interna en tu organización en
lugar de ponerla a disposición pública para cualquier usuario,
lo cual es adecuado para aplicaciones B2B. Si deseas obtener
más información acerca de la distribución corporativa, por
favor visita el sitio web dedicado26.
24 appworld.blackberry.com/
25 appworld.blackberry.com/isvportal
26 developer.blackberry.com/distribute/enterprise_application_distribution.
html
BlackBerry 10
66
BlackBerry 10
67
Firefox OS
El Ecosistema
¿Necesitamos otro sistema operativo para móviles? La
Fundación Mozilla pensó que sí y desarrolló Firefox OS1, un
sistema operativo de código abierto basado en Linux enfocado
a teléfonos de gama media. Su primera versión fue publicada
en febrero de 2013.
Seis meses después se lanzó el primer dispositivo Firefox
OS disponible para el mercado de masas, el ZTE Open, que
se comercializa al precio de 80 dólares americanos y fue
promocionado en mercados emergentes. Con el lanzamiento
de One Touch Fire de Alcatel en Alemania, Firefox OS entró
oficialmente en el mercado europeo en octubre del 2013. El
precio de lanzamiento fue de 90 euros. En diciembre de 2014,
Mozilla y KDDI lanzaron en Japón el primer dispositivo basado
en Firefox 2.02, publicitado como el primer teléfono de gama
alta con Firefox OS.
Las aplicaciones Firefox están basadas en HTML pero, en vez
de empaquetar aplicaciones web en HTML5 con herramientas
como Phonegap, Firefox OS utiliza HTML/JavaScript/CSS como
lenguajes nativos de desarrollo. Esto significa que es bastante
fácil para un desarrollador web comenzar a escribir aplicaciones
nativas para ése sistema. En ese sentido, necesitarás conocer
la API de JavaScript que provee Firefox OS y aprender cómo se
empaquetan las aplicaciones.
1 mozilla.org/firefox/os
2 blog.mozilla.org/press/2014/12/mozilla-and-kddi-launch-first-firefox-os-
smartphone-in-japan-4
Firefox OS
68
Firefox OS consiste básicamente en tres componentes
principales:
—— Gonk: El kernel de bajo nivel de Linux y la capa de
abstracción de hardware (HAL). En teoría, un comercializador de hardware sólo necesita portar el Gonk a su hardware
para hacerlo compatible con Firefox OS.
—— Gecko: El runtime de aplicación. Gecko parsea, ejecuta
y renderiza HTML, JavaScript and CSS. Todos los accesos
al hardware necesarios para proveer a la aplicación de
funcionalidad son gestionados por este runtime. Incluye
un paquete de red, paquete gráfico, motor de diseño,
máquina virtual (para JavaScript) y capas de portabilidad.
—— Gaia3: Es la interfaz de usuario, escrita en HTML, CSS y
JavaScript. Gaia provee de todos los elementos de interfaz
de usuario necesarios para operaciones estándar. Se
comunica con el sistema operativo a través de las Open
Web APIs.
Desarrollo
Hay dos maneras de crear una aplicación para Firefox OS:
Aplicaciones alojadas y aplicaciones empaquetadas. En
ambos casos es necesario escribir el código en HTML, CSS y
JavaScript. Las aplicaciones alojadas son, básicamente, un
sitio web. Son fácilmente actualizables, pero a menudo tienen
acceso limitado a la web API y necesitan conexión a Internet.
Las aplicaciones empaquetadas se ejecutan localmente y son,
3 github.com/mozilla-b2g/gaia
github.com/mozilla-b2g/gaia github.com/
mozilla-b2g/gaia
Firefox OS
69
esencialmente, un archivo ZIP que contiene todos los archivos
de la aplicación.
Al contrario que las webapps estándares, las aplicaciones
en Firefox OS necesitan un manifiesto4 . Se trata de metadatos
para tu aplicación que indican su nombre, descripción, iconos e
información adicional.
Éste es el contenido mínimo que debe tener un manifiesto:
{
"name":"Hola mundo",
"description":"Una app más...",
"launch_path":"/index.html",
"icons":{
"128":"icon.png"
},
"developer":{
"name":"Tu nombre",
"url": "http://..."
},
"default_locale":"en"
}
La WebAPI de Firefox5 ofrece acceso a: vibración, geolocalización, estado de la batería, alarma, IndexedDB, sensor de
proximidad, sensor de luz ambiente y un archivo. Utilizando la
API puedes, por ejemplo, acceder al estado de la batería simplemente realizando la llamada navigator.battery.level
en JavaScript.
Si necesitas más funcionalidades de las que la WebAPI
ofrece, puedes usar Activities. Mozila usa el objeto MozActivity,
similar a cómo Android utiliza Intents: se le preguntará al
usuario qué aplicación quiere utilizar para realizar una cierta
tarea.
4 developer.mozilla.org/en-US/docs/Web/Apps/Manifest
5 wiki.mozilla.org/WebAPI
Firefox OS
70
A continuación, un ejemplo de cómo crear un SMS:
var sms = new MozActivity({
name: "new",
data: {
type: "websms/sms",
number: "+46777888999"
}
});
Y otro de cómo acceder a la galería de imágenes:
var pick = new MozActivity({
name: "pick",
data: {
type:
}
});
Simulación y Testeo
Mozilla provee de un simulador para Firefox OS descargable
como un plugin de navegador web6. Firefox OS 1.2 introdujo el
App Manager7. Ésta nueva herramienta de desarrollo permite
testear código y proporciona más asistentes de GUI, tales
como el editor de manifiesto. Aún así, es muy recomendable no
confiar ciegamente en el simulador: por ejemplo, dispone de
mucha más RAM que un dispositivo Firefox real.
6 addons.mozilla.org/en-us/firefox/addon/firefox-os-simulator/
7 developer.mozilla.org/en-US/Firefox_OS/Using_the_App_Manager
Firefox OS
71
Distribución
Mozilla ha creado una AppStore global llamada Marketplace8.
Tu aplicación será revisada conforme a las directrices de
Mozilla9. Una vez esté publicada, obtendrás un 70% de los
beneficios que genere.
Aprende más
Tu recurso principal para conocer más acerca de cómo desarrollar para Firefox OS será la red Mozilla Developer10. Una breve
introducción, que incluye tutoriales en vídeo acerca de como
comenzar está disponible en11. André Fiedler también ofrece
información esclarecedora para los no-iniciados en su presentación de Slideshare 'Doing mobile web Apps for Firefox OS - the
right way'12 . Para finalizar, el desarrollador y evangelista en
Mozilla Chris Heilmann aporta mucha información en su blog13.
8 marketplace.firefox.com
9 developer.mozilla.org/en-US/docs/Web/Apps/Publishing/Marketplace_
review_criteria
10 developer.mozilla.org
11 marketplace.firefox.com/developers/docs/quick_start
12 slideshare.net/andrefiedler1/doing-mobile-web-apps-for-firefox-os-the-right-way
13 hacks.mozilla.org/author/cheilmann
Firefox OS
72
iOS
El Ecosistema
Desarrollar para iOS se ha vuelto más popular que nunca. En
el verano de 2014, Tim Cook, CEO de Apple, declaró que en la
actualidad hay 9 millones de desarrolladores de iOS registrados,
un aumento del 47% respecto al año anterior1. En enero
de 2015, Apple anunció que 1,4 millones de aplicaciones
están disponibles en iOS y que la facturación de aplicaciones
aumentó otro 50 por ciento en un año: El total de ingresos
por aplicaciones iOS en 2014 suma 10 mil millones de dólares,
lo que significa que los desarrolladores iOS han ganado un
acumulado de 25 mil millones de dólares utilizando la Apple
AppStore2 .
Una pregunta habitual es por dónde empezar para convertirse en un desarrollador iOS. En este capítulo mostrará
lo que se requiere para configurar un entorno de desarrollo y
algunas de las diferentes opciones disponibles para escribir
aplicaciones. También dará sugerencias sobre recursos para
ayudar a desarrollar tus habilidades en el menor tiempo posible.
El capítulo termina con unas palabras de consejo importantes
para poder convertirte en un miembro del ecosistema de
desarrolladores iOS.
1 techcrunch.com/2014/06/02/itunes-app-store-now-has-1-2-million-apps-
has-seen-75-billion-downloads-to-date
2 apple.com/pr/library/2015
/01/08App-Store-Rings-in-2015-with-New-
Records.html
iOS
74
Nacimiento de un Sistema Operativo Móvil
El 9 de enero del 2007, Steve Jobs presentó una nueva
categoría de producto para la entonces empresa de ordenadores
y dispositivos musicales. Seis años después, el New York Times
informó de lo que no se había sabido durante tal anuncio:
el día antes de la demostración Jobs aún no podía realizarla
de inicio a fin en un iPhone (sólo existían alrededor de 100),
"rechazaba llamadas al azar, perdía la conexión a Internet, se
bloqueaba o simplemente apagaba"3. Pero cuando llegó el
momento de la keynote Jobs la realizó magistralmente, y el
resto es historia.
Con el lanzamiento del iPhone, Apple dio a conocer un
nuevo sistema operativo para utilizar el dispositivo. Su
nombre original era iPhone OS ya que el iPhone fue el único
dispositivo que podía ejecutarlo. En noviembre del 2010,
con el lanzamiento de la cuarta generación del sistema
operativo, Apple cambió el nombre a iOS para coincidir con el
lanzamiento del primer iPad. Esta versión fue nombrada iOS4
y desde entonces se ha lanzado una nueva versión cada año,
culminando en la versión actual, iOS8, que salió al mercado en
septiembre de 2014.
Mientras que iOS7 fue promocionado como una nueva interfaz de usuario, iOS8 se ha centrado en los nuevos entornos y
servicios, así como en el último modelo de dispositivo, Apple
Watch. Una mayor integración con dispositivos iOS y Mac en
Yosemite permite a los usuarios iniciar tareas, como la creación
de correos electrónicos, en un dispositivo y acabarlas en otro
a través de Handoff. Algunos de los nuevos entornos son
HealthKit que permite a los usuarios gestionar la información
relacionada con su salud, HomeKit para la comunicación y el
3 www.nytimes.com/2013/10/06/magazine/and-
entonces-steve-dijo-let-no-
ser-un-iphone.html
iOS
75
control de dispositivos en el hogar, y CloudKit que proporciona
un canal para mover datos entre una aplicación e iCloud.
Esto es un mero esbozo de todos los nuevos entornos y APIs
disponibles en iOS8. Para obtener una lista completa, lee
"What's New in iOS" en la iOS Developer Library de Apple4 .
Base Instalada de iOS
Además de vender más de 800 millones de dispositivos iOS,
un plus a favor de Apple es la alta tasa de adopción de cada
versión de iOS poco después de su lanzamiento. Esto permite
a los desarrolladores centrarse en la versión más reciente como
un objetivo de desarrollo y no se preocupan soportar una gran
cantidad de dispositivos en versiones anteriores, lo cual ha
sido un reto para los desarrolladores Android. Tres semanas
después del lanzamiento de iOS 8, Apple anunció que había
sido adoptado por el 48% de todos los dispositivos iOS5, con
un 46% en iOS7, dejando sólo un 6 % de los dispositivos con
una versión anterior de iOS. Esto contrasta con la versión de
KitKat, el sistema operativo de Android, que necesitó más de
un año para alcanzar el 34% de los dispositivos Android6.
Dispositivos Ejecutando iOS
En lugar de enumerar todos los dispositivos iOS que Apple ha
creado, aquí están los dispositivos actuales que soportan iOS
7 y 8, ya que son en los que un nuevo desarrollador debería
centrarse. iOS 8 es compatible con todos los dispositivos,
excepto el iPhone 4:
4 developer.apple.com/library/ios/releasenotes/General/WhatsNewIniOS/
Articles/iOS8
5 www.cnet.com/news/apples-ios-8-1-hits-monday-with-apple-pay-icloud-
photo-library
6 developer.android.com/about/dashboards
iOS
76
——
——
——
——
——
iPhone - 4, 4S, 5, 5C, 5S, 6, 6 Plus
iPod Touch - quinta generación, pantalla de 4”
iPad - segunda a cuarta generaciones, Air, Air 2
iPad Mini - primera generación, Mini 2, Mini 3
Apple TV (SDK sólo disponible para desarrolladores de
terceros)
—— Apple Watch
Encontrarás una lista detallada de los dispositivos iOS, sus
capacidades y las versiones de iOS compatibles en Wikipedia7.
Fundamentos de las Aplicaciones iOS
Como la mayoría de los sistemas operativos, la arquitectura
iOS se define por capas de tecnologías para permitir que
tu aplicación se ejecute en un dispositivo sin comunicarse
directamente a nivel de
hardware (ver figura).
Estas tecnologías se
uch
pueden pensar en capas o
a To
Coco
interfaces que están empaquetadas como entornos
ia
Med
que el desarrollador puede
ice
imoprtar a sus proyectos de
Serv
Core
iOS. El entorno principal se
OS
llama Cocoa Touch.
Core
7 en.wikipedia.org/wiki/List_of_iOS_devices
iOS
77
Cocoa Touch
Aunque OSX e iOS son diferentes sistemas operativos, comparten mucho en común en términos de entornos, herramientas
de desarrollo, y patrones de diseño.
Apple potenció y amplió el entorno principal para el
desarrollo de aplicaciones de OSX, Cocoa, y ha añadido soporte
para las características únicas de iOS como los gestos táctiles,
bautizándolo como Cocoa Touch. En Cocoa Touch se incluyen
entornos para construir interfaces, sensores como el acelerómetro y la gestión de redes y datos.
La App Store
El método principal para el despliegue de aplicaciones es
la App Store. Cada aplicación presentada es revisado por el
equipo de Apple para garantizar que se cumplen los requisitos
y normas de la compañía. Esta es una diferencia importante respecto a la tienda de Google Play para aplicaciones de Android,
pues Google no revisa las aplicaciones, pero se asegura de que
el código está firmado.
Apple es muy estricta respecto a cómo las aplicaciones de
terceros se ejecutan en iOS y utiliza la técnica de Sandbox
para garantizar la seguridad de las mismas y evitar que código
malicioso o con errores comprometa el sistema operativo, otras
aplicaciones o el dispositivo. Piensa en un Sandbox como una
barrera virtual alrededor de la aplicación que define a qué
los recursos puede acceder la aplicación. Por ejemplo, una
aplicación no tiene acceso a los directorios de archivos o recursos del sistema de otra aplicación que no sean accesible vía
entornos del SDK. Apple ha dado más control al usuario para
conceder acceso a sus datos (es decir, contactos, calendarios,
fotos) y localización GPS. Los desarrolladores deben prepararse
para los casos en que el usuario ha denegado su permiso.
iOS
78
Getting Started with iOS Development
Las aplicaciones móviles se clasifican comúnmente como "nativa" "mobile web" o "híbrida". En general, una aplicación iOS
nativa se construye utilizando la plataforma de Apple, mientras
que una aplicación híbrida utiliza una plataforma de terceros
como Xamarin, Appcelerator o Phone Gap. Estas plataformas
tratan de hacer posible el desarrollo para múltiples plataformas
móviles utilizando un único lenguaje y conjunto de herramientas. Aplicaciones web móviles suelen utilizar estándares HTML5
para crear algo que aparente ser una aplicación nativa, pero
ejecutable en el navegador web del dispositivo.
Junto con el SDK para desarrollar en iOS, Apple también
ofrece un entorno de desarrollo integrado (IDE) llamado
Xcode, para programar tanto para iOS como para OSX. Como
Xcode ha evolucionado, Apple se ha esforzado en proporcionar
todas las herramientas necesarias para escribir, probar, testear
el rendimiento y lanzar aplicaciones en la App Store, todo
directamente desde Xcode.
Xcode
Apple lanzó Xcode en 2003 para escribir aplicaciones en OSX.
La versión 3 de Xcode soportó el primer iPhone SDK en 2008, y
la versión más reciente es Xcode 6, lanzado con iOS 8 en septiembre del 2014. Xcode es un entorno de desarrollo, pruebas
de rendimiento y herramientas de medición utilizados durante
todo el ciclo de vida de desarrollo de aplicaciones. Interface
Builder es una herramienta de diseño visual utilizada para
diseñar y estructurar vistas de la aplicación sin necesidad de
escribir código y se integra con Xcode. También se proporciona
un simulador de iOS para permitir a los desarrolladores probar
sus aplicaciones en todos los dispositivos actuales sin tener
que instalar las aplicaciones en los dispositivos físicos.
iOS
79
Interface Builder
Una discusión acalorada entre los desarrolladores iOS es si es
mejor utilizar el Interface Builder para diseñar visualmente
el flujo de interfaz de usuario y la aplicación o llevar a cabo
todo de forma manual con el código. En el pasado, esto podía
ser una preferencia personal, pero con nuevos dispositivos
y tamaños de pantalla como el Apple Watch y iPhone 6,
Interface Builder resulta cada vez más necesario. Una de las
principales diferencias entre iOS y Android era precisamente
no tener que desarrollar para muchos tipos de dispositivos y
tamaños de pantalla. Sin embargo, esta frontera es cada vez
más borrosa con iOS8 soportando cinco tamaños diferentes
de pantalla. En lugar de soportar los 5 por separado en sus
aplicaciones, Interface Builder utiliza conceptos tales como
Auto-Layout y Adaptive Layout para ayudar al desarrollador a
ser compatible con todos los tamaños de pantalla. Con cada
nueva versión de Xcode, Interface Builder también ha mejorado
por lo que es evidente que Apple prefiere que los desarrolladores lo aprovechen; algo que un nuevo desarrollador iOS debe
tener en cuenta.
Objective C
Objective C tiene sus orígenes en el sistema operativo
NeXTSTEP, desarrollado en la década de 1980, de donde se
derivan OSX e iOS. Es un lenguaje de programación orientado
a objetos que agrega mensajería al lenguaje de programación
C8. De hecho, C y C ++ se pueden escribir junto a Objective C
y algunos de los entornos de iOS simplemente proporcionan
una API para C. Sin embargo, ha sido criticado por tener una
sintaxis peculiar con una gran cantidad de asteriscos, arrobas
y corchetes, que conduce a una curva de aprendizaje peor
8 en.wikipedia.org/wiki/Objective-C
iOS
80
para desarrolladores procedentes de lenguajes más modernos
como Java o C#. Han habido mejoras incrementales en los
últimos años, incluyendo la notación de puntos de los objetos,
bloques, literales y gestión de la memoria a través de Automatic Reference Counting (ARC). Pero la necesidad de utilizar
punteros, archivos de cabecera y las limitaciones y riesgos del
lenguaje C han hecho que Apple llegue a la conclusión de que
es necesario un lenguaje más moderno.
Swift
En julio de 2010 Chris Lattner, Director y Arquitecto Senior
en el Departamento de Herramientas de Desarrollo de Apple,
comenzó a implementar la estructura básica de un nuevo
lenguaje de programación cuya existencia sólo unas pocas
personas conocían. Se convirtió en un foco importante para el
grupo de herramientas para desarrolladores de Apple en julio
de 2013 y, casi un año después, Apple anunció en la World
Wide Developer Conference (WWDC) un nuevo lenguaje de
programación para iOS y OSX llamado Swift. Lattner admite
que Swift está influenciado por otros lenguajes como C #, Ruby,
Haskell, Python y muchos otros9
La razón de que Apple considerara necesario crear Swift fue
que la sintaxis de ese lenguaje moderno es más concisa y fácil
de aprender para los nuevos desarrolladores de iOS, incluyendo características nuevas como tipos inferidos de datos,
declaraciones de estructuras de datos, tuplas, cierres, punto
y coma opcionales y la ausencia de punteros. Se ha sugerido
que el apoyo de Apple para Swift es para asegurarse de que los
desarrolladores de iOS permanecen interesados en herramientas
de Apple y no estén tentados de usar otras plataformas que
soportan lenguajes modernos para el desarrollo de iOS.
9 nondot.org/sabre
iOS
81
Herramientas de Rendimiento y Testeo
Además de proporcionar las herramientas para desarrollar
aplicaciones iOS, Xcode también proporciona herramientas para
monitorizaje y pruebas de rendimiento.
Instrumentos
Instrumentos permite a los desarrolladores recoger datos
sobre el rendimiento y el comportamiento de sus aplicaciones
iOS durante un periodo de tiempo. Algunas de las plantillas
comunes ofrecidas permiten a los desarrolladores rastrear fugas
de memoria, o detectar "puntos calientes" en la aplicación
utilizando un depurador. El instrumento de automatización se
utiliza para automatizar las pruebas de interfaz de usuario de
tu aplicación iOS a través de scripts de prueba escritos por el
desarrollador. Estos scripts se ejecutan fuera de la aplicación
y simulan la interacción del usuario llamando a la API UI
Automation. Se pueden ejecutar en un dispositivo o simulador.
XC Test Framework
XCTest es el entorno de pruebas integrado con Xcode para
proporcionar pruebas extensas de una manera organizada y
eficiente. Por defecto, los nuevos proyectos creados en Xcode
utilizando una de las plantillas de aplicaciones añadirán un
objetivo de testeo para el proyecto. Esto permite al desarrollador escribir sus propias clases de pruebas unitarias, ejecutarlas
y analizar los resultados utilizando el navegador de pruebas,
todo desde Xcode.
Preparando el Entorno de Desarrollo
Después de crear una cuenta de desarrollador gratuita en
developer.apple.com, recibirás autorización para descargar
Xcode, código de ejemplo, videos y documentación. Los requisitos para que todas las herramientas Xcode son un sistema
operativo Mac X 10.8 (Mountain Lion) y el SDK de iOS. Esta
configuración permitirá la creación y prueba de aplicaciones
iOS
82
iOS que se puedan ejecutar en el simulador de iOS. Para enviar
aplicaciones a la App Store debes actualizar la cuenta de
desarrollador con un pago de 99 dólares al año, lo que también
te da acceso a las versiones betas de las futuras versiones de
Xcode e iOS.
Recursos de Aprendizaje
La popularidad de los desarrolladores del ecosistema de Apple
también incluye una multitud de recursos de aprendizaje en
diferentes formatos para ayudar a un nuevo desarrollador a
empezar a programar para iOS, y muchos de ellos son gratuitos.
Al tomar ventaja de estos recursos y otros como ellos la curva
de aprendizaje del dominio del avance de iOS se optimizará
considerablemente.
Websites y Blogs
—— Developer.Apple.com contiene guías de referencia y de
programación completas para aprender a desarrollar aplicaciones iOS y una referencia de clases de todas las clases en
entornos públicos. La página web de la biblioteca está organizada por tipos de recursos, Temas, Estructuras y ofrece
un buscador. Un documento importante para leer antes de
diseñar tu primera aplicación es el iOS Human Interface
Guidelines10. Ofrece recomendaciones para desarrolladores,
aprobadas por Apple, sobre el diseño de aplicaciones para
asegurar una experiencia de usuario positiva. La violación
de estas recomendaciones sería, con toda probabilidad,
10 developer.apple.com/library/ios/documentation/UserExperience/Conceptual/
MobileHIG
——
——
——
——
11 causa de que tu aplicación fuera rechazado por la App
Store durante su revisión para publicación.
RayWenderlich.com se ha convertido en un sitio esencial
de tutoriales iOS gratuitos escritos por la comunidad
de desarrolladores con el objetivo de ser "para tratar
los temas más interesantes y complejos para que todos
puedan aprender - y que todos podamos hacer aplicaciones
increíbles." El sitio se ha expandido y ofrecer libros de
programación y tutoriales en vídeo (con una suscripción
de pago). Suscríbete a su podcast semanal para las últimas
noticias relevantes para desarrolladores y entrevistas con
líderes de la comunidad de desarrolladores iOS.
iOS.devtools.me es una página web creada por Adam
Swinden que se actualiza diariamente con las mejores
herramientas para desarrolladores iOS y back-end de
servicios para ayudar en el desarrollo de aplicaciones. El
contenido está organizado por categorías (es decir, diseño,
gráficos, depuración...), por popularidad, y por novedad.
También se proporciona un boletín semanal de los últimos
conteidos en el sitio.
iOSDevWeekly.com es una revisión semanal de los mejores
recursos online de desarrollo iOS. David Verwer opera el
sitio y ofrece un boletín electrónico publicado todos los
viernes.
Galloway.me.uk, un blog del desarrollador iOS y autor Matt Galloway, afincado en Londres. Su "Effective
Objective-C 2.0"11 es muy recomendable si estás listo para
comenzar a aprender características avanzadas y quieres
consejos sobre ese lenguaje.
available via www.amazon.com/Effective-Objective-C-2-0-SpecificDevelopment/dp/0321917014
iOS
84
—— Merowing.info es un blog del desarrollador, formador y
conferenciante Krzysztog Zablocki, que ofrece tutoriales e
información sobre el desarrollo en iOS a raíz de su experiencia como consultor. También es activo en la comunidad
de código abierto, creando herramientas y librerías para
desarrolladores iOS.
—— AshFurrow.com es otro popular blogger y desarrollador
iOS, que orgullosamente plantea que el objetivo de su blog
es "explorar los puntos de dolor de iOS". Es autor de varios
libros de desarrollo de iOS, y un conferenciante activo
involucrado en la comunidad de código abierto.
Formación con Vídeos Online
Como miembro del Programa para Desarrolladores de Apple,
tienes acceso gratuito a todos los vídeos de la World Wide
Developer Conference, código fuente y presentaciones, disponibles para descargar y transmitir a través del sitio web o la
aplicación WWDC iOS de los últimos años. Por lo general, Apple
publica los videos el día después de la presentación, cuando
antes se necesitaban semanas para para poder acceder tras de
la conferencia anual.
Lynda.com actualmente ofrece más de 30 cursos en vídeo
vía subscripción sobre la iniciación al desarrollo iOS, incluidos
cursos para iOS8. El código fuente de los proyectos está
disponible para descargar en función del nivel de suscripción
elegido. También tienen una aplicación gratuita en la App
Store para ver vídeos en dispositivos iOS.
Un recurso gratuito popular para la formación de vídeo lo
ofrece la iTunes University como curso semestre, impartido por
la Universidad de Stanford, como iniciación al desarrollo para
iOS. Las conferencias se sumergen en profundidad en el lenguaje Objective-C y los entornos de iOS. Los alumnos pueden
iOS
85
incluso descargar los ejercicios de desarrollo. Los vídeos se ven
a través de iTunes o la aplicación iTunesU en dispositivos iOS
Por último, YouTube tiene un buen número de videos gratis
para el aprendizaje de desarrollo iOS, incluyendo a channel
created by Mohammad Azam12 que indexa varios tutoriales para
iOS.
Lista de Usuarios Avanzados de iOS en Twitter
Algunos de los más expertos desarrolladores de iOS están
activos en Twitter y aportan una gran comprensión sobre las
últimas tendencias y debates sobre el desarrollo de aplicaciones, además de ser de gran ayuda para aclarar dudas de
desarrolladores. Es recomendable seguir e interactuar con:
—— @rwenderlich - creador y Editor Jefe de RayWenderlich.com
—— @nicklockwood - autor de iOS Core Animation y especializado en entornos y aplicaciones de código abierto
—— @NatashaTheRobot - autor de la newsletter semanal sobre
Swift "This Week in Swift"13 y contribuidor a la corriente
de código abierto para iOS
—— @tapbot_paul - fundador de tapbots.com y desarrollador
de TweetBot App.
—— @InvalidName - autor de varios libros, conferenciante y
desarrollador
—— @casademora - autor, conferenciante y desarrollador
—— @jaredsinclair - desarrollador de Unread y otras aplicaciones
12 www.youtube.com/user/azamsharp
13 swiftnews.curated.co
iOS
86
—— @Cocoanetics - desarrollador, formador y conferenciante
—— @mattjgalloway - autor y desarrollador
—— @azamsharp - desarrollador, autor, podcaster y creador del
canal de YouTube AzamSharp
Consideraciones Finales
Es un momento emocionante para ser parte de la comunidad
de desarrolladores de iOS y esperamos que este capítulo sea
de utilidad en la búsqueda de un punto de partida. Decir que
las cosas cambian rápidamente es un eufemismo con todos
los nuevos dispositivos, los entornos y los servicios que se
han lanzado en los últimos años; pero no te dejes intimidar
por la velocidad a la que la tecnología se mueve dentro del
ecosistema de Apple. La mayor parte de los conceptos básicos
en el desarrollo de una aplicación estándar se aplican ahora
igual que como lo hicieron en las primeras versiones de iOS.
Por suerte, hay un sinnúmero de recursos disponibles para
empezar y hacer crecer tus habilidades de desarrollo en iOS, y
la mayoría de ellos son gratuitos.
Cosas a considerar al crear tu aplicación iOS "Hola Mundo",
y más allá:
—— ¿Comenzar con Objective-C o lenguaje Swift?
—— ¿Tiene más sentido utilizar Interface Builder para diseñar
la interfaz o es mejor hacerlo en código?
—— Aunque el uso servicios de back-end como CloudKit facilita
el desarrollo, ¿me estoy enclaustrando demasiado en la
arquitectura de Apple? ¿Podrían eso hacer que una versión
en Android no puediera acceder a ese mismo back-end?
—— ¿Cuáles son las desventajas del desarrollo de aplicaciones
iOS fuera de Xcode (utilizando herramientas multiplataiOS
87
forma)? Es la comunidad de usuarios lo suficientemente
grande como para encontrar respuestas a dudas? ¿Se
mantienen sus productos al día con las últimas versiones
de iOS?
—— ¿Cómo es el entorno actual para ser un desarrollador indie
para iOS a tiempo completo?
Las respuestas a estas preguntas están más allá del alcance
de este capítulo, pero los recursos referidos pueden ayudarte
a esquivar las dificultades en el desarrollo en iOS y ayudarte a
avanzar más rápido el camino de ser un experimentado desarrollador iOS. Buena suerte y bienvenido al club.
iOS
88
Java ME (J2ME)
El Ecosistema
J2ME (oficialmente “Java ME”) es la plataforma de aplicaciones
móviles más antigua que aún sigue estando ampliamente
utilizada. J2ME está diseñada para funcionar principalmente
en teléfonos de gama media, dominando este segmento
del mercado. De todas maneras, esos teléfonos se están
abandonando progresivamente en favor de smartphones con
especificaciones básicas que ofrecen mejor hardware, APIs y
opciones de monetización con un coste similar. Como consecuencia, la popularidad de J2ME ha caído significativamente
en los últimos años. Entonces, ¿por qué querrías desarrollar
para J2ME? Sobre todo por una razón: el alcance de mercado. A
pesar de que el 72% de todos los teléfonos móviles producidos
en el tercer trimestre del 2014 eran smartphones1, la mayoría
de los teléfonos móviles en uso siguen siendo de gama media.
Así que si tu modelo de negocio se basa en el acceso a tantos
clientes potenciales como sea posible, J2ME podría ser una
buena elección, especialmente si te diriges a mercados como
algunos países de África o la India.
Sin embargo, si su modelo de negocio se basa en las ventas
directas de tu aplicación, o si tu aplicación tiene que hacer uso
de las funciones y hardware más avanzados, las plataformas
para smartphones son la mejor opción.
1 counterpointresearch.com/marketmonitor2014q3
Java ME (J2ME)
90
Prerrequisitos
Para desarrollar una aplicación Java ME, necesitarás:
—— El Java SDK2 y un IDE de tu elección, por ejemplo Eclipse
Pulsar para Desarrolladores Móviles3, NetBeans4 con su
plug-in Java ME o IntelliJ5. Los principiantes habitualmente eligen NetBeans.
—— Un emulador, como Wireless Toolkit6, el Micro Emulator7 o
un SDK o emulador de un proveedor específico.
—— Dependiendo de tu configuración, puedes necesitar un
ofuscador como ProGuard8. Para desarrollos profesionales
considera utilizar una herramientas como Maven9 o Ant10.
—— Quizás te interese echarle un vistazo a J2ME Polish11, el
framework de código abierto para desarrollar tu aplicación
para varios dispositivos.
Completar la instalación y las instrucciones de configuración
va más allá del alcance de esta guía, consulta la documentación de las respectivas herramientas.
También puedes descargar y leer los JavaDocs para las
tecnologías y APIs más importantes: puedes descargar la
2 oracle.com/technetwork/java/javame/downloads
3 eclipse.org
4 netbeans.org
5 jetbrains.com
6 oracle.com/technetwork/java/download-135801.html
7 code.google.com/p/microemu
8 proguard.sourceforge.net
9 maven.apache.org
10 ant.apache.org
11 j2mepolish.org
Java ME (J2ME)
91
mayoría de ellos desde www.jcp.org. Para APIs específicas
del fabricante, la documentación suele estar disponible en la
página web del vendedor, (por ejemplo, la de Nokia Asha12).
Implementación
La plataforma Java ME es bastante sencilla: comprende la
Connected Limited Device Configuration (CLDC)13 y el Mobile
Internet Device Profile (MIDP)14, y ambos son bastante fáciles
de entender. Ellos forman la base de cualquier entorno J2ME
y proporcionan un conjunto estandarizado de capacidades
a todos los dispositivos J2ME. Dado que tanto CLDC y MIDP
fueron diseñados hace una década, el conjunto predeterminado
de las capacidades que ofrecen es rudimentario según los
estándares actuales.
Los fabricantes pueden complementar estas rudimentarias
capacidades mediante la implementación de diversas Java
Specification Requests opcionales (JSR), por ejemplo el acceso
a datos de usuario y el sistema de archivos (JSR 75), o soporte
a GPS (JSR 179). Para una lista completa de JSRs relacionadas
con el desarrollo de Java ME, visita el Java Community Process'
Lista por JCP Technology15.
Es muy importante saber que los JSR que desees utilizar
pueden no estar disponibles para todos los dispositivos, así
que las capacidades disponibles en un dispositivo pueden no
estar disponibles en otro.
12 developer.nokia.com/asha/documentation
13 java.sun.com/products/cldc/overview.html
14 java.sun.com/products/midp/overview.html
15 jcp.org/en/jsr/tech?listBy=1&listByType=platform
Java ME (J2ME)
92
Entorno de Ejecución
Las aplicaciones J2ME son llamados MIDlets. El ciclo de vida
de un MIDlet es muy simple: sólo se puede iniciar, pausar y
destruir. En la mayoría de dispositivos un MIDlet se pausa
automáticamente cuando se minimiza, no se puede ejecutar
en segundo plano. Los MIDlets también se pueden ejecutar
aisladamente unos de otros y están muy limitados en su interacción con el sistema operativo subyacente. Estas capacidades
están disponibles sólamente a traves de JSRs opcionales (por
ejemplo, JSR 75) y APIs específicas de cada proveedor.
Creando Interfaces de Usuario
Puedes crear la interfaz de usuario de tu aplicación de varias
formas:
1. Componente LCDUI de alto nivel: utilizas componentes
estándares de la interfaz, tales como formularios y listas
2. Componentes LCDUI de bajo nivel: controlas manualmente
cada píxel de tu interfaz utilizando funciones gráficas de
bajo nivel
3. SVG: dibujas la interfaz en SVG y usas las APIs de JSR
22616 o JSR 28717
Además, algunos fabricantes ofrecen extensiones adicionales
de interfaz de usuario. Por ejemplo, la última serie de teléfonos
de Nokia (Nokia Asha) utiliza su propio paradigma de interfaz18.
También existen herramientas que te pueden ayudar con el
desarrollo de interfaces de usuario:
16 www.jcp.org/en/jsr/detail?id=226
17 jcp.org/en/jsr/detail?id=287
18 developer.nokia.com/asha/learning/ui
Java ME (J2ME)
93
1. J2ME Polish19: Esta herramienta separa el diseño en CSS
y emplea HTML para la interfaz. Es compatible con el
framework de alto nivel LCDUI
2. LWUIT20: Framework de interfaz inspirado en Swing
3. Mewt21: Usa XML para definir la interfaz
La resolución de pantalla para Java ME varía desde los
176x208/220 hasta los 360x640, siendo la más popular
240x320. Gestionar tantas resoluciones diferentes puede ser
un reto, pero utilizando las herramientas mencionadas puedes
crear interfaces de usuario que escalen automáticamente. Crear
UIs personalizadas para cada resolución es posible, pero no
recomendable: consume gran cantidad de tiempo, es propenso
a errores y elevado en costes.
El material gráfico debe estar optimizado siempre. Una
herramienta gratuita excelente es PNGGauntlet22 .
Testeado
Debido a la fragmentación de los dispositivos, probar las
aplicaciones es vital. Ponlas a prueba en una combinación
de dispositivos tan pronto y tan a menudo como sea posible.
Algunos emuladores son bastante buenos, pero hay cosas que
necesitan ser validadas en dispositivos reales. Fabricantes
como Nokia23 y Samsung24 ofrecen acceso remoto de pago y a
veces gratuito a algunos dispositivos seleccionados.
19 j2mepolish.org
20 lwuit.java.net/
21 mewt.sourceforge.net
22 pnggauntlet.com pnggauntlet.com
23 forum.nokia.com/rda
24 developer.samsung.com
Java ME (J2ME)
94
Testeado automático
Hay varios entornos de pruebas unitarias para Java ME,
incluyendo J2MEUnit25, MoMEUnit26 y CLDC Unit27; herramientas avanzadas como JInjector28 aportan control sobre el código
y validación de la interfaz de usuario.
Portar
En su esencia, Java ME es un conjunto de normas y especificaciones que, a veces, los comercializadores interpretan de
manera diversa, lo cual produce todo tipo de errores y comportamientos fuera del estándar. En las siguientes secciones
describimos diferentes estrategias para portar tus aplicaciones
a diferentes dispositivos y plataformas Java ME.
Mínimo Común Denominador
Puedes prevenir muchos problemas de portabilidad si limitas la
funcionalidad de tu aplicación al mínimo común denominador.
Esto normalmente implica CLDC 1.0 y MIDP 1.0, o CLDC 1.1 y
MIDP 2.0 si sólo vas a publicar tu aplicación en los países/
regiones más desarrollados.
Aunque ésta aproximación es adecuada para aplicaciones
sencillas, para aquellas complejas no resulta el camino
adecuado a seguir. En tal caso, es posible que quieras considerar el uso de Java Technology for the Wireless Industry (JTWI,
JSR 185) o la Mobile Service Architecture (MSA, JSR 248) como
base, pero deberás ser consciente de que éstas cuentan con
menor soporte en el mercado.
25 j2meunit.sourceforge.net
26 momeunit.sourceforge.net
27 snapshot.pyx4me.com/pyx4me-cldcunit
28 www.code.google.com/p/jinjector
Java ME (J2ME)
95
Migrar Frameworks
Los entornos enfocados a portabilidad pueden ayudarte a
lidiar con la fragmentación, adaptando de forma automática
tu aplicación a diferentes dispositivos y plataformas. Para
conseguir esto, ofrecen librerías cliente en tiempo de ejecución
y herramientas en tiempo de compilación (tales como cross
compilers) muy fiables.
Los buenos entornos para portar te permiten usar código
específico de plataformas y dispositivos en tus proyectos. En
otras palabras: un buen entorno no oculta la fragmentación de
dispositivos, sino que la hace más manejable.
Para Java ME, una de tus opciones es J2ME Polish de
Enough Software29 (disponible bajo licencias comerciales y GPL
Open Source). Portar desde C++ a Java ME también es posible
con la herramienta de código abierto MoSync SDK30.
Para obtener más información acerca del desarrollo multiplataforma y las herramientas disponibles, consulta el capítulo
"Hacia Multiplataforma".
Firmado
El estándar de Java para dispositivos móviles diferencia entre
las aplicaciones que han sido firmadas y las que no. Algunas
funciones de los teléfonos están disponibles sólo para las
aplicaciones de confianza.
Las aplicaciones firmadas por el fabricante de un dispositivo
o un oeprador de telefonía disfrutan del nivel más alto de seguridad y pueden acceder a todas las APIs de Java disponibles
en el teléfono.
29 http://j2mepolish.org j2mepolish.org
30 http://mosync.com mosync.com
Java ME (J2ME)
96
Las aplicaciones firmadas por JavaVerified31, Verisign32 o
Thawte33 están en el nivel más bajo de seguridad, y aquellas
no firmadas están en el nivel más bajo.
Qué funcionalidades quedan afectadas y qué ocurre si la
aplicación no está firmada depende principalmente de su
implementación; más aún, no todos los teléfonos tienen todos
los certificados raíz necesarios. El resultado es un buen lío, así
que considera firmar tu aplicación sólo cuando sea necesario.
En algunos casos una tienda de aplicaciones puede ofrecerse a
firmar por ti, como es el caso de Nokia Store.
Otra opción es considerar el uso de un proveedor de
servicios de certificación y pruebas, dejando la parte compleja
para ellos. Intertek34 es probablemente el mayor proveedor de
este tipo.
Distribución
Las tiendas de aplicaciones son probablemente la forma más
eficiente de distribuir tus aplicaciones. Algunas de las tiendas
más eficaces son:
—— Mobile Rated35 es un proveedor de aplicaciones no
dependiente de las operadoras.
—— GetJar36 es uno de los distribuidores más antiguos de
aplicaciones móviles, y no sólo Java.
31 javaverified.com
32 verisign.com
33 thawte.com
34 www.intertek.com/wireless-mobile
35 mobilerated.com
36 getjar.com
Java ME (J2ME)
97
—— Opera Store37, reemplazará la tienda de Nokia, que será
cerrada durante el 2015. La migración del contenido
comenzó en Enero.
—— Las operadoras también participan, tales como Orange38 y
O239.
Se puede encontrar una lista de las tiendas de aplicaciones
disponibles (no sólo las que venden aplicaciones J2ME) en el
WIP App Store Catalogue40. Véase también el capítulo especial
sobre tiendas de aplicaciones de esta guía para obtener más
información.
Aprende Más
Si quieres aprender más sobre el desarrollo en Java ME, a
continuación tienes algunos recursos que te pueden ayudar.
Online
Como Java ME es una de las plataformas móviles más antiguas
que todavía se utilizan, es fácil encontrar recursos relacionados, por ejemplo:
—— Tutorialess de sitios tales como J2ME Salsa41.
—— Archivos de recursos como billday.com/javame
37 apps.opera.com
38 www.orangepartner.com/distribute
39 mobileapps.o2online.de
40 www.wipconnector.com/appstores/
41 j2mesalsa.com
Java ME (J2ME)
98
Libros
Con el paso de los años se han llegado a escribir un buen
número de libros de Java ME, por ejemplo:
—— Beginning J2ME: From Novice to Professional por
Jonathan Knudsen y Sing Li
—— Pro Java Me Apps: Building Commercial Quality Java ME
Apps por Ovidiu Iliescu
—— Pro J2ME Polish: Open Source Wireless Java Tools Suite
por Robert Virkus, sobre el desarrollo con J2ME Polish
—— LWUIT 1.1 for Java ME Developers por Biswajit Sarkar,
sobre el desarrollo con LWUIT
Desafortunadamente, debido a la decreciente popularidad
de Java ME, muy pocos libros se han escrito sobre ella en los
últimos años.
Java ME (J2ME)
99
Tizen
El Ecosistema
Tizen es un sistema operativo de código abierto basado en
Linux y diseñado para ser ejecutado en smartphones, netbooks,
smartwatches, sistemas de infotenimiento en vehículos (IVI)
y otros dispositivos inteligentes. Se le puede considerar como
el sucesor del Meego de Nokia /Intel, y del LiMo de Samsung;
sistemas operativos anteriores también basados en Linux.
Samsung también aprovechó Tizen para fusionar en él los
restos del abandonado bada OS, aportando un entorno para
aplicaciones nativas. Tizen, como marca de la Fundación Linux,
fue anunciado por la Asociación Tizen en Diciembre del 2011,
y la versión 1.0 (alias 'Larkspur') fue lanzada en Abril del 2012.
Desde entonces, el sistema ha estado en desarrollo continuo,
con Tizen 3.0 anunciado para el 2015. Los principales impulsores de Tizen son Samsung para la rama móvil e Intel para el
enfoque IVI. Algunas otras empresas participantes son Fujitsu,
NTT Docomo, Huawei, Vodafone y Orange.
El primer dispositivo Tizen que ha sido comercializado es
la cámara NX300M de Samsung. En el Mobile World Congress
de febrero del 2014 Samsung lanzó nuevas versiones de sus
smartwatches que utilizaban Tizen: Samsung Gear 2 y Gear
2 Neo. Casi un año más tarde, el primer smartphone Tizen se
comercializó finalmente en la India y Samsung anunció que
todos sus televisores inteligentes que se lancen durante el
2015 utilizarán Tizen.
Tizen
101
Desarrollo
El principal objetivo de Tizen es ser un sistema operativo
estándar para aplicaciones escritas en HTML5, utilizado por
el navegador web de Tizen, actualmente considerado la mejor
implementación de HTML5 en un dispositivo móvil. Tizen también es compatible con aplicaciones nativas en C++, permitiéndote sacarle el máximo partido al hardware de los dispositivos.
Ambos caminos de desarrollo están soportados por una gran
variedad de frameworks y librerías populares, como JQuery, que
suponen un buen punto de inicio para desarrollar tu primera
aplicación Tizen.
Los desarrolladores de aplicaciones web pueden utilizar una
lista completa de funcionaldiades HTML5, APIs de dispositivos
Tizen y librerías (como JQuery y JQuery Mobile) para crear
aplicaciones atractivas. Si ya has creado web apps con para
bada, podrás usar la mayor parte del código en Tizen.
El SDK oficial de Tizen contiene un IDE basado en Eclipse
que puede ser utilizado tanto para aplicaciones web como
nativas. Los desarrolladores veteranos de bada reconocerán las
bases de éste SDK: el SDK de Samsung bada. También tienes un
editor de código, diseñador de interfaces y un emulador, todo
listo para usar. Para las aplicaciones web también puedes usar
el XDK de Intel, si lo prefieres.
Cambios en la versión 2.3
Después de casi un año estancado, Tizen 2.3 fue lanzado en
noviembre de 2014 y trajo diferencias sustanciales, especialmente para los desarrolladores de aplicaciones nativas. Hasta
entonces, los desarrolladores de aplicaciones construían aplicaciones en un marco de C ++ llamado OSP que ya fue utilizado
por Samsung para su bada smartphones. Esto hacía que fuera
fácil para los desarrolladores de bada portar sus aplicaciones
Tizen
102
a Tizen. En la versión 2.3 OSP ha desaparecido y los desarrolladores tienen que utilizar EFL para aplicaciones nativas. Hay
rumores de que pronto se lanzará una librería de compatibilidad con OSP con el fin de permitir que las aplicaciones basadas
en OSP funcionen en Tizen 2.3 y posteriores versiones.
Uno de los principales cambios en el desarrollo de aplicaciones web en la versión 2.3 es el uso de UTA (Tizen Advanced
UI) en vez de jQuery (que todavía se puede utilizar se desea)
y la posibilidad de que crear aplicaciones para smartphones y
wearables con un solo SDK.
Testeando tu aplicación
Las mejoras pruebas son aquellas que realizan en un dispositivo. En el momento de escribir estas líneas, tu única
opción es conseguir uno de los pocos dispositivos de pruebas
para Tizen de Samsung, el RD-PQ o el RD-210, pero es difícil
conseguir tales dispositivos por lo que probablemente tengas
que usar los simuladores y emuladores incluidos en el Tizen
SDK mientras esperas al lanzamiento de los teléfonos Tizen en
el mercado de masas. El simulador ofrece una aproximación
sencilla al testeo de aplicaciones web, pero es limitado en
funcionalidad y no puede ser comparado a las pruebas que se
pueden realizar en un dispositivo real. El emulador está mucho
más cerca de la experiencia real con el dispositivo y puede ser
usado para testear aplicaciones nativas. Es una máquina virtual
basada en QEMU y ejecutando una imagen de una instalación
Tizen real.
Tizen
103
Para aquellos casos en los que un dispositivo real sea
necesario, puedes usar el Samsung Remote Test Lab1. Los
laboratorios están situados por todo el mundo y te dan la
posibilidad de conectar de manera remota a dispositivos desde
tu Tizen SDK.
Distribución
Las aplicaciones para Tizen se distribuyen en archivos de
paquetes Tizen (*.tpk) y archivos de widgets (*.wgt) creados
con el Tizen SDK. Los archivos son muy similares a los *.apk
de Android y pueden ser instalados en un dispositivo Tizen
simplemente abriéndolos en el explorador de archivos del
dispositivo. El punto principal de distribución de aplicaciones
será la TizenStore2 .En contraste respecto a la Apple Appstore,
Google Play Store y Microsoft Windows Phone Market, no
necesitarás realizar ningún pago para convertirte en desarrollador registrado en la Seller Office3. Todas las aplicaciones propuestas para venta serán revisadas de acuerdo a las directrices
de la Tizen Store. Normalmente, la certificación lleva entre 2 y
3 días, dependiendo de la complejidad de la aplicación.
Aprende Más
Como desarrollador, tu primera parada debería ser developer.
tizen.org. Ese sitio aloja toda la documentación, herramientas
y servicios de soporte para el desarrollo en Tizen. También
podrás encontrar un foro con una comunidad de desarrolladores
de aplicaciones muy activa y amigable.
1 developer.samsung.com/remotetestlab
2 www.tizenstore.com
3 seller.tizenstore.com
Tizen
104
Windows
Con Windows 10, tanto las antiguas plataformas Windows
Phone y Windows PC van a converger en un grado aún mayor,
junto con una tienda de aplicaciones, las API para aplicaciones
y herramientas universales universales. Con Windows 10 este
modelo no sólo se extiende a teléfonos, tabletas y PCs, sino
que también será capaz de incluir televisores a través de la
Xbox Uno y dispositivos incrustados. Windows 10 ya está
disponible como versión preliminar para desarrolladores y
saldrá a la venta a mediados de 2015.
El Ecosistema
Microsoft cambió el ecosistema en el año 2014 al comprar la
división Devices and Services de Nokia, incluyendo la línea
de teléfonos Lumia. Microsoft también eliminó los costes de
licencia asociados con la producción de teléfonos y pequeñas
tabletas de Windows. Como resultado, se ha anunciado una
nueva gama de dispositivos que serán lanzados al mercado
por los comercializadores regionales. Es aún una incógnita
si eso mejorará de manera sustancial la cuota de mercado de
Windows. En 2014 la mejora fue mucho menor de lo que se
esperaba, pero Microsoft fue capaz de mantener su segundo
puesto después de Android en algunos países, entre ellos Italia
y Argentina1. Windows también logró reducir la brecha en
las aplicaciones; para agosto de 2014, había más de 300.000
aplicaciones disponibles2 .
1 kantarworldpanel.com/global/smartphone-os-market-share
2 windowscentral.com/there-are-now-over-300000-windows-phone-apps-available
Windows
106
Algunos de los comercializadores de Windows Phone son:
Microsoft, Samsung, Celkon Mobiles, Micromax, Lava International, Miia, Highscreen, Kazam, Blue, NGM, Yezz, Allview,
Archos, HTC y otros.
Lenguages y Herramientas
El desarrollo para Windows se realiza en C/C++, C# o VB.NET
utilizando Microsoft Visual Studio IDE3. Las aplicaciones se
crean, habitualmente, utilizando la plataforma WinRT XAML,
principalmente en aquellas basadas en eventos, y DirectX,
para juegos basados en bucles de juego. Ambas tecnologías
pueden ser utilizadas en una misma aplicación. Además,
puedes crear aplicaciones HTML5 y JavaScript utilizando las
correspondientes WinRT JavaScript APIs, aunque el desarrollo
web no están incluido en este capítulo. Por último pero no
menos importante, puedes crear aplicaciones Windows Phone
sencillas sin programar utilizando Windows Phone App Studio4 o
la aplicación Project Siena5.
Gracias a las bibliotecas de clases portables (PCL) y los
componentes Windows Runtime puedes usar el lenguaje e
interfaz que mejor encaje con cada módulo de tu aplicación.
Si quieres utilizar DirectX con C# deberás usar SharpDX.org,
anxframework.codeplex.com o una librería para juegos basadas
en las mismas, por ejemplo monogame.codeplex.com.
Aunque el escenario más habitual será emplear XAML
para aplicaciones y DirectX para juegos, también puedes
crear juegos en XAML y aplicaciones DirectX, dependiendo de
tus necesidades, así como incluir Direct3D en tu aplicación
3 visualstudio.com
4 apps.windowsstore.com
5 microsoft.com/projectsiena
Windows
107
XAML; podrías utilizarlo para mostrar un modelo en 3D en una
aplicación XAML, o crear atractivos menús con Silverlight en un
juego creado en DirectX.
Históricamente, las aplicaciones para Windows Phone
estaban creadas con Silverlight, un modelo de aplicaciones muy
similar a la moderna aproximación XAML. Aunque las aplicaciones basadas en WinRT son el futuro, Silverlight aún ofrece
mayores opciones de integración con Windows Phone 8.1.
Paradigma de Diseño de Metro
Microsoft ha liderado el paradigma de diseño "flat", que
también ha influenciado fuertemente a Android e iOS. Su
característica más obvia es su interfaz única y fácil de usar,
que se centra en tipografía y contenido. Este paradigma de
interfaz de usuario llamado Metro, o Modern UI, o Microsoft
Design Language6 se ha extendido a la Xbox y Windows 8, y
contiene los siguientes principios:
—— Content not Chrome elimina adornos innecesarios y
permite que el contenido sea en sí mismo el foco principal
principal de atención. También debes abstenerte de utilizar
todos los píxeles disponibles, y tener en cuenta que los
espacios en blanco dan equilibrio y énfasis al contenido.
—— Alive in motion añade profundidad a un diseño plano con
animaciones ricas.
—— Typography is beautiful da protagonismo al uso de
fuentes en Metro. La fuente Segoe de Windows Phone
inspirada en Helvetica encaja con el enfoque moderno de
la interfaz.
—— Authentically digital el diseño no trata de imitar objetos
del mundo real, sino que se centra en las interacciones
disponibles para soluciones digitales.
6 wikipedia.org/wiki/Metro_(design_language)
108
Aunque Microsoft abandonó el nombre 'Metro' para su
paradigma de diseño debido a problemas legales, los nombres
alternativos como 'Modern UI' no han conseguido sustituirlo.
Deberás aceptar los modernos principios de diseño Metro en tu
aplicación, sobre todo cuando portes aplicaciones ya existentes. Los diseñadores encontrarán inspiración e información
en design.windows.com así como en design.windows.com.
Un aspecto importante de la experiencia de usuario son los
“live tiles”, pequeños widgets que residen en la pantalla de
inicio. Puedes actualizarlos mediante programación o incluso
remotamente mediante notificaciones push.
Integrarse en la Plataforma
La plataforma Windows Phone ofrece numerosas funcionalidades, incluida la pantalla de bloqueo, la cartera móvil, y la
ubicación. En el hardware se incluyen sensores, Bluetooth,
y la detección de proximidad; y las aplicaciones pueden
utilizar extensiones para incrustar la aplicación en la experiencia de Windows Phone. Obtendrás más información en
msdn.microsoft.com/en-us/library/windows/apps/hh202969.
Las aplicaciones soportan las 'live tiles', mostrando
información de manera arbitraria que puede ser actualizada
vía mensajes push, y puedes usar aplicaciones de bloqueo de
pantalla que controla la imagen en pantalla e integra control
por voz tanto en Windows Phone como en Windows RT.
En las aplicaciones Windows Phone Silverlight puedes crear
extensiones para la cámara, llamadas 'lenses'7 o integrar la her-
7 msdn.microsoft.com/library/windowsphone/develop/jj206990
Windows
109
ramienta de búsqueda8. Podrás encontrar información detallada
en la documentación de integración9.
En las aplicaciones universales hay contratos10 que ofrecen
funcionalidades similares: puedes gestionar extensiones de
archivo específicas, compartir contenidos, etc.
MVVM
Para los desarrolladores de aplicaciones venidos de otras
plataformas, el concepto de enlace de datos de XAML será una
novedad. Para cada página debe haber un modelo de vista que
incluya los datos de esa página. La vista en sí sólo describe
la interfaz de usuario, mientras que los datos que se muestran
proceden del modelo de vista. Las clases del modelo contienen
los datos en sí. Éste concepto de un Modelo, una Vista y un
Modelo de Vista (MVVM) facilita considerablemente el desarrollo de aplicaciones complejas.
Motores de Juego
Gracias a las capacidades de aplicaciones nativas existen
varios motores de juego disponibles para Windows Phone 8 y
Windows RT, por ejemplo:
—— Cocos2d-x11
—— Havok12
8 msdn.microsoft.com/library/windowsphone/develop/hh202957
9 msdn.microsoft.com/library/windowsphone/develop/hh202969
10 msdn.microsoft.com/library/windows/apps/hh464906
11 cocos2d-x.org/projects/cocos2d-x/wiki/Windows_Phone_8_Environment_Setup
12 havok.com/products/havok-windows-ecosystem
Windows
110
—— Marmalade13
—— OGRE14
—— Unity 3D15
Servicios
Hay disponibles notificaciones push16 que pueden actualizar
los live tiles de tu aplicación. También puedes considerar el
uso del espacio gratuito en nube OneDrive y la integración
con otros servicios de Windows Live17 para tu aplicación. Hay
disponibles también muchos servicios de terceros18.
Multitarea y Ciclo de Vida de la Aplicación
Windows tiene una capacidad limitada de multitarea que
suspende las aplicaciones en segundo plano y permite el
cambio rápido entre aplicaciones. Los únicos procesos que
pueden ejecutarse en segundo plano, después de que una
aplicación se haya abandonado, son la reproducción de audio,
el seguimiento de la ubicación y la transferencia de archivos.
Las aplicaciones también pueden programar la ejecución de
código arbitrario en segundo plano en un intervalo (código que
se conoce como agentes en segundo plano o Background Task).
A dichas tareas se les permite el uso limitado de los recursos
y pueden ser detenidos o ignorados si el sistema operativo
determina que el teléfono debe conservar los recursos.
Las aplicaciones suspendidas en segundo plano pueden ser
13 madewithmarmalade.com/marmaladesdk/features/take-apps-windows-phone-8
14 ogre3d.org/2012/10/30/ogre-now-supports-windows-phone-8
15 unity3d.com/pages/windows
16 msdn.microsoft.com/library/windows/apps/xaml/hh913756
17 msdn.microsoft.com/live
18 dev.windowsphone.com/en-us/featured/partners
Windows
111
cerradas automáticamente si el sistema operativo determina
que los recursos son necesarios en otro lugar.
Para crear la apariencia de una aplicación que nunca se
cerró, Windows tiene un ciclo de vida de aplicaciones bien
documentado19.
Testeo y Analíticas
Microsoft ofrece una excelente revisión del testeo de una
aplicación Windows Phone 820 incluyendo tests a lo largo del
procese de desarrollo. Las pruebas unitarias están integradas
en Visual Studio, simplemente creando un proyecto nuevo de
prueba unitaria y enlazándolo a los proyectos que te gustaría
testear. MSDN incluye buena documentación del proceso21
Para desarrollos basados en comportamiento está disponible
el Windows Phone Test Framework por Expensify22 .
Hay varias opciones para los desarrolladores que deseen
recopilar datos y analíticas en tiempo de ejecución. Flurry23 y
Google Analytics24 proporcionan herramientas de análisis y servicios compatibles con Windows. Los desarrolladores también
pueden utilizar el servicio de Microsoft Application Insights
service25. También hay disponibles sólidas herramientas de
monitorizado de rendimiento en Visual Studio para controlarlo
durante la fase de desarrollo.
19 msdn.microsoft.com/library/windows/apps/xaml/hh464925
20 msdn.microsoft.com/en-us/library/windows/apps/jj247547(v=vs.105).aspx
21 msdn.microsoft.com/en-us/library/windows/apps/dn168930(v=vs.105).aspx
22 github.com/Expensify/WindowsPhoneTestFramework/
23 flurry.com/flurry-analytics.html
24 googleanalyticssdk.codeplex.com
25 azure.microsoft.com/documentation/articles/app-insights-get-started
Windows
112
Distribución y Monetización
Distribuye tus aplicaciones a través de Windows Phone Store.
Aunque el contenido de la aplicación es revisado y restringido
de una manera similar a la App Store de Apple, Microsoft proporciona directrices más claras para la solicitud de publicación,
disponibles en el Dev Center26. Aunque las herramientas de
desarrollo se proporcionan de forma gratuita, se requiere
una cuenta de pago para implementar una aplicación en
dispositivos y distribuirla en Windows Store. Actualmente, una
cuenta cuesta $19 (USD) en un pago único para desarrolladores
en solitario, y $99 (USD) al año para empresas. Esas tarifas
no se aplican a los estudiantes miembros del DreamSpark27.
Windows Store también ofrece una distribución de betas por
tiempo limitado y ofrece un hub corporativo para empresas28.
Puedes utilizar el Windows Phone Store Test Kit29 para probar
la aplicación en local antes de enviarla para su publicación.
Hay 128 tiendas regionales de Windows Phone App en 50
idiomas30, así que puedes tener un alcance global.
Los beneficios estandar para el desarrollador son del 70%,
incrementable al 80% si tu aplicación supera los $25.000
(USD) en ventas. La Windows Store está disponible en más de
200 países y regiones y más de 100 idiomas, así que tienes un
alcance global. Las aplicaciones son gestionadas por el usuario,
no por el dispositivo, así que el usuario puede utilizarlas en
una gran variedad de plataformas, por ejemplo un ordenador
26 dev.windows.com
27 www.dreamspark.com
28 msdn.microsoft.com/library/windowsphone/develop/jj206943
29 msdn.microsoft.com/library/windowsphone/develop/hh394032
30 kb.tethras.com/localizing-your-windows-phone-8-app/windows-phonestores-and-supported-languages
Windows
113
de sobremesa o un tablet. Si creas una aplicación universal,
puedes elegir si sólo necesitas que se adquiera una vez para
todos los dispositivos, o una vez por cada dispositivo diferente
del usuario.
Para aplicaciones de pago, el entorno Windows Phone ofrece
la posibilidad de determinar si la aplicación está en 'modo
de prueba' o no, y en consecuencia limitar su uso. Microsoft
recomienda específicamente evitar la limitación por tiempo en
las versiones de prueba (por ejemplo, una versión de prueba
de treinta minutos) y, en cambio, sugiere limitar las funciones
disponibles31.
Para la monetización basada en anuncios hay varias
opciones. Microsoft tiene su propio Microsoft Advertising Ad
Control32 (actualmente disponible en 18 países), mientras
que Nokia33, Smaato34, Inneractive35, AdDuplex36 y Google37
ofrecen soluciones alternativas de publicidad. También puedes
usar el servicio de Ad Mediation38 para seleccionar diferentes
proveedores de publicidad según del precio máximo estipulado.
Para obtener más información acerca de la monetización,
consulta el capítulo sobre el tema en esta guía.
31 msdn.microsoft.com/library/windowsphone/develop/ff967558
32 advertising.microsoft.com/mobile-apps
33 www.developer.nokia.com/Distribute/NAX
34 smaato.com
35 inner-active.com
36 adduplex.com
37 developers.google.com/mobile-ads-sdk/
38 msdn.microsoft.com/library/windows/apps/xaml/dn864359
Windows
114
Aprende Más
Visita dev.windows.com para noticias, herramientas de desarrollo y foros.
El equipo de desarrollo publica mensajes en su blog
blogs.windows.com/buildingapps o en su cuenta de Twitter
@wpdev. Para encontrar una gran colección de recursos para
desarrolladores y diseñadores, visita windowsphonegeek.com y
reddit.com/r/wpdev.
También puedes extender componentes y comportamientos con varias herramientas tanto comerciales como de código abierto. Algunas populares son
telerik.com, coding4fun.codeplex.com, cimbalino.org,
mvvmlight.codeplex.com y github.com/MvvmCross/MvvmCross.
Para la inspección del árbol visual, bindings y propiedades
de las interfaces de usuario basados en XAML en tiempo de
ejecución, está disponible xamlspy.com.
Microsoft provee una serie de videos para los recién iniciado
en el desarrollo de aplicaciones Windows Phone 8.139
Asimismo, encontrarás código de ejemplo en code.
msdn.microsoft.com/windowsapps, en varios proyectos de codeplex.com y en ejemplos disponibles en
msdn.microsoft.com/library/windows/apps/br211375.
La hoja de ruta para desarrolladores de apliaciones en
msdn.microsoft.com/library/windows/apps/xaml/br229583
ofrece una buena visión global de estrategia, diseño y desarrollo de aplicaciones para Windows.
Si estás portando una aplicación desde iOS
o Android, puedes encontrar más ayuda en
msdn.microsoft.com/library/windows/apps/dn751495.
39 microsoftvirtualacademy.com/training-courses/windows-phone-8-1development-for-absolute-beginners
Windows
115
Hacia Multiplataforma
Tantas plataformas y tan poco tiempo: Esa frase define perfectamente la situación que tenemos en el mundo móvil. Hay
plataformas más que suficientes para elegir: Android, BlackBerry 10, Firefox OS, iOS, Tizen y Windows están, o probablemente
estarán, entre algunas de las plataformas smartphone y tablets
más importante, mientras Brew MP y Java ME dominan en el
ámbito de los teléfonos de gama media (plataformas listadas
no por importancia, sino por orden alfabético).
La mayoría de los promotores de aplicaciones, citando cierta
famosa letra de una canción de Queen, le dirán al desarrollador: "Lo quiero todo, lo quiero todo, lo quiero todo... ¡y lo
quiero ahora!", así que la elección puede muy bien estar entre
invertir en múltiples equipos paralelos de desarrollo, o adoptar
una estrategia multiplataforma.
Diferencias Clave Entre Plataformas
Móviles
Si deseas hacer disponible tu aplicación a través de diferentes
plataformas, tienes que superar algunos obstáculos. Ciertos
retos son más fáciles de superar que otros:
Lenguajes de Programación
A estas alturas ya te habrás dado cuenta de que las plataformas
móviles publican sus propios SDK, lo que te permite desarrollar
aplicaciones en los lenguajes de programación soportados por
las plataformas.
Sin embargo, estos lenguajes tienden a pertenecer a alguna
de las pocas familias de lenguajes raíz. La tabla siguiente
Hacia Multiplataforma
117
ofrece una descripción general de éstos y de las plataformas
que los soportan:
Lenguaje
Ciudadano de 1a Clase1 Ciudadano de 2a Clase2
ActionScript
BlackBerry 10,
BlackBerry PlayBook OS
(QNX)
ninguno
C, C++
BlackBerry 10, Brew MP,
Sailfish OS, Windows 10
Android (parcialmente,
utilizando el NDK), iOS
(parcialmente)
C#
Windows 10
ninguno
Java
Android, BlackBerry,
dispositivos Java ME
ninguno
JavaScript
BlackBerry PlayBook
OS, Firefox OS, Tizen,
Windows 10
BlackBerry (WebWorks),
Nokia (WRT)
Objective-C
iOS
ninguno
1
Soporte nativo en la plataforma, ya sea el idioma primario o uno específico
para la creación de aplicaciones
2
Se admite como opción en la plataforma, se puede utilizar como alternativa
al lenguaje nativo, pero no proporciona el mismo nivel de acceso a
características de la plataforma
Los frameworks multiplataforma pueden solventar las
barreras de lenguaje de diferentes maneras:
—— Tecnologías Web: Este enfoque se basa en que la
mayoría de las plataformas ofrecen soporte directo a las
tecnologías web a través de ‘webviews’ integradas en las
aplicaciones nativas. Junto con HTML y CSS, esta aproximación también admite JavaScript.
Hacia Multiplataforma
118
—— Interpretación: El entorno ofrece un motor para cada
plataforma que interpreta un lenguaje específico o un
framework común. Por ejemplo, una opción popular para el
desarrollo de juegos es Lua scripting.
—— Compilación Cruzada: Es el santo grial de los frameworks
multiplataforma, pero también la solución técnica más
compleja. Permite escribir una aplicación en un lenguaje
y transcribirla al lenguaje nativo de cada plataforma,
obteniendo velocidad de ejecución nativa.
La mayoría de los frameworks también proporcionan un
conjunto de APIs multiplataforma que permiten acceder de un
modo común a determinadas funciones del dispositivo o plataforma, como por ejemplo a las capacidades de geolocalización.
Para funciones tales como mensajería SMS también puedes usar
APIs de red que son independientes del dispositivo1.
Versiones de SO
Las plataformas evolucionan y, tarde o temprano, ofrecerán
características específicas de versión que desearás aprovechar.
Esto añade otra capa de complejidad a tu aplicación y también
un desafío para las herramientas multiplataforma: a veces se
quedan atrás cuando una nueva versión del sistema operativo
es publicada.
Interfaz de Usuario y UX
Un obstáculo difícil para el enfoque de multiplataforma se
origina por los diferentes patrones de interfaz de usuario y
de experiencia de usuario que prevalecen en las plataformas
individuales.
Es relativamente fácil crear una interfaz de usuario agrad1 www.developergarden.com/apis/
Hacia Multiplataforma
119
able que funcione de la misma manera en varias plataformas.
Este enfoque, sin embargo, puede olvidar sutilezas importantes
que sólo están disponibles en una única plataforma y que
podrían mejorar drásticamente la experiencia de usuario. También ignorará las diferencias respecto a la filosofía de diseño
de las plataformas: si bien muchas plataformas se esfuerza
nen conseguir un diseño realista en el que las aplicaciones
se parecen a sus contrapartes del mundo real, la interfaz
Metro de Windows Phone se centra en lograr una experiencia
"auténticamente digital", en la que el contenido se enfatiza
sin marcos. Otro desafío clave con una interfaz de usuario
multiplataforma es que puede comportarse de manera diferente
a lo que están acostumbrados los usuarios de la interfaz de
usuario nativa, resultando en que la aplicación no "funciona"
para los usuarios. Un ejemplo simple es no dar soporte una
tecla de hardware correctamente, como la tecla de retroceso
en una plataforma determinada. Otro reto es el valle de las
sombras resultante de intentar imitar elementos nativos de la
interfaz, que se parecen a los originales pero no funcionan de
la misma manera. En lugar de imitar controles nativos, deberías
usar unos de aspecto no nativo o, simplemente, limitarte a
usar los “auténticos”.
Al dirigirte a los consumidores finales directamente (B2C), a
menudo tienes que tener mucho más en cuenta la experiencia
de usuario específica de plataforma que en aquellos casos en
que el target es usuarios de negocio (B2B). En cualquier caso,
debes tener en cuenta que la personalización y la adaptación
de la interfaz de usuario y la UX para cada plataforma puede
suponer una gran parte de tu esfuerzo de desarrollo, y que es
sin duda el aspecto más desafiante de una estrategia multiplataforma.
Hacia Multiplataforma
120
Soporte a la Integración en Pantalla de Inicio
La integración de tu aplicación en las pantallas de inicio de
los dispositivos varía mucho entre las plataformas. En iOS sólo
se puede añadir una etiqueta de identificación con un número
al icono de tu aplicación, en Windows Phone puedes crear live
tiles que añaden información estructurada, mientras que en
Android y Symbian se puede añadir un widget completo que
muestre datos arbitrarios y emplee imágenes.
Utilizar la integración de tu aplicación en este sentido
podría mejorar drásticamente su interacción con los usuarios.
Soporte Multitarea
La multitarea permite a servicios en segundo plano y múltiples
aplicaciones funcionar al mismo tiempo, y es otra de las
características que se gestionan de manera diferente según
el sistema operativo. En Android, BlackBerry y Sailfish OS,
hay servicios en segundo plano y puedes ejecutar varias
aplicaciones al mismo tiempo, pero en Android el usuario
no puede terminar las aplicaciones a voluntad, ya que esto
se realiza automáticamente por el sistema operativo cuando
los recursos disminuyen. En iOS y Windows Phone hay una
selección limitada de tareas en segundo plano que pueden
seguir funcionando después de salir de la aplicación. Así que,
si los servicios en segundo plano pueden mejorar la operativa
de tu aplicación, debes evaluar las estrategias multiplataforma
cuidadosamente para asegurarte de permitir el acceso más
completo a las capacidades del teléfono en este sentido.
Consumo de Batería y Rendimiento
En estrecha relación con la multitarea está el consumo que
hace tu aplicación de la batería.
Mientras que la potencia de CPU se duplica aproximadamente cada dos años (la Ley de Moore dice que el número
Hacia Multiplataforma
121
de transistores se duplica cada 18 meses), la capacidad de
la batería, en contraste, se duplica sólo una vez cada siete
años. Esta es la razón por la que los smartphones pasan tanto
tiempo conectados a su cargador. Cuanto más cerca estás de la
plataforma en una capa de abstracción multiplataforma, mejor
puedes controlar el consumo de la batería y el rendimiento de
tu aplicación. Como regla general, cuanto más tiempo necesita
tu aplicación para arrancar y funcionar, menor abstracción
puedes conseguir.
Asimismo, algunas plataformas tienen una gran variedad de
resultados en rendimiento, sobre todo Android, cuya gama de
dispositivos va desde lo dolorosamente lento hasta lo superrápido.
Servicios Push
Los servicios push son una estupenda manera de aparentar que
tu aplicación está activa, incluso cuando no está en funcionamiento. En una aplicación de chat puedes, por ejemplo,
enviar mensajes de chat entrantes para el usuario mediante un
mecanismo push. Como en el caso anterior, la manera en que
los servicios push funcionan y los protocolos que utilizan se
emplean de manera diferente en cada plataforma. El tamaño
de datos disponible, por ejemplo, oscila entre 256 bytes en
iOS y 8 KB de BlackBerry. Los proveedores de servicios como
Urban Airship2 soportan el envío de datos a través de varias
plataformas.
2 urbanairship.com/
Hacia Multiplataforma
122
Compra desde Aplicación
Los mecanismos de compra desde aplicaciones permiten vender
bienes o servicios dentro de tu aplicación. No hace falta decir
que esto funciona de forma diferente en distintas plataformas.
Véase el capítulo de monetización para más detalle.
Publicidad en Aplicación
Existen diferentes opciones para la visualización de anuncios
en aplicaciones móviles, siendo algunas soluciones de terceros
independientes del comercializador. Los servicios de publicidad
específicos de plataforma, sin embargo, ofrecen mayores ingresos y una mejor experiencia de usuario. Una vez más, estos
servicios funcionan de manera diferente según las plataforma.
El capítulo de monetización en esta guía proporciona más
información sobre este tema.
Estrategias Multiplataforma
En esta sección se describen algunas de las estrategias que
puedes emplear para implementar tus aplicaciones en diferentes plataformas.
Soporte Directo
Puedes soportar varias plataformas si cuentas con un equipo
especializado para cada plataforma objetivo. Si bien esto
puede consumir muchos recursos, es muy probable que te dé
mejor integración y experiencia de usuario en cada sistema.
Una vía fácil de inicio es comenzar con una plataforma y
luego progresar hacia plataformas adicionales una vez que tu
aplicación se ha defendido en el mundo real.
Hacia Multiplataforma
123
Las librerías de componentes pueden ayudarte a acelerar
el desarrollo nativo, ejemplos populares se muestran en la
siguiente tabla:
Biblioteca de Componentes
Plataformas Objetivo
cocoacontrols.com
iOS
chupamobile.com
Android, iOS
verious.com
Android, iOS, HTML5, Windows
windowsphonegeek.com/Marketplace
Windows
Compartición de Recursos
Cuando mantienes varios equipos para diferentes plataformas
puedes ahorrar mucho esfuerzo si compartes algunas estructuras de la aplicación:
—— Concepto y recursos: Esto se hace habitualmente de
forma automática: compartir las ideas y los conceptos de
la aplicación, el flujo de interfaz de usuario, input y output y los recursos gráficos de la aplicación (pero debes ser
consciente de la necesidad de dar soporte a las estructuras
específicas de interfaz de usuario de cada plataforma).
—— Estructuras de datos y algoritmos: Vé un paso más allá
compartiendo estructuras de datos y algoritmos entre
plataformas.
—— Compartición de código del modelo de negocio:
Utilizando compiladores de multiplataforma también
puedes compartir el modelo de negocio entre las plataformas. Alternativamente, puedes utilizar un intérprete o
una máquina virtual y un lenguaje común en un grupo de
plataformas.
Hacia Multiplataforma
124
—— Abstracción completa: Algunas herramientas multiplataforma te permiten abstraerte completamente del modelo
de negocio, las vistas y el control de tu aplicación para
diferentes plataformas.
Reproductores y Máquinas Virtuales
Los reproductores suelen proporcionar un conjunto común de
APIs sobre distintas plataformas. Ejemplos famosos incluyen
Flash, Java ME y Lua. Este enfoque hace que el desarrollo sea
muy fácil. Te vuelves dependiente, sin embargo, del proveedor
de la plataforma para incorporar nuevas características, por lo
que el reto aquí se da cuando las funciones están disponibles
en una única plataforma. A menudo los reproductores tienden
a utilizar una aproximación de “mínimo común denominador”
respecto a las funciones ofertadas para mantener la uniformidad entre las implementaciones para varias plataformas.
Generadores de código como Applause3 llevan el concepto de
reproductor un paso más allá, a menudo son específicos del
dominio y permiten generar aplicaciones a partir de datos.
También suelen carecer de flexibilidad en comparación con las
soluciones programables.
Compilación Cruzada
La compilación cruzada permite la programación en un
lenguaje que es transformado en el lenguaje específico de una
plataforma diferente. En términos de rendimiento a menudo
es la mejor solución de multiplataforma, aunque puede haber
diferencias en comparación con las aplicaciones nativas. Esto
puede darse, por ejemplo, cuando ciertas construcciones de
programación no pueden ser traducidas de manera óptima
desde el código fuente al lenguaje de destino.
3 applause.github.com
Hacia Multiplataforma
125
Hay tres enfoques habituales para la compilación cruzada:
traducción directa del código fuente, de forma indirecta mediante la traducción del código fuente en un lenguaje intermedio
abstracto, y recopilación directa en el formato binario de una
plataforma. El enfoque indirecto típicamente produce código
menos legible. Este es un problema potencial cuando se desea
continuar con el desarrollo en la plataforma de destino usando
el código fuente traducido como punto de partida.
Aplicaciones Web (Híbridas)
En la tabla siguiente se enumeran algunos de los frameworks
de aplicaciones web disponibles. Con estos entornos se pueden
crear aplicaciones web que se comportan casi como aplicaciones reales, incluyendo capacidades offline. Sin embargo, ten en
cuenta que las tecnologías tienen limitaciones cuando se trata
de aspectos como la integración en plataforma o rendimiento.
Lee el capítulo “Tecnologías Web” para aprender más acerca del
desarrollo web móvil.
Solución Web App
Licencia
Plataformas de destino
Chrome Apps
developer.chrome.com/apps
BSD
Android, Mac, Windows
jQuery Mobile
www.jquerymobile.com
MIT y GPL
Android, BlackBerry,
Firefox, iOS, Windows
Sencha Touch
www.sencha.com/products/touch
GPL
Android, BlackBerry, iOS,
Windows Phone
The M Project
the-m-project.org
MIT y GPL
Android, BlackBerry,
Firefox, iOS, Windows
Normalmente no tienes acceso a las características de
hardware y elementos nativos de interfaz de usuario, por lo que
en nuestra opinión no cuentan como soluciones multiplataHacia Multiplataforma
126
forma “reales”; estas soluciones, por lo tanto, no aparecen en
la tabla al final de este capítulo.
El desarrollo web híbrido implica insertar una webview
dentro de una aplicación nativa. Esta aproximación te permite
acceder a las funciones nativas desde los componentes web de
tus aplicaciones y también utilizar código nativo para mejorar
el rendimiento o aspectos críticos de la experiencia de usuario
de tu aplicación. Las aplicaciones híbridas permiten reutilizar
elementos de desarrollo web en las plataformas que hayas
elegido (un buen ejemplo de entorno híbrido es PhoneGap).
ANSI C
Mientras que el HTML y la programación web se crean a partir
de un nivel de abstracción muy elevado, también puedes elegir
el camino opuesto utilizando ANSI C. Puedes ejecutar código
ANSI C en todas las plataformas importantes, como Android,
BlackBerry 10, iOS y Windows 8/Windows Phone. El principal
problema con esta opción es que no puedes acceder a las APIs
específicas de plataforma ni los controles de interfaz de usuario
desde dentro de ANSI C. Utilizar C es especialmente adecuado
para algoritmos complejos, como los codificadores de audio.
Las librerías correspondientes se pueden utilizar en todos los
proyectos de aplicaciones para una plataforma.
Frameworks de Aplicaciones
Multiplataforma
Hay muchas soluciones multiplataforma disponibles, por lo
que es difícil ofrecer una visión completa. Puedes llamarlo
fragmentación, nosotros lo llamamos competencia. Una palabra
de advertencia: no sabemos todas las opciones, si tienes una
solución propia que está disponible públicamente, por favor
háznoslo saber a través de [email protected]. Un
Hacia Multiplataforma
127
framework debe soportar al menos dos plataformas móviles
para ser listado aquí.
A continuación, algunas preguntas que debes hacer al
evaluar herramientas multiplataformas. No todas ellas serán
relevantes para tí, así que sopesa las opciones adecuadamente.
En primer lugar, ten una visión detallada de tu idea de
aplicación, el contenido, su público objetivo y las plataformas
de destino. También debes tener en cuenta a la competencia
en las diversas plataformas, tu presupuesto de marketing y el
know-how de tu equipo de desarrollo. Research 2 Guidance
también ha publicado un informe sobre varias herramientas
multiplataforma4 .
—— ¿Cómo funciona la herramienta multiplataforma? ¿Qué
lenguajes de programación y APIs puedo usar?
—— ¿Puedo acceder a funciones específicas de la plataforma?
¿En caso afirmativo, cuáles?
—— ¿Puedo usar componentes nativos de la interfaz de
usuario? ¿En caso afirmativo, cuáles?
—— ¿Puedo usar una versión específica de la plataforma como
base de mi desarrollo? ¿Cómo es el código fuente traducido/generado?
—— ¿Es posible la integración con la pantalla de inicio?
—— ¿Puedo controlar la multitarea? ¿Hay algún servicio en
segundo plano?
—— ¿Cómo funciona la solución con servicios push?
—— ¿Cómo puedo usar la compra desde aplicación y la
publicidad en aplicación?
—— ¿Se mantiene actualizado el framework a medida que
evoluciona el sistema operativo?
4 research2guidance.com/cross-platform-tool-benchmarking-2013
Hacia Multiplataforma
128
Para una comparativa de los entornos disponibles, puedes
consultar el informe research2guidance disponible en
research2guidance.com/cross-platform-tool-benchmarking-2014.
Solución
Licencia
Input
Output
Adobe Air
adobe.com/devnet/
devices.html (Adobe)
Comercial
Flash
Android,
BlackBerry Tablet
OS, iOS, PC
Akula
verivo.com
Comercial
(Visual)
Android,
BlackBerry, iOS,
Windows Phone
Application Craft
applicationcraft.com
Comercial
HTML, CSS,
JavaScript
Android,
BlackBerry 10,
iOS, Windows
Phone, sitios
móviles
Codename One
codenameone.com
Comercial
Java
Android,
BlackBerry, iOS,
J2ME, Windows
Corona
coronalabs.com (Corona
Labs)
Comercial
JavaScript
Android, iOS,
Kindle, Nook,
Windows
Evothings Studio
evothings.com
Open Source
HTML, CSS,
JavaScript
Android, iOS
Feedhenry
feedhenry.com
Comercial
HTML, CSS,
JavaScript
Android, iOS,
HTML5, Windows
J2ME Polish
j2mepolish.org
(Enough Software)
Open Source
+ Comercial
Java ME,
HTML, CSS
Android,
BlackBerry,
J2ME, PC
Kony One
www.kony.com/products/
apps
Comercial
HTML, CSS,
JavaScript,
RSS
Android,
BlackBerry, iOS,
J2ME, Windows,
PC, Web
Hacia Multiplataforma
129
Solución
Licencia
Input
Output
LiveCode
runrev.com (RunRev)
Comercial
English-like
Android, iOS,
Windows y Web
M2Active
service2media.com
(Service2Media)
Comercial
Drag and
Drop + Lua
Android,
BlackBerry, iOS,
Windows
MobiForms
mobiforms.com
(MobiForms)
Comercial
Drag and
Drop +
MobiScript
Android, iOS, PC,
Windows Mobile
NeoMAD
neomades.com
Comercial
Java
Android,
BlackBerry, iOS,
J2ME, Windows
Orubase
orubase.com
Comercial
ASP .NET
MCV
Android, iOS,
Windows
PhoneGap/Cordova
phonegap.com cordova.
apache.org (Adobe/
Apache)
Open Source
HTML, CSS ,
JavaScript
Android,
BlackBerry 10,
iOS, Windows
Qt
qt.digia.com (Digia)
Open Source
+ Comercial
C++
Android,
BlackBerry 10,
iOS, Sailfish OS,
Windows
Rhodes
motorolasolutions.com/
US-EN/RhoMobile+Suite/
Rhodes (Motorola)
Open Source
+ Comercial
Ruby,
HTML, CSS,
JavaScript
Android,
BlackBerry, iOS,
Windows Phone
Titanium
appcelerator.com
(Appcelerator)
Open Source
JavaScript
Android, iOS,
Tizen, Windows,
Mobile Web
trigger.io trigger.io
(Triggger Corp)
Comercial
HTML5,
JavaScript
Android, iOS
webinos
webinos.org
Open Source
JavaScript
Android,
BlackBerry, iOS,
PC, TV
Hacia Multiplataforma
130
Solución
Licencia
Input
Output
Xamarin xamarin.com
Comercial
C#
iOS, Android,
Windows, PC
XDK xdk.intel.com (Intel)
Uso gratuito
HTML, CSS,
JavaScript
Android, iOS,
Windows
XML VM xmlvm.org
Open Source
+ Comercial
Java, .NET,
Ruby
C++, Java,
JavaScript, .NET,
Objective-C,
Python
Motores de Juego Multiplataforma
Los juegos están muy centrados en el contenido y a menudo no
necesitan ser integrados en profundidad en la plataforma, así
que el desarrollo multiplataforma es a menudo más atractivo
para éstos que para las aplicaciones.
Hacia Multiplataforma
131
Solución
Licencia
Input
Output
Cocos 2D
cocos2d-x.org
Open Source
C++, HTML5,
JavaScript
Android,
BlackBerry,
iOS, Windows
Corona
coronalabs.com
(Corona Labs)
Comercial
Lua
Android, iOS,
Kindle, nook,
Windows
EDGELIB
edgelib.com (elements
interactive)
Comercial
C++
Android, iOS,
PC
Esenthel
esenthel.com
(elements interactive)
Comercial
C++
Android, iOS,
PC
GameSalad gamesalad.
com
Comercial
Drag and drop
Android, iOS,
Windows, PC,
web
Gideros Mobile
giderosmobile.com
Comercial
Lua
Android, iOS
id Tech 5
idsoftware.com (id)
Commercial
C++
Consoles, iOS,
PC
Irrlicht
irrlicht.sourceforge.
net
Open Source
C++
Android & iOS
with OpenGLES version, PC
Appease
appeasymobile.com
Open Source
C++
Android, iOS,
Windows
Marmalade
madewithmarmalade.
com (Ideaworks3D)
Comercial
C++, HTML5,
JavaScript
Android,
BlackBerry 10,
iOS, Windows
Moai getmoai.com
(Zipline Games)
Open Source,
Comercial
Lua
Android, iOS,
PC, Web
MonoGame
monogame.codeplex.
com
Open Source
C#, XNA
Android, iOS,
PC, Windows
Hacia Multiplataforma
132
Solución
Licencia
Input
Output
Ogre 3D
ogre3d.org
Open Source
C++
Windows
Phone, Window
RT, PC
orx
orx-project.org
Open Source
C, C++,
Objective-C
Android, iOS,
PC
ShiVa 3D
stonetrip.com
Comercial
C++
Android,
BlackBerry
10, iOS, PC,
Consoles
SIO2
sio2interactive.com
(sio2interactive)
Comercial
C, Lua
Android, iOS,
PC
Unigine
unigine.com
(Unigine corp.)
Comercial
C++, UnigineScript
Android, iOS,
PC, PS3
Unity3D
unity3d.com (Unity
Technologies)
Comercial
C#, JavaScript,
Boo
Android,
BlackBerry 10,
iOS, Windows,
PC, consoles,
web
Hacia Multiplataforma
133
Sitios para Móviles &
Tecnologías Web
El desarrollo contínuo de tecnologías web unido al incremento
dispositivos conectados a Internet promete un gran futuro para
aquellos deseosos de un incremento en la audiencia a través de
webs móviles. El tráfico global de Internet móvil está creciendo
rápidamente y ya ha superado el 30% del total1. El tiempo
invertido en navegar por Internet con dispositivos (móviles,
tablets, ordenadores de sobremesa y televisores) varía en
diferentes puntos del planeta; mientras que los usuarios en
China dedican un 16% de su tiempo a navegar desde dispositivos móviles, en EE.UU. es un 27% y en India un 70%. Muchas
regiones donde el tráfico en Internet vía móvil ya ha superado
a los ordenadores de sobremesa son mercados en desarrollo o
emergentes. Mientras que el uso de smartphones crece alrededor del planeta, aún hay una gran oportunidad para captar a
los usuarios de teléfonos de gama media. Según Nielsen sólo el
18% de los indios poseen un smartphone, lo que equivale a la
espectacular suma de 225 millones de usuarios2, mientras que
un 68% posee un teléfono de gama media, de los cuales un
9,5% pueden navegar por Internet3. Esto quiere decir que con
un site básico para móviles podrías alcanzar a 85 millones de
usuarios más.
El uso más obvio de las tecnologías web es construir sitios
web móviles, y ése es el tema de este capítulo. Vale la pena
destacar que las tecnologías web también se usan de manera
1 gs.statcounter.com
2 nielsen.com/ph/en/insights/news/2014/asian-mobile-consumers.html
3 discovermobilelife.com
Sitios para Móviles & Tecnologías Web
135
intensiva en el desarrollo de aplicaciones web e híbridas,
soluciones multiplataforma e incluso aplicaciones nativas
(Firefox y Tizen). Para más información sobre el desarrollo
multiplataforma y en nuevo sistema operativo Firefox y Tizen
consulta los capítulos al respecto en esta guía.
Una gran ventaja de las tecnologías web es que ofrecen la
ruta más fácil hacia el desarrollo móvil. Tecnologías web como
HTML, CSS y JavaScript ya están plenamente desarrolladas; sin
embargo, siguen y seguirán siendo las principales bases de
desarrollo de sitios móviles. Además, son sin duda más fáciles
de aprender que algunos de los complejos lenguajes necesarios
para el desarrollo de aplicaciones nativas. Los sitios web para
móviles y las aplicaciones web hacen los contenidos accesibles
en casi cualquier plataforma con un menor esfuerzo en
comparación con el desarrollo nativo para varias plataformas.
Esto significa, directamente, que los sitios web para móviles
tienen un alcance más amplio. Por consiguiente, el desarrollo
web móvil no sólo ahorra tiempo y costes de desarrollo, sino
que además proporciona una alternativa ajustada en costes y
tiempo también en lo que se refiere a mantenimiento. Y ser
independiente de las tiendas de aplicaciones te permite ofrecer
cualquier contenido que quieras rápidamente y sin necesidad
de suscribir las políticas de un tienda de aplicaciones.
No obstante, existen deficiencias. Las tecnologías web
luchan por igualar el nivel de integración en plataforma y el
acceso directo a funciones de hardware que ofrece el desarrollo de aplicaciones nativas. Aún más, el rendimiento de las
tecnologías web es altamente dependiente de la conectividad,
grandes sites como Facebook y LinkedIn tienen dificultades
para bregar con las limitaciones de memoria, y hay un
deficiencia de herramientas de desarrollo en comparación a las
disponibles para desarrollo de aplicaciones nativas.
Sitios para Móviles & Tecnologías Web
136
La monetización de sitios móviles puede resultar difícil,
ya que los usuarios esperan tener acceso a las webs de forma
gratuita. La herramienta más común para su monetización es
la integración de publicidad. Las soluciones de pago para los
sitios móviles se encuentran todavía en sus primeras etapas y
tienden a ser bastante complejas de implementar. Los actuales
instrumentos de monetización de las tiendas de aplicaciones
ofrecen, por el contrario, una fácil instalación y un alto nivel
de seguridad para el usuario final.
Si la monetización es uno de los requisitos clave, una
estrategia híbrida o de aplicación web podría resultar una
buena opción de compromiso. En este caso, el desafío clave
es combinar las capacidades únicas de tecnologías nativas
y web para crear un producto verdaderamente fácil de usar.
En el capítulo sobre el tema multiplataforma de este libro
encontrarás una lista de los frameworks disponibles para crear
aplicaciones híbridas.
Por principio, los usuarios no deberían sufrir la frustración
y la decepción de ser redirigidos a un sitio web que nunca
termina de cargarse, exige una elevada transmisión de datos o
simplemente no funciona. Por el contrario, en el peor escenario
posible el usuario debería ser redirigido a un sitio básico,
pero que provea de contenido relevante. Antes de comenzar
a desarrollar hay que tener en cuenta las capacidades de los
dispositivos que utiliza tu audiencia, sus hábitos de navegación y sus planes de datos.
Sitios para Móviles & Tecnologías Web
137
Desde la perspectiva de la experiencia de usuario, Google
ofrece las 10 directrices más importantes para que pequeñas y
medianas empresas consigan conversiones4:
—— Sé táctil - diseña tu sitio de manera que incluso unas
manos grandes puedan interactuar con él
—— Diseña para visibilidad - asegúrate de que tu contenido
puede ser leído si el usuario extiende su brazo completamente
—— Simplifica la navegación - navegación, jerarquía y scrolling vertical claros facilitan el acceso a la información
—— Hazlo accesible - idealmente, tu sitio móvil debería
funcionar en cualquier dispositivo y en ambas orientaciones, vertical y horizontal
—— Hazlo fácilmente convertible - destaca la información
que te ayudará a conseguir conversiones
—— Hazlo local - incluye funcionalidades que ayuden a la
gente a encontrarte y contactarte
—— Redirecciona a sites versión móvil - da a los usuarios
la oportunidad de utilizar el site desktop original, pero
también facilita volver al site móvil
—— Mantenlo ágil - ayuda a los usuarios de móviles, diseña tu
sitio para que cargue rápido y muestra el copy de manera
que sea fácil hacer una lectura superficial
—— Hazlo cómodo - ofrece el mayor número de funcionalidades de la versión completa como sea posible
—— Aprende, escucha e itera - los buenos sitios móviles
están centrados en el usuario; es decir, han sido creados
contando con el feedback de la audiencia
Google ha implementado cambios en su modelo de
4 www.dudamobile.com/webinar/Google_DudaMobile_Webinar.pdf
Sitios para Móviles & Tecnologías Web
138
búsqueda móvil y ha anunciado que penalizará a los sitios que
no sigan éstas recomendaciones. Echa un vistazo al site de
desarrolladores de Google5 para estar al día de las novedades
respecto a cómo optimizar tu sitio móvil.
HTML5
La quinta versión del estándar HTML promete la reproducción
de características anteriormente sólo disponibles con ayuda de
tecnología propietaria. HTML5 es uno de los factores clave que
hacen que los desarrolladores sopesen el desarrollo de sitios
móviles y aplicaciones web en lugar de aplicaciones nativas.
El look-and-feel similar al de aplicaciones compiladas con un
único código base para una serie de dispositivos populares, la
capacidad de acceder a hardware de dispositivos tales como
la cámara y el micrófono, el almacenamiento de datos en
los dispositivos para utilizar sitios móviles sin conexión y la
optimización de la página web según en el tamaño de pantalla,
hacen de HTML5 una atractiva alternativa para el desarrollo de
aplicaciones nativas.
Pero HTML5 depende del navegador y es exactamente ése
apoyo el que escasea actualmente. Sólo el 60% de los usuarios
de Internet tienen navegadores que soporten más del 50% de
las características actuales de HTML56. El ex-CTO de Facebook
Brent Taylor describe la situación de la siguiente manera:
‘Hay una desenfrenada fragmentación de la tecnología en los
navegadores móviles, por lo que los desarrolladores no saben
qué parte de HTML5 pueden utilizar. HTML5 es promovido como
un estándar único, pero viene en diferentes versiones para
cada dispositivo móvil. Cuestiones tales como la aceleración
5 developers.google.com/webmasters/smartphone-sites
6 gs.statcounter.com/
Sitios para Móviles & Tecnologías Web
139
de hardware y la gestión de derechos digitales se implementan
de manera inconsistente. Eso hace que sea difícil para los
desarrolladores escribir software que funcione en muchas
plataformas diferentes y llegue a un público amplio’.
Sitios web líderes como LinkedIn han cambiado sus
aplicaciones web por un paquete de aplicaciones nativas. Kiran
Prasad, el director de ingeniería móvil de LinkedIn, decidió
construir tanto un site en HTML5 como aplicaciones nativas.
Su razonamiento es que HTML5 ya es relevante para el negocio,
pero no está soportado como debería por el ecosistema: 'There
are tools, but they are at the beginning. People are just
figuring out the basics.'7.
Para más información acerca de la compatibilidad con
navegadores, visita el site HTML5Test online8. Dicho website
ofrece tanto una introducción como un análisis profundo a las
características de HTML5 según su soporte por los diferentes
navegadores web. Facebook también ha desarrollado
ringmark9, que pone a prueba los navegadores web en
3 anillos, o niveles de soporte de características de
HTML5, lo cual ayuda a los desarrolladores a comprobar
rápidamente el nivel de soporte de múltipes navegadores
web móviles (y desktop).
Resumiendo: Casi todo el mundo en el negocio móvil
está de acuerdo en que HTML5 tendrá éxito a largo plazo y,
especialmente, el último año se ha visto una rápida adopción
del HTML5. ABI Research estima que los dispositivos móviles
compatibles con HTML5 existentes en el mundo serán 2.100
millones a finales del 201610. Los sistemas operativos incre7 venturebeat.com/2013/04/17/linkedin-mobile-web-breakup
8 html5test.com/results/mobile.html
9 rng.io/
10 www.abiresearch.com/press/21-billion-html5-browsers-on-mobile-devices-by-201
Sitios para Móviles & Tecnologías Web
140
mentarán gradualmente el soporte a HTML5 y los navegadores
web incrementarán la velocidad de su adopción. Las plataformas de código abierto, tales como Firefox OS, Sailfish y Ubuntu
deberían favorecer dicha adopción. El informe Developer
Economics 201411 ya identifica HTML5 como la plataforma más
popular (47%), seguida por Java (42%).
La Fragmentación Requiere Adaptación
El mayor reto del desarrollo web móvil es la fragmentación. En
teoría, todos los dispositivos con conexión a Internet pueden
acceder a cualquier sitio móvil a través de un navegador. La
realidad, sin embargo, es que los desarrolladores necesitan
atender al creciente número de navegadores y dispositivos con
diferentes niveles de capacidades de software y hardware para
adaptar y optimizar el contenido web móvil.
En términos generales, existen dos enfoques para optimizar
el contenido para dispositivos móviles: adaptación del lado del
cliente o del lado del servidor:
——La adaptación del lado cliente hace uso de una combinación de CSS y JavaScript ejecutándose en el dispositivo para ofrecer una experiencia ‘mobile-friendly’.
—— La adaptación en el lado del servidor utiliza al
servidor para que ejecute lógica antes de que se
suministre el contenido al cliente.
La siguiente sección ofrece una revisión de técnicas tanto
del lado cliente como del lado servidor para hacer los sitios
webs accesibles a la mayoría de dispositivos actuales con
acceso a Internet, así como a aquellos futuros.
11 DeveloperEconomics.com
Sitios para Móviles & Tecnologías Web
141
Adaptación del Lado Cliente
Diseño Web Adaptativo (Responsive)
El diseño web adaptativo ha sido un término de moda entre
vendedores y desarrolladores web por igual. En su formato más
simple, consiste en una rejilla flexible, imágenes flexibles y CSS
media queries para comportarse adaptativamente a una serie
de resoluciones de pantalla o tipos de dispositivos.
En solitario, ésto sólo puede proporcionar una experiencia
sensible a dispositivo en un rango limitado de ellos y no puede
adaptarse a contenido sofisticado. El mismo contenido se sirve
a todos los dispositivos. No se recomienda como técnica para
producir sitios web complejos para navegadores desktop o
móviles.
Pros
—— Una adaptación completa en el lado cliente asegura que no
haya impacto en la infraestructura existente.
—— Ajuste automático de contenido y diseño.
Contras
—— El mismo contenido disponible en el sitio web estará
disponible también en la versión móvil (visible o no).
—— El peso del sitio tendrá un impacto significativo en
términos de rendimiento en los dispositivos móviles.
—— Es una aproximación general más que una optimización
real a un entorno móvil.
Sitios para Móviles & Tecnologías Web
142
Mejoras Progresivas
Las mejoras progresivas tienen la capacidad de responder a
toda la gama de dispositivos móviles. Se envía una sola página
HTML a todos los dispositivos. Se utiliza código JavaScript de
manera adicional para construir progresivamente la funcionalidad a un nivel óptimo para el dispositivo en particular. Ya que
es una solución exclusiva móvil, el principal inconveniente es
el rendimiento. La construcción progresiva conlleva tiempo de
ejecución y varía de acuerdo con el dispositivo y la red. Como
solución de desktop y móvil, su principal inconveniente es que
un único documento HTML se envía a todos los dispositivos.
Un entorno muy conocido que hace uso de la mejora progresiva
es jQuery Mobile12 .
Pros
—— Una adaptación completa en el lado cliente asegura que no
haya impacto en la infraestructura existente.
—— Ajuste automático de contenido, funcionalidad y diseño.
Contras
—— Pérdida de control, pues la detección es gestionada por el
navegador.
—— La detección de navegador dista mucho de ser perfecta.
—— La detección realizada en el lado cliente tiene impacto
sobre el rendimiento global del site.
—— El mismo HTML es servido a todos los dispositivos.
12 jquerymobile.com
Sitios para Móviles & Tecnologías Web
143
Adaptación del Lado Servidor
Bases de Datos de Dispositivos
Las bases de datos de dispositivos detectan a cada dispositivo
que accede a la página web y devuelven una lista de las capacidades del dispositivo al servidor. Esta información se utiliza
entonces para servir un sitio móvil acorde con las capacidades
del dispositivo. La adaptación del lado del servidor es una
de las soluciones más antiguas y fiables. Algunas populares
bases de datos de dispositivos son WURFL13 y DeviceAtlas14 . El
principal inconveniente de las bases de datos de dispositivo es
que la mayoría sólo están disponibles bajo licencia comercial.
Pros
—— La solución más habitual (Google, Facebook, Amazon y
similares).
—— Máximo control.
—— Es posible la optimización según dispositivo (por ejemplo
iPhone, Samsung Galaxy y similares).
Contras
—— Los Repositorios de Descripción de Dispositivos (en inglés
Device Description Repositories) están orientados a
hardware.
—— Aparte de los datos, es necesario un mecanismo de detección (un simple ‘User-Agent’ no es suficiente).
13 wurfl.sourceforge.net/
14 deviceatlas.com/
Sitios para Móviles & Tecnologías Web
144
Adaptación Híbrida - RESS
Realmente lo mejor de ambos mundos, la combinación de la
adaptación en cliente y servidor asegura un alto rendimiento
gracias a la adaptación del lado del servidor y garantiza que
las capacidades obtenidas se pueden utilizar para enriquecer la
experiencia móvil para las visitas siguientes. Esta aproximación
se conoce como RESS (responsive web design with server-side
components). Naturalmente es costosa y, por tanto, más
común en organizaciones de gran tamaño.
Las soluciones híbridas de adaptación están disponibles
comercialmente de compañías como Sevenval15 o Netbiscuits16,
o como soluciones en la nube respaldadas por la comunidad,
por ejemplo FITML17.
Mejor Input de Datos
Con pequeñas teclados, a menudo en pantalla, introducir texto
puede resultar engorroso y lento, especialmente si el usuario
tiene que introducir números, direcciones de correo electrónico
o texto similar, etcétera. Afortunadamente, los desarrolladores
pueden especificar el tipo esperado de datos y los smartphones
mostrarán entonces el teclado más apropiado en pantalla.
mobileinputtypes.com proporciona varios ejemplos claros y
concisos.
Mejor Rendimiento
Los usuarios esperan que los sitios web tarden en cargar entre
2 y 5 segundos. Esto supone un reto, especialmente para los
sitios móviles más complejos. Nótese que la localización y red
utilizadas ya han tenido un efecto drástico en el rendimiento
15 www.sevenval.com
16 www.netbiscuits.com
17 www.fitml.com
Sitios para Móviles & Tecnologías Web
145
del site. Aunque hay factores que quedan fuera de tu control,
las siguiente secciones ofrecen trucos para reducir la transferencia de datos, contenidos y llamadas HTTP para minimizar el
tiempo de carga y mejorar el rendimiento.
Reducir el Volumen Transmitido
Activa GZIP cuando sirvas un sitio. Cambiar los tamaños de
imágenes y ajustar su calidad conforme a la calidad de la red.
Reducir Contenido
Tanto la carga del site como de los contenidos son cada vez
más importantes. Reducir en lo posible elementos tales como
los archivos JavaScript y CSS te ayuda a reducir el tiempo
global de carga. Múltiples archivos del mismo tipo pueden ser
comprimidos en uno y los espacios vacíos pueden ser eliminados. El código se acorta, pero se comporta de la misma manera.
Todo esto puede resultar en un menor número de llamadas y,
finalmente, en un mejor tiempo de carga.
Al mismo tiempo, es importante que el usuario comprende
qué está ocurriendo. Si el contenido está en proceso de carga
es importante que el usuario sea consciente de ello, y no
mostrarle una página o espacio en blanco. Una experiencia sin
contratiempos es primordial para cualquier experiencia móvil, y
esto incluye el viaje desde el site hasta la carga de contenidos
en el site, y todas aquellas animaciones que los acompañen.
Reducir Llamadas HTTP
Imágenes inline, scripts y estilo, y utiliza la caché de aplicaciones. Cuando sea posible, reduce el número de llamadas,
tamaño de archivos y contenido. Beneficios clave son que
los scripts se transmiten en una sola llamada por página, el
tráfico HTTP se minimiza y los scripts básicos se almacenan en
Sitios para Móviles & Tecnologías Web
146
la cache de la aplicación. La implementación no afecta el
refresco y los scripts aún pueden alojar en la cache del CDN.
Para más detalles y recomendaciones sobre rendimiento
de webs móviles estudia la presentación de Roland Guelle en
Slideshare18.
Testear Tecnologías Web
Se puede probar cómo las tecnologías web funcionan en varios
teléfonos móviles de múltiples maneras. La más simple
es probar el sitio o aplicación web en una variedad de
navegadores en dispositivos móviles. Estos deberían incluir
una combinación de los navegadores móviles más populares,
por ejemplo aquellos basados en datos públicos disponibles
online19. El conjunto de dispositivos se puede refinar mediante el análisis de datos de los registros web existentes, y
otras herramientas. Además, las pruebas en varios factores
de forma ayuda a descubrir problemas de diseño y formato.
En cuanto a las pruebas automatizadas, WebDriver20 es
el entorno predominante. Existen dos enfoques complementarios:
1. Testeo automático utilizando controles WebView en
Android e iOS.
2. Falseo del User-Agent (spoofing) utilizando Google
Chrome o Mozilla Firefox configurados para emular a
varios navegadores web móvil.
Ambas aproximaciones tienen pros y contras:
18 www.slideshare.net/sevenval/mobile-web-performance-dwx13
19 gs.statcounter.com/#mobile_browser-ww-monthly-201207-201306
20 seleniumhq.org/projects/webdriver/
Sitios para Móviles & Tecnologías Web
147
—— WebViews incrustadas se ejecutan en la plataforma de
destino. Es probable encontrar en ellas muchos errores
de comportamiento. Sin embargo, la configuración tiene
mucho que ver y algunas plataformas no están soportadas.
—— Se puede engañar a los servidores web para que traten al
navegador como si accediera mediante una gran variedad
de navegadores, incluyendo navegadores móviles no
disponibles con la WebView incrustada, por ejemplo el
teléfono Nokia Asha 201. Aún así, ni el comportamiento
resultante ni el renderizado son realistas, así que muchos
errores permanecerán indetectados, mientras que ser darán
falsos positivos que no se darán en los dispositivos reales.
Aprende Más
Online
—— W3Schools y CSS Tricks (buenos recursos para iniciarse en
HTML, CSS y JavaScript): w3schools.com, css-tricks.com
—— HTML5 Rocks (excelente recurso sobre HTML5 que
incluye tutoriales, presentaciones, artículos, etc.) :
www.html5rocks.com/en/
—— Breaking the Mobile Web (Max Firtman, el autor de
múltiples libros acerca de programación web móvil, ofrece
noticias actualizadas en su blog dedicado a móviles):
mobilexweb.com/
—— Mobi Thinking (el recurso de DotMobi para vendedores,
con análisis y opiniones de expertos en marketing móvil):
mobithinking.com/
—— Testing (Mobile) Web Apps:
docs.webplatform.org/wiki/tutorials/Testing_web_apps
Sitios para Móviles & Tecnologías Web
148
—— Investiga qué funcionalidades funcionan en todas las áreas
Web: caniuse.com y beta.theexpressiveweb.com
—— WHATWG (la página de la comunidad HTML):
www.whatwg.org/
—— Word Wide Web Consortium (la organización que define los
estándares web): www.w3.org/
Libros
—— Mobile First por Luke Wroblewski
—— Adaptive Web Design: Crafting Rich Experiences with
Progessive Enhancement por Aaron Gustafson y Jeffrey
Zeldman
—— Responsive Web Design por Ethan Marcotte
—— Programming the Mobile Web por Max Firtman
—— jQuery Mobile: Up and Running por Max Firtman
Sitios para Móviles & Tecnologías Web
149
Aplicaciones Empresariales
Los responsables de decisiones corporativas ven actualmente
las aplicaciones empresariales móviles como un factor estratégico, una necesidad, más que como una mera entrada en una
hoja de cálculo de contabilidad. Las aplicaciones empresariales
internas son capaces de reducir la latencia de la transferencia
de información dentro de una organización, incrementando la
agilidad del trabajador al hacer disponibles datos de carácter
competitivo en cualquier momento y en cualquier lugar. Las
aplicaciones también pueden permitir a las empresas comprometerse con sus clientes, proveedores y consumidores finales,
etc. Ejemplos de aplicaciones empresariales incluyen software
para puntos y personal de ventas, de respuesta a emergencias,
gestión de inventario o cadena de suministro, pero también de
marketing B2C.
Puede parecer una obviedad decirlo, pero el riesgo más
importante en este momento es no tener una estrategia móvil
corporativa. Las empresas están tomando el enfoque Móvil
para Todos en contraste a limitar su uso a la alta dirección,
como ocurría en el pasado. Para conseguir esto, el enfoque
tradicional de TIC de compra y distribución de dispositivos en
la estructura de gestión ya no es la única estrategia a utilizar.
Hemos pasado del BYOD (Bring Your Own Device, en castellano
Trae Tu Propio Dispositivo) al BYOx (Bringh Your Own Anything,
en castellano Trae Tu Propio...), lo que incluye aplicaciones,
contenido, herramientas y entornos de desarrollo, e incluso
wearables, permitiendo al personal utilizar sus dispositivos
personales para conectarse a la infraestructura TIC, descargar
contenido seguro y usar aplicaciones empresariales. Con la llegada de BYOD, una empresa se expone a riesgos que tradicionalmente no se consideraban en la estrategia TIC corporativa.
La adopción temprana en la empresa de una estrategia móvil
Aplicaciones Empresariales
151
bien pensada y ejecutada es clave para asegurarse de que los
datos están protegidos en todo momento.
Desde el punto de vista del desarrollador, el sector
empresarial tiene mucho que ofrecer: En comparación con los
desarrolladores de aplicaciones B2C tradicionales, aquellos que
crean aplicaciones empresariales tienen el doble de probabilidades de estar ganando más de 5.000 dólares americanos por
aplicación al mes y casi 3 veces más probabilidades de ganar
más de 25.000 según el informe Developer Economics1.
Puntos Clave de las Aplicaciones Móviles para Definir
Iniciativas Empresariales
—— Reducción de costes comparados con los sistemas
existentes
—— Racionalización de los procesos de negocio
—— Ventaja competitiva con el acceso directo a datos
actualizados de manera inmediata
—— Incremento de la satisfacción y efectividad del empleado
—— Rápida respuesta en comparación con procesos existentes
Estrategia Empresarial
Hoy en día, muchas empresas tienen un Chief Mobile Officer
(CMOO) o han ampliado el alcance de sus CIOs. El trabajo del
CMOO es coordinar las tendencias móviles y sus directrices,
y hacer de puente entre el negocio y TIC. Dependiendo del
tamaño y el enfoque de la empresa, su trabajo es también
construir un equipo interno de desarrollo de software móvil
o coordinar la cooperación con una agencia de desarrollo
1 www.developereconomics.com/report/next-gold-rush-enterprise-apps
Aplicaciones Empresariales
152
externa. Para asegurarse de que el software móvil ofrece lo que
los empleados/usuarios quieren, que sea técnicamente factible
y que todo se ajuste a la estrategia global de la empresa,
el director podría considerar la creación de un Consejo de
Innovación Móvil (MIC, en inglés Mobile Innovation Council)
o Centro de Excelencia (COE, en inglés Center of Excellence)
que deben incluir a miembros clave tales como: representantes
capacitados del equipo de desarrollo de aplicaciones móviles,
las partes interesadas en tema móvil en la empresa y, lo más
importante, los usuarios finales de varios departamentos con
experiencia en los procesos de negocio más relevantes.
Los tópicos en los que el CMOO/CIO debe centrarse, en
sincronía con el MIC/COE incluyen:
—— Estrategia: Visión y dirección de la estrategia móvil global
y las aplicaciones.
—— Políticas de gobernanza: Bring Your Own Device (BYOD)
versus Chose Your Own Device (CYOD), que básicamente es
la diferencia entre una política de Gestión de Aplicaciones
Móviles (MAM, del inglés Mobile Application Management)
y una de Gestión de Dispositivos y Seguridad Móviles
(CYOD, del inglés Mobile Device Management & Security).
—— Especificaciones de las aplicaciones.
—— Libro de ruta de las aplicaciones.
—— Planificación presupuestaria.
—— Visto bueno: aprobación de las aplicaciones para producción.
—— Despliegue de aplicaciones: feedback temprano de demos y
prototipos, testeo y despliegue masivo.
—— Incentivos: Promocionar la adopción de entornos móviles.
Aplicaciones Empresariales
153
En cuanto a la adopción comercial, el desarrollo de aplicaciones corporativas es muy popular actualmente, pero uno
de los principales obstáculos que debe enfrentar una empresa
escribiendo aplicaciones corporativas para terceros, o un
manager de proyecto deseoso de adoptar una estrategia interna
corporativa, es resolver una necesidad de negocio. La pregunta
"Todo esto suena muy bien, pero ¿por qué lo necesitamos?" es
menos común ahora, pero tienes que estar preparado para dar
razones de peso en base a las que una empresa debería adoptar
una estrategia móvil.
Puntos Clave en los Casos de Negocio para Aplicaciones
Móviles Empresariales
—— Crear un Plan de Visión para nuevas aplicaciones móviles,
y cómo ayudarán y darán forma a tu empresa.
—— Crear un Manifiesto de Definición de Aplicación (ADS,
del inglés Application Definition Statement) para cada
aplicación, especificando propósito y audiencia objetivo.
—— Crear un Presupuesto para dispositivos.
—— Crear un plan para una Infraestructura de Aplicaciones,
Gestión de Dispositivos y Seguridad.
—— Crear un plan para el equipo de desarrollo utilizando una
plataforma de desarrollo fiable a futuro, por ejemplo MADP.
Movilizando Sistemas Existentes
Si ya estás ofreciendo un sistema a tus clientes pero aún no ha
sido adaptado a móviles, tienes varias decisiones que tomar.
Es crítico que comprendas en profundidad el impacto de añadir
una oferta móvil a su sistema antes de comenzar a implementar la solución elegida. Algunas de las razones más habituales
Aplicaciones Empresariales
154
para movilizar tu producto pueden ser por ejemplo utilizar el
equipamiento de estos dispositivos, como la cámara o el GPPS,
o simplemente ganar la capacidad de recabar información
sobre la marcha, sin necesidad de conexión a Internet. Debes
asegurarte de que te adaptas al mundo móvil por las razones
correctas, pues la consiguiente soporte, mantenimiento y
desarrollo de una oferta móvil se convertirá en una nueva línea
de producto respecto a tu modelo original e implicará algunos
costes fijos.
Puntos Clave Decidiendo Movilizar un Sistema
—— Define con claridad las razones para ello y asegúrate de
que son suficientemente fuertes como para dar el siguiente
paso en el proceso.
—— Comprende las diferencias entre móvil y sobremesa. No
copies el sistema pre-existente; por ejemplo, en vez
de utilizar un formulario para capturar la información,
deberías grabar audio y subirlo a tu sistema, permitiendo
a los usuarios tomar notas rápidamente sin la necesidad de
escribir en un dispositivo de tamaño reducido.
—— No intentes implementar todas la funcionalidades de tu
sistema, sólo integra las más relevantes y en una manera
que encaje con la filosofía móvil.
—— Asegúrate de que conoces qué dispositivos utilizarán tus
clientes y qué funcionalidades son las que más interesa
movilizar.
—— Ten bien definida tu estrategia de pruebas en móviles,
la cual debe cubrir pruebas multiplataforma y variados
dispositivos y sistemas operativos.
Aplicaciones Empresariales
155
Gestión de Dispositivos y Aplicaciones
en la Empresa
Al desarrollar una aplicación empresarial, siempre hay que
tener en cuenta que el hardware que contiene datos confidenciales de la empresa se puede extraviar o robar. En la actualidad, hay dos enfoques para asegurar dispositivos, contenidos y
aplicaciones: Gestión de Dispositivos Móviles (MDM, del inglés
Mobile Device Management y Gestión de Aplicaciones Móviles
(MAM, del inglés Mobile Application Management). Ambos han
sido combinados en lo que se conoce como Enterprise Mobility
Management (EMM).
MDM ofrece un control total corporativo sobre un dispositivo, por lo que cuando un dispositivo se pierde, se roba o
un empleado se marcha, llevándose el dispositivo, la empresa
puede limpiar el dispositivo y, esencialmente, éste deja de
funcionar. Este enfoque general se toma cuando la empresa
es propietaria del dispositivo y por tanto todos los datos y
aplicaciones en el dispositivo son propiedad suya: todos los
datos personales almacenados en el dispositivo se almacenan
en él a riesgo del empleado.
MAM permite a una empresa adoptar BYOD, ya que así la
empresa puede asegurar aplicaciones y contenidos descargados
a un dispositivo sin quitarle el control del mismo al propietario. Cuando un empleado deja la empresa, llevándose consigo su
dispositivo, la organización puede deshabilitar las aplicaciones
empresariales y limpiar cualquier contenido descargado en el
dispositivo sin afectar a los datos personales, como fotografías
y aplicaciones de consumo compradas por el empleado. La
mayoría de soluciones de MDM y MAM son multiplataforma,
siendo compatibles con dispositivos Apple, Android, Windows y
BlackBerry, y esto siempre debe tenerse en cuenta a la hora de
decidirse por un proveedor de MDM o MAM.
156
Hay varias funciones de seguridad disponibles a través de
estas dos soluciones de gestión, incluyendo:
——
——
——
——
——
——
——
——
Monitorización de dispositivo
Control de licencias
Distribución vía solución interna Over-The-Air (OTA)
Inventariado de software
Control de recursos
Control remoto
Gestión de la conexión
Soporte y distribución de aplicaciones
Las medidas de seguridad incluyen:
——
——
——
——
——
——
——
Protección de contraseñas
Encriptación de datos en el dispositivo
Encriptación de datos OTA
Bloqueo remoto de dispositivos
Limpieza de datos remota
Reprovisionamiento de dispositivos
Copia de seguridad de datos en los dispositivos
Aplicaciones Empresariales
157
Ejemplos de proveedores de EMM:
——
——
——
——
——
——
——
——
Airwatch2
App473
Apperian4
Good5
Microsoft6
MobileIron7
Mocana8
SAP Afaria9
Plataformas de Desarrollo de
Aplicaciones Móviles (MADP)
Por lo general, un elemento clave de las aplicaciones empresariales es la sincronización de datos. Los dispositivos móviles
tienen que recibir información actualizada o relevante de los
servidores corporativos y los datos actualizados o recogidos
tienen que ser enviado de vuelta. El enfoque de acceso a los
datos está determinado por las responsabilidades del usuario,
así como por la política de confidencialidad. En cualquier caso,
la sincronización tiene que ser segura, ya que los datos de
2 air-watch.com
3 app47.com
4 apperian.com
5 good.com
6 microsoft.com/en-us/windows/windowsintune/explore.aspx
7 mobileiron.com
8 mocana.com
9 www.sap.com/pc/tech/mobile/software/solutions/device-management/
overview.html
Aplicaciones Empresariales
158
las empresas son uno de sus activos más preciados. Aún más,
una aplicación integrada en toda la empresa debe ser multiplataforma. Para compensar las deficiencias de los SDK nativos
así como de las soluciones multiplataforma más comunes en
este aspecto, es posible que desees considerar la evaluación
de soluciones tipo Plataformas de Desarrollo de Aplicaciones
Móviles (MADP). Las MADP son entornos móviles que proporcionan el middleware y las herramientas para desarrollar,
probar, implementar y administrar aplicaciones empresariales
que se ejecutan en múltiples plataformas móviles con distintas
fuentes de datos en el back-end. Su objetivo es simplificar el
desarrollo y reducir sus costes, en entornos donde las habilidades técnicas se deben mantener para múltiples plataformas,
herramientas y complejidades, como la sincronización de datos
y autenticación.
Algunas soluciones disponibles son:
——
——
——
——
——
Pega Amp10
IBM MobileFirst Platform11
Kony KonyOne12
SAP Mobile Platform13
Spring Mobile Solutions14
10 www.pega.com
11 www.ibm.com/mobilefirst/us/en/why-ibm-for-mobile/platform.html
12 www.kony.com/products
13 www.sap.com/smp
14 www.springmobilesolutions.com
Aplicaciones Empresariales
159
Seguridad en Aplicaciones Empresariales
Una de las funciones principales de cualquier departamento de
TIC es asegurarse de que todos los aspectos de la infraestructura de la empresa están asegurados contra ataques, de modo
que no haya fugas de datos y éstos no se vean comprometidos
o robados. Dado que los dispositivos móviles son una extensión
de la infraestructura TIC de una empresa, todas las aplicaciones
empresariales deben ser diseñados para asegurarse de que no
se pueden utilizar para obtener acceso ilegal a la red interna
corporativa. Como desarrollador de aplicaciones empresariales,
por lo general se te pedirá que te ajustes a las normas que la
empresa haya establecido en sus políticas de seguridad, así
que debes estar preparado para responder a preguntas acerca
de la seguridad de tu aplicación, como el cifrado de datos,
la comunicación en red y en cómo lidias con dispositivos
jailbreakeados o rooteados.
Muchos proveedores de EMM consolidan la seguridad
en aplicaciones utilizando técnicas tales como inyección
de código u ofreciendo un SDK a los desarrolladores. Éstas
funcionalidades, y las actualizaciones regulares de las plataformas, permiten a las empresas bloquear de manera remota sus
aplicaciones y mantenerse al día en cuanto al voluble panorama de la seguridad móvil sin tener que invertir demasiado
esfuerzo y dinero en esta tarea.
Aplicaciones Empresariales
160
Puntos Clave para Asegurar Aplicaciones Empresariales
—— Si usas un proveedor de EMM, verifica de que tienen las
funcionalidades en seguridad suficientes para dar soporte a
tus necesidades corporativas.
—— Cuando almacenes un dato en el dispositivo, asegúrate de
que está encriptado.
—— Cuando comuniques con un servicio web, usa siempre
https.
—— Además de lo anterior, asegúrate de que realizas verificaciones de puntos finales tanto en la aplicación como en el
servicio web, para confirmar que tanto el servidor como el
dispositivo son válidos.
—— Siempre verifica que los ajustes del dispositivo cuentan
con una checksum para asegurarte de que los valores no
pueden ser cambiados una vez instalada la aplicación en el
dispositivo.
—— No permitas que la aplicación se ejecute en dispositivos
jailbreakeados o rooteados.
—— Ten un método para deshabilitar la aplicación si ésta
detecta que ha sido comprometida.
—— Asegúrate de que el uso de encriptación es conforme a
normativas de exportación y legislación relevantes para la
región donde la aplicación es utilizada.
Aplicaciones Empresariales
161
Videojuegos para Móviles
La Economía de los Juegos para Móviles
Antes de comenzar a hablar sobre el desarrollo de juegos para
móviles deberíamos tratar de entender qué está impulsando ese
mercado. El auge de los videojuegos móviles desde los primeros
días de Java (técnicamente J2ME) sigue siendo asombroso. La
firma de investigación del mercado de videojuegos, Newzoo
elevó recientemente sus estimaciones del mercado de los
juegos de móvil global, prediciendo que superaría los 25 mil
millones de dólares en el 2014 y alcanzando más de 40 mil
millones para el año 20171. Según VentureBeat2 los juegos
representan el 40 por ciento de todas las descargas de aplicaciones en tiendas y alrededor del 75 por ciento del gasto total,
estando la mayoría de esos ingresos centrados en los 10 juegos
líderes, en su mayoría F2P (free-to-play), es decir, total o
parcialmente gratuitos. Algunos de estos juegos han dominado
los rankings durante los últimos dos años. Juegos como Clash
of Clans, Candy Crush y The Simpsons Tapped Out han generado
miles de millones y han puesto los juegos móviles en el mismo
nivel que los del mercado de videoconsolas.
Es importante saber que para iOS y Android la gran mayoría
de los ingresos de los juegos para móviles provienen de juegos
F2P. También vale la pena señalar que el 7% de los ingresos
1 www.applift.com/blog/mobile-games-market-update.html
2 venturebeat.com/2014/11/04/candy-crush-leads-in-u-s-and-u-k-but-clash-
of-clans-reigns-in-mobile-crazy-south-korea
Videojuegos para Móviles
163
en iOS proviene de juegos de alta calidad, casi el doble que en
Android3.
Hacer que los juegos funcionen en múltiples plataformas es
cada vez más fácil. Alrededor del 54% de todos los juegos móviles están diseñados utilizando motores de terceros y el 45%
de éstos utilizan Unity. Hay muchos otros motores de Cocos,
Corona, GameMaker, Unreal, etc. Cada motor ofrece diferentes
ventajas y perspectivas para que desarrolladores con diferentes
habilidades puedan construir sus ideas y prepararlas para la
lanzamiento rápidamente. Consulta el capítulo Multiplataforma
de esta guía para obtener más información sobre los entornos
disponibles.
Muchos desarrolladores creen que serán el próximo desarrollador indie que se haga rico. Esto ocurre con juegos tales
como Flappy Bird, que ganan un increíble número de usuarios,
pero estos casos están más cerca de ser premios de lotería que
ejemplos a seguir. En cambio, es importante que los desarrolladores se den cuenta de que el mercado de juegos para móviles
se ha convertido en un espacio sofisticado con muchas facetas
y desafíos. Antes de empezar a crear tu juego, necesitas
prestar atención para comprener la naturaleza del mercado y
el público. Una parte esencial de esto es que se ha convertido
en un mercado enormemente competitivo, con un gran número
de pequeños equipos productores de grandes volúmenes de
contenido gastándose mucho dinero en desarrollo y publicidad
para conservar su posición.
3 venturebeat.com/2014/04/25/apple-vs-google-a-world-view-on-the-mobile-
gaming-war
Videojuegos para Móviles
164
Gratuitos vs. De Pago
En términos de económicos, está claro lo que sucede cuando la
oferta aumenta: los precios caen. Con un suministro de facto
infinito, el precio cae a cero. Esto es exactamente lo que ha
sucedido y la explicación de que el modelo F2P esté dominando. Pero, ¿qué pasa con ese 7% de los ingresos en iOS que
procede de juegos premium? Como cualquier mercado, cuando
se trata de la competencia tenemos una opción. Podemos
buscar volumen (crear un producto básico) o diferenciarnos
(crear un nicho). Los juegos premium de éxito son los que han
sido capaces de atraer a una audiencia ofreciendo algo que
percibido como de mayor valor que en el resto de los juegos
disponibles. Juegos como Monument Valley o The Room han
demostrado que esto es todavía posible, y se les descubre debido a su precio de venta. Esto no ha estado a la escala de los
ingresos de los mejores juegos en F2P, a pesar de la insistencia
de las tiendas de aplicaciones por potenciarlos.
El movimiento hacia lo gratuito no ha sido un fácil para
muchos desarrolladores, y los intentos de 'clonar' de los modelos de negocio de juegos como Clash of Clans o Candy Crush
rara vez han visto un nivel comparable de éxito. Todo esto a
pesar de una fórmula que aparente ser muy simple: tomar una
simple mecánica de juego y ofrecer un nuevo contexto social
con el fin de que sea infinitamente repetible; a continuación,
agregar una forma de fricción que dificulta que el jugador
alcance sus objetivos, pero que está programada para dejar el
objetivo 'en la punta de los dedos'; permitir que la gente pague
para eliminar esa fricción, pero hacer que cada objetivo se
convierta en el detonante de uno nuevo, también fuera de su
alcance.
Por supuesto esto no es tan fácil y este tipo de fórmula
es algo que puede convertirse rápidamente en 'bastante poco
Videojuegos para Móviles
165
divertido' y generar una gran cantidad de abandonos. Incluso
si el desarrollador añade un barril lleno de análisis de datos
para averiguar dónde están abandonando los jugadores o para
encontrar la mejor manera de que paguen más, al final el juego
muere inevitablemente. Peor que eso, cuanto más juegos son
percibidos con esa rígida aplicación de un modelo de negocio
más allá del disfrute del mismo juego, más jugadores rechazan
ese tipo de juegos. Si percibes que el juego no es más que
un intento de abrirte la cartera, ¿crees que estarás muy
enganchado como jugador?
Lo que hace que esos juegos funcionen es que comprenden
a las personas y cómo construir un servicio que les permite
sentirse competente, en el control y capaz de escapar de sus
vidas cotidianas. Los ingresos llegan cuando podemos extender
lo más posible el deleite que sienten los jugadores jugadores y
su compromiso a largo plazo, dándoles una razón para querer
gastar dinero. Tenemos que construir 'valor de ciclo de vida'
(lifetime value), no sólo ingresos a corto plazo.
Las discusiones entre los juegos gratuitos y de pago se
han vuelto casi tribales entre los desarrolladores de juegos,
que se preguntan si los modelos de negocio han empañado
la naturaleza del diseño de videojuegos, llegando incluso a
cuestionarse acerca de la moralidad de estos diseños centrados
en la monetización. Comprender qué modelo seguir, gratuito
o de pago, es una cuestión esencial para cualquier desarrollador de juegos móviles, pero no se trata tanto del modelo de
negocio que nos gustaría seguir como de la mejor manera de
involucrar al jugador con el contenido que estamos creando
para deleitarle.
Videojuegos para Móviles
166
La Ética de Monetizar Juegos
Gran parte de la atención de la industria móvil en el 2014 se
ha centrado en las cuestiones morales y éticas detrás de las
aplicaciones de pago frente al F2P. Un juego F2P bien hecho
saca el valor del jugador gratuito no sólo en términos de su
potencial viral, sino también en términos de creación de una
marca y condiciones que animan a los jugadores a pagar. Sin
embargo, los F2P no tienen una gran reputación, especialmente
entre los padres preocupados por las compras dentro de la
aplicación y por algunos diseñadores de juegos. Ha habido
una serie de escándalos notables, en especial con niños
comprando ‘ accidentally’ miles de dólares en compras dentro
de la aplicación. Este argumento ha empañado la imagen
de la industria de los juegos en su conjunto y ha atraído la
atención de los reguladores legales, incluida la UE, que han
publicado directrices sobre la venta de las compras in-app
para niños. Sin embargo, hasta la fecha la regulación parece
haber sido comprensiva y lógica. Con toda razón, han pedido
a diseñadores y jdistribuidores que comunican qué se vende y
cómo se accede a ello, en particular en el caso de un público
menor de edad. Se ha solicitado a las plataformas que realicen
importantes cambios, aunque de bajo impacto, en su funcionamiento (de todos monos, esto ya estaba pasando), y aclarar las
expectativas de uso que, a la postre, ya están impuestas por la
legislación vigente.
Otra cuestión planteada en contra del F2P es que, como
mínimo, la mitad de los ingresos proviene del 0,15% de los
jugadores. Según la empresa de testeo de aplicaciones Swrve4,
sólo el 1,5% de los jugadores gastan dinero en un juego F2P.
Sin embargo, este informe es debatible ya que está compa4 recode.net/2014/02/26/a-long-tail-of-whales-half-of-mobile-games-money-
comes-from-0-15-percent-of-players
Videojuegos para Móviles
167
rando, esencialmente, el 'comprar' de un juego premium con
el 'descargar' de un juego F2P, cuando no son la misma cosa.
Los jugadores a menudo descargarán un juego como capricho,
pero quizás nunca lleguen jugarlo, y muchos juegos tienen
diferentes perfiles de gasto. Algunos juegos tendrán niveles
de conversión altos, mientras que otros tendrán un tiempo de
conversión más tardío, y cada juego es diferente. Aunque estos
números tan extremos sean ciertos, ¿sería eso algo necesariamente negativo? Un solo jugador pagando 5.000 dólares por
algo en un juego puede parecer extremo, ¿pero si gana un
cierto valor personal al hacerlo será eso malo?
La respuesta a esta pregunta depende de varios factores,
pero se puede resumir en torno a la manipulación o la
adicción. Los diseñadores de juegos F2P suelen hablar de
condicionamiento operante, y en particular de un experimento
conocido como 'caja de solución de problemas' o 'skinner box'.
Estas cajas, que llevan el nombre del psicólogo que las creó,
permite a animales obtener alimentos pulsando un botón. El
experimento demostró que la variación de la velocidad a la que
el botón liberaba la comida afectaba al comportamiento de los
animales. La premisa es que en los juegos de los diseñadores
encuentran la manera de recompensar a los jugadores y que
éste es un método equivalente de condicionamiento. Es cierto
que algunos experimentos han demostrado que ese tipo de
condicionamiento puede funcionar en los seres humanos, al
menos a corto plazo, pero en los juegos no controlamos todos
los estímulos o utilizamos alimentos (u otras necesidades de
bajo nivel) como motivación. Como diseñadores, hay métodos
mucho más potentes para retener a un jugador que dar
recompensas a corto plazo. Podemos contar historias. Podemos
deleitarnos con estímulos visuales y sonoros. Podemos crear
juegos que se convierten en experiencias sociales compartidas.
Todos ellos tienen un efecto estimulante sobre los usuarios
Videojuegos para Móviles
168
mucho mayor que cualquier ejercicio de condicionamiento
operante. En el corto plazo es posible (pero no deberíamos)
manipular los jugadores, especialmente las personas vulnerables como los niños, pero si lo haces esa manipulación
no durará mucho tiempo y, en el largo plazo, reducirá nuestro
valor del ciclo de vida. A nivel comercial, es mucho más eficaz
hacer buenos juegos.
La adicción es algo que siempre hemos utilizado como
atajo para decir que un juego es bueno y atractivo. Ahora se
ha convertido en una fuente de preocupación. Cualquier juego
recompensa a los jugadores con una liberación de dopamina
cuando tienen éxito, lo cual crea una respuesta fisiológica no
muy diferente al consumo de drogas o el ejercicio físico. Sabemos que en el caso de los juegos de azar esta clase de química
del cuerpo puede crear adicción, que como es una compulsión
que anula el comportamiento racional. Sin embargo, los juegos
de azar ofrecen un estímulo muy diferente al resto de juegos.
Con los juegos de azar el estímulo se basa en la incertidumbre
y la apuesta que hacemos. Esa incertidumbre es constante cada
vez que jugamos. Con los juegos, en cambio, aprendemos la
mecánica y eso reduce la potencia del estímulo con el tiempo.
Aunque la adicción a los videojuegos es un problema reconocido, es algo que pertenece al ámbito de la adicción conductual,
donde una actividad normal se convierte en compulsiva. Este
tema aún está en investigación y no está incluido en el Manual
diagnóstico y estadístico de los trastornos mentales, en su
quinta edición (DSM-5).
Videojuegos para Móviles
169
Hacer un Buen Juego
La creación de experiencias agradables para nuestro público
objetivo requerirá de nuestra máxima creatividad, tal vez más.
Los jugadores esperan que creemos diversión y les mostremos
nuevas ideas de contenido, y también necesitan ver algo
familiar a fin de poder comparar y ayudarles a entender y
relacionarse con nuevos contenidos. Scott Rogers en su libro
"Level Up" describió esto como el "El Triángulo de la Rareza"
(“Triangle of Weirdness”)5. Afirmó que los juegos se componen
de un mundo, actividades y personajes, y que podemos cambiar
cualquiera de estos por nuevas ideas, pero no podemos cambiar
los tres sin correr el riesgo de perder la audiencia.
El tipo de diversión que estamos buscando en los juegos es
la que sucede cuando el jugador es capaz de suspender su incredulidad y participar en una experiencia que no tiene ningún
valor en el mundo real. Llegamos a ser totalmente absorbidos
en la mecánica y la narrativa de la experiencia. Curiosamente,
el desafío y la frustración son tanto las motivaciones para jugar como las potenciales causas para abandonar la experiencia.
Si somos capaces de mantener el equilibrio entre estos estados
5 mrbossdesign.blogspot.co.uk/2008/09/triangle-of-weirdness.html
170
generaremos un estado de placer que todos los diseñadores de
juegos conocen, el ‘Flujo de Csikszentmihalyi’6.
Tenemos que apreciar que lo que es divertido en el espacio
móvil es diferente de otras plataformas e incluso pueden
parecer contradictorios. Necesitamos juegos que sean simples
y accesibles, pero con suficiente profundidad, propósito y
progresión como para retener la atención del jugador. Si nos
fijamos en lo que ha sido un éxito y en lo que no, vemos que
un juego móvil tiene que darnos un éxito significativo en
menos de un minuto, pero que nos mantendrá jugando durante
cientos de días. El juego tiene que evitar que recorramos todo
el contenido en una sola sesión, pero también conseguir que
juguemos docenas de veces al día. Necesitamos un juego que
sea familiar, pero que también destaque lo suficiente como
para ser destacado por las tiendas de aplicaciones. Nuestro
juego tiene que ser agradable (y, a menudo gratis), pero
aún así crear nuevas razones para que los jugadores quieran,
es más, necesiten gastar dinero. Y la lista de las aparentes
contradicciones continúa.
Hay juegos desarrollados a partir de mecánicas emergentes,
bloques de construcción que se combinan creando resultados
sorprendentes o estratégicos, como Chess o Clash of Clans.
Luego están los construidos con una serie de puntos de
decisión progresivos que se resuelven con pasos encadenados
para crear una historia como FTL o Monkey Island. Incluso
podemos crear juegos que incorporen la creatividad del jugador
como Createrria o Minecraft, o rompecabezas abstractos como
Threes o SuperHexagon. Sea cual sea el camino que tomamos,
el equilibrio está en el centro de nuestro razonamiento como
diseñador. Tenemos que decidir hasta qué punto el juego se
6 scienceandvalues.wordpress.com/2010/02/26/csikszentmihalyis-
flow-pleasure-and-creativity
Videojuegos para Móviles
171
verá afectado por la habilidad y cuánto por la suerte, el grado
en que el juego sigue una narrativa fija o es liderada por el jugador, y por supuesto la complejidad de los sistemas internos,
ya sea sobre el desarrollo de personajes o una economía de
recursos. En el F2P también tenemos que considerar el impacto
del dinero gastado en la experiencia de juego.
Lo que a menudo olvidamos es lo que le importa a los
jugadores. Una de las preguntas más importantes que debes
hacerte es por qué deben elegir tu juego. Seamos sinceros:
la mayoría de los videojuegos móviles comienzan como una
distracción, incluso si al final nos pasamos más tiempo con
nuestros teléfonos que con nuestras consolas. Así que ¿por
qué habrían de jugar tu juego? Decir que es un buen juego
no es suficiente. Tenemos que ser capaces de responder a esa
pregunta con honestidad. Aprender del diseño clásico y del
marketing de productos te ayudará a tomar buenas decisiones
al respecto.
Enganchando al Jugador Móvil
Cuando desarrollamos juegos para móviles estamos creando
una experiencia para entretener a los jugadores en un tipo
específico de dispositivo. Tablets y teléfonos satisfacen necesidades diferentes y requieren una atención específica y detalla
respecto a las necesidades de uso que cubren. El teléfono
suele estar centrado en 'el siguiente minuto', es decir lo más
inmediato, lo que obtenemos cuando esperamos que suceda
algo o necesitamos entretenernos. ¿Cómo usan los jugadores
sus dispositivos tablet? Se trata más bien de un período de
descanso o relajación más largo. ¿Qué implica eso para el juego
que queremos hacer?
La producción de nuestro juego es la combinación de una
visión única, una narrativa convincente y una experiencia ha
sido diseñado para afectar a las emociones de los jugadores.
Videojuegos para Móviles
172
Todo esto tiene que encajar con la forma en que se consume el
juego y en el móvil tendremos que comprender las restricciones
inherentes a estos dispositivos. El tamaño limitado de la pantalla, los controles de pantalla táctil, acelerómetros, duración
de la batería, la posibilidad de ser interrumpido, la facilidad
para salir y guardar el dispositivo, la calidad del altavoz, la
salida de auriculares de alta calidad, etc., afectan a la forma en
que los jugadores interactúan con el dispositivo. Los teléfonos
móviles están (en su mayoría) conectados a Internet y son el
dispositivo más influyente, ya que siempre los llevamos.
Como ejemplo, piensa en la forma en que implementamos
los controles. Las pantallas táctiles permiten una amplia gama
de movimientos en un plano 2D, pero después de un corto
tiempo nuestra piel se calienta y pierde capacitancia, por lo
que los controles serán menos fiables. Si simplemente tratamos
de emular un sistema de joystick (como muchos juegos hacen)
que pronto tendrás problemas con la experiencia de juego.
Sin duda, ésta es una de las razones por la que los juegos de
disparo en primera persona no han sido tan populares en el
móvil. En cambio, debemos diseñar la mecánica de juego con
controles que hagan el contacto cómodo o que comprendan
los límites de los métodos disponibles, y hacerlos parte de la
experiencia. MiniGore es un gran ejemplo, donde la dificultad
del juego se ha mejorado gracias a la mecánica twinstick,
que lo hace progresivamente más difícil de controlar. Por
otro lado, Hayday de Supercell demostró cómo lo táctil podía
ser absolutamente maravilloso. El movimiento utilizado para
recoger las cosechas es tan agradable que eleva este juego muy
por encima de otros de cultivo en cualquier plataforma, y era
perfecto para una experiencia en tablet.
La necesidad de satisfacción inmediata de los jugadores no
reemplaza la capacidad de enganchar a más largo plazo. Sin
embargo, refuerza la necesidad de simplicidad en el juego, tan
Videojuegos para Móviles
173
necesaria en las plataformas móviles, pero la simplicidad en sí
no podrá seguir sosteniendo el nivel de interés en jugar. Para
mantener a la gente jugando, necesitamos crear un contexto
que nos dé una razón para repetir la mecánica de juego. Algo
que nos dé un sentido de propósito y progresión, que llame
la atención después de que la sesión de juego ha terminado,
animando a volver a jugar. Conviene que esa mecánica inicial
sea agradable incluso tras de miles de obras de juego.
Juegos como CSR y Candy Crush introdujeron este método
de diseño de juegos en el mercado móvil. Encontraron maneras
de encadenar una serie de procesos mecánicos para mantener
la jugabilidad a través de miles de sesiones, a la vez que daban
la sensación de que las metas se conseguían mágicamente.
Construyen un compromiso a largo plazo manteniendo a los
jugadores involucrados en su juego mientras la experiencia
sea suficientemente significativa. Conseguir que los jugadores
estén más tiempo jugando tiene un impacto directo en su disposición a gastar dinero en el juego. En una encuesta realizada
en el 2014 por Unity7, el gasto medio de los jugadores que
pasaron menos de una hora con un juego es de 0,66 dólares
americanos, pero para los que estuvieron más de 10 horas se
eleva a 15,15.
Diseñar el Camino del Jugador
Comprender la importancia del vínculo a largo plazo con
el jugador ha tenido un impacto profundo en el diseño de
videojuegos. La idea de un juego como mecánica o historia se
transforma cuando se comprende que no sólo es el personaje
heroico el que se embarca en un viaje, sino que nuestro
jugador también lo hace.
7 www.gamesindustry.biz/articles/2014-10-14-mobile-spending-driven-by-35-
44-year-olds
Videojuegos para Móviles
174
La primera etapa de ese viaje es el descubrimiento. Los
jugadores tienen un conjunto particular de necesidades y
aspiraciones cuando ven tu juego por primera vez. Tienes que
asegurarte de que el camino hacia el descubrimiento dispone
condiciones propicias a descargar y jugar el juego por primera
vez. Por lo general, hay pocas oportunidades de establecer las
expectativas correctas, pero hacerlo es esencial. Si el juego
tiene un coste inicial, informa al jugador de por qué debería
comprarlo comprarlo, lo que va a perderse si no lo hacen. Si el
juego es gratuito, también tienes que crear expectativas, pero
también debes mostrar al jugador por qué la publicidad es es
un mal menor, o si hay compras en la aplicación por qué vale
la pena realizarlas. Este es un arte delicado. Debes ser claro y
transparente, y aún así comunicar por qué el juego es digno de
su tiempo e inversión.
Una vez que el jugador ha tomado la decisión de instalar el
juego tenemos que facilitarle su uso. Haz el icono y nombre del
juego inmediatamente reconocibles e, idealmente, retadores;
es decir, una razón para iniciarlo. En esta etapa no queremos
que tome decisiones acerca de qué personajes utilizar o qué
niveles elegir - que no saben todavía. No le hagas seguirte en
Facebook o configurar una cuenta antes de jugar, muéstrale de
qué trata el juego. Luego sorpréndele. Podemos comprar esto a
"La Apertura Bond", los primeros 5 minutos de cada película de
James Bond. Nos impresiona y al mismo tiempo establece todo
lo que necesitamos saber acerca de la historia, los agentes
super-secretos y el escenario en el que tiene lugar. Pero hace
más que eso, asegura que nunca queramos levantarnos del
asiento. Es esta doble función de mostrar, no explicar, lo que
establece las expectativas para el resto de la película, algo que
también se aplica a los videojuegos. Como es un juego, más
que mostrar o explicar queremos 'hacer'. El jugador tiene que
Videojuegos para Móviles
175
aprender acerca de los juegos mediante la acción, y disfrutar
de sus logros rápidamente.
Si tenemos éxito y logramos educar a los jugadores y establecer las expectativas correctas les mantendremos jugando.
Ten en cuenta que necesitan razones para volver. Para que un
juego se convierta en algo que jugamos regularmente y durante
mucho tiempo, tenemos que entender cómo se percibe el éxito
en el mismo. Debemos saber que habrá retos y progresión,
así como un sentido de propósito. Esto significa que tenemos
que vernos fracasar y aún así continuar jugando. Necesitamos
pensar que tenemos asuntos pendientes que nos obligan a
superar la dificultad de volver a jugar. Hay que entender las
razones para seguir y tener una serie de objetivos alcanzables,
sin que compliquen en exceso el juego. Una técnica que puede
ayudar es el concepto del melodrama. Hay dos cosas que están
sucediendo aquí. En primer lugar, estamos aceptando que
tenemos que dar a nuestra audiencia una interrupción natural
en la experiencia de juego, y eso es importante. No sugerimos
evitar que los jugadores continúen, pero darles la opción de
detenerse es útil para construir el compromiso, siempre y
cuando se les da una razón para volver. Esa razón para volver
podría ser esperar a tener más combustible, que las plantas
crezcan, que un vehículo esté reparado o incluso que otro
jugador visite la ciudad. La clave es crear la sensación de que
si no vuelve se estarán perdiendo algo. Pero sin ser penalizados. Si eres capaz de animar a los jugadores a querer regresar
con regularidad y crear "citas" para jugar, entonces sabrás que
están verdaderamente "comprometidos".
Una vez que los jugadores están verdaderamente comprometidos, otros factores se vuelven importantes si quieres
mantener su interés. Necesitas mover el juego hacia adelante,
con necesidades cambiantes. Por ejemplo en la forma de contenido o de extensiones de juego. También podría ser a través
Videojuegos para Móviles
176
de juego social. Esto significa la creación de una comunidad,
los lazos de unión y el sentido de pertenencia mediante el
establecimiento de reglas compartidas. Cuando diseñamos
juegos tenemos que pensar en cómo las reglas que utilizamos
para entretener y crear un compromiso también proporcionan
los medios para que las personas se identifiquen con nuestro
juego y lo expresen. Los factores sociales son increíblemente
importantes y pueden tener un impacto notable, no sólo en
términos de participación sino también en los ingresos. Si la
compra dentro de la aplicación no sólo ayuda a a sacarle más
partido al juego, sino que también hace ganar prestigio ante
otros jugadores, los jugadores serán más propenso a hacerlo.
Cabe destacar que las comunidades sociales ayudan a
crear una mayor profundidad de compromiso que algunos
han denominado 'Whales' pero y también podemos definir
como "auténticos fans". Estos son los jugadores que pasan
cantidades significativas en un juego y que a menudo pueden
ser la fuente principal de sus ingresos. En muchos juegos, estos
jugadores no serán especialmente sociables, ya que prefieren
mejorar su capacidad de juego en lugar de relacionarse con
otros. Sin embargo, la presencia de otros jugadores crea
condiciones favorables que permiten a estos jugadores emerger.
Sin jugadores en modo gratuito tendemos a no conseguir
el nivel de compromiso del auténtico fan. Es importante no
confundir estos jugadores con las personas que son adictas. En
la adicción los individuos tienen una compulsión que abruma
su comportamiento de otra manera racional. En la práctica, la
mayoría de los auténticos fans son personas racionales que han
hecho del juego su principal afición. Una conducta adictiva
siempre es perjudicial para el individuo y debemos hacer todo
lo posible para ayudar a cualquier persona con este tipo de
problemas.
La etapa final de la vida del juego es el "churning" o
Videojuegos para Móviles
177
abandono. Es inevitable que al final los jugadores dejen de
jugar nuestro juego. Queremos retrasar esto el mayor tiempo
posible, pero ignorar esa circunstancia nos dará problemas.
Para entender lo que mantiene a la gente jugando durante un
período de tiempo prolongado piensa en el "Giro Colombo", se
basa en la serie detectivesca en que el actor Peter Falk hace
del torpe teniente del mismo nombre. Lo que hizo de esta una
de las mejores series de televisión de todos los tiempos es que
hizo algo extraño con la narrativa de un misterioso asesinato:
el espectador ve quién lo hizo. ¿Dónde está el atractivo de
una serie sobre asesinatos si se sabe quiénes los cometen? La
clave del espectáculo estaba en esperar a que Colombo estas
famosas palabras: "¡Sólo una cosa más!", cosa que siempre
ocurría en los últimos minutos del programa. El detective habla
por cuarta o quinta vez con el asesino sobre alguna extraña
y aparentemente aleatoria evidencia del crimen. Entonces le
suelta esa frase y el espectador sabe que entonces procedería
aclarar todo lo referente al asesinato, no sólo quién hizo, sino
por qué y cómo Colombo lo había descubierto. Esa es el tipo
de recompensa predecible que el espectador estaba esperando.
¿Qué es lo que hace que los jugadores vuelvan a tu juego
incluso cuando saben todo lo que va a ocurrir?
Ser Descubierto
Si has seguido estas pautas, entonces habrás puesto tu diseño
de juego en las mejores condiciones para que se adapte a tu
audiencia y, con suerte, te dará una oportunidad de competir
en el mercado. Sin embargo, esto por sí solo no es suficiente.
Tenemos que usar todas las vías de comunicación que podamos
y por lo general estas requieren inversión. Todavía es posible
tener éxito sin tener que gastar dinero en publicidad, pero
pero implica tener el boleto ganador en una lotería mundial.
Videojuegos para Móviles
178
Esta circunstancia se aplica tanto a juegos como a cualquier
otro tipo de aplicación móvil. Encontrarás algunos consejos de
cómo comercializar tu software en el capítulo sobre monetización de este libro, y puede que te interesen las siguientes
estrategias específicas para videojuegos.
Hacerse notar por la prensa puede ayudar, especialmente
si participas en competiciones tales como Pocket Gamer’s Big
Indie Pitch8 o Indie Awards at Casual Connect9. También puede
ayudarte atraer la atención de los usuarios de YouTube.
Gastar dinero en publicidad puede ayudar, pero es importante ser consciente de que estás compitiendo con mucha
gente y algunos productores relevantes que buscan grandes
audiencias. Es importante recordar lo que estás tratando de
lograr al crear un anuncio. Hay dos motivaciones: el crear
presencia de producto y la acción directa (es decir, la descarga
del juego). Es posible, además, poner anuncios de un juego
otros juegos y aplicaciones. El camino entre el anuncio y la
tienda de aplicaciones es completamente directo. Un clic y es
posible comprar/descargar el juego. Eses algo increíble, ya que
ningún otro medio tiene ese tipo de experiencia sin fricción.
Otra de las peculiaridades a tener en cuenta es que cuanto
mayor sea el alcance (rango de jugadores) que buscas, más
cara cada una de las instalaciones. Esto se debe a que la
compra de espacio en una red de publicidad se basa en un
proceso de licitación y los resultados se calculará sobre la base
del coste por instalación (Cost Per Install), coste por mil (Cost
Per Mille) o una mezcla de ambos conocida como eCPM (CPM
efectivo), así como redes publicitarias como Chartboost.com o
AppFlood.com, que ofrecen publicidad cruzada.
La publicidad basada vídeo está creciendo y permite al
8 www.pocketgamer.biz/events
9 indieprize.org
Videojuegos para Móviles
179
jugador entender al instante la naturaleza del juego que
se muestra. Esto se combina ,a menudo, con Unity Ads10,
Vungle.com y AdColony.com, con incentivos dentro del juego
- como por ejemplo una moneda. Este tipo de incentivo es
diferente de los incentivos externos, tales como los ofrecidos
por proveedores como Tapjoy y, y esto es clave, no están
permitidos por Apple.
Los eventos regulares y de comunicación con la comunidad
nos permiten mantener y hacer crecer nuestra audiencia.
Sobre la base de auténticas experiencias sociales, tales como
la grabación de vídeos del juego y el intercambio de datos de
la comunidad (puntuaciones más altas, etc.), los jugadores
pueden ayudarte a llegar a sus amigos y a otros jugadores
potenciales a través de Facebook, Twitter, YouTube y Everyplay.
Al final, a pesar de todas las diferencias en los detalles,
el mundo móvil es como cualquier otra plataforma. Tenemos
que adquirir, retener y rentabilizar nuestra audiencia. Eso sólo
sucede si entretenemos a los jugadores en una manera coherente con sus dispositivos. Los móviles son, probablemente,
los dispositivos más sociales y más integrados de la historia
humana. Los juegos para móviles está creciendo a pesar de
las dificultades, y las lecciones aprendidas afectarán todos los
aspectos del desarrollo de videojuegos.
10 unityads.unity3d.com
Desarrollo Móvil y el
Internet de las Cosas
Hace años, dos gigantes -la industria móvil y la Internet
industrial (también conocida como m2m, telemetría integradas
e industriales)- vivían vidas separadas. Cada una facturando
un billón de dólares hasta la fecha y, sin embargo, con muy
poco conocimiento compartido en temas relacionados con
cómo proporcionar, en última instancia, servicios end-to-end
en un ámbito que los involucraba a ambos. Algunos dicen que
es debido a que las compañías de móviles no tienen tradición
en trabajar con tecnología de terceros, siendo sus formatos
o protocolos a medida de aplicaciones industriales. Otros
dicen que es más bien porque los desarrolladores de hardware
que crean servicios para el Internet de las Cosas (IoT, de sus
siglas en inglés) no conocen o no prestan interés en aprender
programación Java para Android o el lenguaje Objective-C,
utilizado para crear aplicaciones nativas para iOS.
Por suerte las tornas están cambiando, y muchos sistemas
de hardware tradicionalmente cerrados están abriendo APIs y
código, publicándolo incluso GitHub1. Migrar hacia estándares
más abiertos y exponer interfaces personalizadas a las
tecnologías basadas en IP resulta prometedor. La necesidad de
comunicar los teléfonos con objetos conectados es cada vez
más común, y muchos dispositivos de hardware se encuentran
cada vez más desfasados, o incluso inútiles, si no incluyen
una aplicación. La funcionalidad de un sistema también se
incrementa con el tiempo tras la adquisición de un producto de
hardware mediante la actualización de firmware, las aplica1 github.com/
Desarrollo Móvil y el Internet de las Cosas
182
ciones, y los servicios del lado del servidor. La costumbre de
lanzar pronto y a menudo se ha extendido desde lo digital en
el mundo físico, gracias a la arquitectura de software dinámica
y la actualización OTA (over-the-air), por no hablar de habituar
a los usuarios a comenzar a utilizar objetos que apenas
funcionan cuando se adquieren.
Nuevos roles para el móvil
Los primeros usos de dispositivos móviles mostraban el
equivalente a ventanas que indicaban lo que esos dispositivos
estaban haciendo. Actualmente, tanto los dispositivos móviles
como las aplicaciones pueden controlar dispositivos IoT de
forma remota, e incluso actuar como un sensor; donde, por
ejemplo, la posición GPS de un usuario es esencial para muchos
tipos de localización de contenidos y servicios contextuales.
En otros casos, el smartphone es una puerta de enlace o proxy
para sensores, como es el caso de un dispositivo de seguimiento deportivo con conectividad bluetooth. Otras funcionalidades
habituales son: control remoto, visualización, almacenamiento,
operatividad tanto remota como sin conexión, y sistema de
autenticación.
Ejemplos de integración de IoT con aplicaciones móviles:
——
——
——
——
NEST Smart homes: developer.nest.com
Philips Hue LED lighting: meethue.com
The Nike+ product line: nikeplus.nike.com
BackYardBrains' Roboroach, un sistema de control remoto
para cucarachas: backyardbrains.com/products/roboroach
Visita postscapes.com/internet-of-things-examples para
ver más ejemplos de diferentes ámbitos, como la salud, las
infraestructuras urbanas, la monitorización del medioambiente
o la industria tradicional.
Desarrollo Móvil y el Internet de las Cosas
183
Herramientas del oficio
Desde el punto de vista del desarrollador, la aparición y
popularidad de la creciente gama de herramientas y kits de
desarrollo de terceros es más un punto de interés genuino
que una mera moda pasajera. En el momento de escribir estas
líneas, el IoT móvil es prácticamente una carrera entre dos
caballos llamados iOS y las liberías para desarrollo nativo de
Android SDK. Las APIs REST, por supuesto, se pueden generar
para la mayoría de aplicaciones móviles.
El contexto puede ser clave
Cada segmento de mercado del IoT; de los wearables a la
automatización de bienes raíces, desde aplicaciones médicas
a un control de vigilancia, tiene sus propios desafíos; por
ejemplo, el uso sin conectividad, los grandes volúmenes de
datos, la necesidad de encriptación, la interacción en tiempo
real, o las altas demandas de ancho de banda. Ninguna herramienta o biblioteca a todos cubre, El contexto puede limitar
tus opciones de implementación.
Puede que te preguntes, con razón, ¿qué hace que una
aplicación sea IoT? Aparentemente no parece muy diferente
de cualquier aplicación cliente a una base de datos, así que
¿cuál es el factor diferencial? El diablo está en los detalles,
como siempre. Digamos que estás auditando el consumo de
energía en una casa y hay un gadget conectado a la caja de
fusibles, el cual se comunica regularmente con un servicio a
través de una interfaz RESTful vía HTTP, y tú accedes a una
página web plagada de gráficos a través de tu tablet. Pero
entonces tu cliente quiere leer los datos históricos cuando esté
desconectado, o leer una etiqueta NFC, o quizás enviar un SMS
recordatorio amistoso cuando la sauna tenga la temperatura
adecuada, o... por qué no,escanear algunos iBeacons con el
Desarrollo Móvil y el Internet de las Cosas
184
Bluetooth en modo baja energía. De repente, tu proyecto ha
escalado más allá de la seguridad del contenedor web, por no
hablar del presupuesto de tus proyectos web. Por tanto, una
solución nativa, o a veces una mezcla híbrida de web y nativo,
es el camino a seguir.
Híbridos para prototipado rápido
Como ingeniero de software, hay una buena razón para
considerar herramientas híbridas para el desarrollo y creación
de prototipos, especialmente cuando tienes un presupuesto
ajustado o tienes prisa. Las tecnologías web son intrínsecamente más fáciles de asimilar para el desarrollador principiante
y permiten un desarrollo más rápido para crear una UX decente,
y porque se puede escoger entre librerías potentes de terceros
en cada categoría para ayudarte a implementar tu aplicación.
No todas ellas están directamente relacionados con las tecnologías clave del IoT, pero incluso dentro del mundo industrial
de Internet vemos una creciente colección de relevantes extras
a las capacidades estándar de las tecnologías web accesibles
desde un navegador móvil o un componente WebView.
Una de las tecnologías de base más populares para los
híbridos es el proyecto Apache Cordova, hermano de su versión
comercial Phonegap2 . Varios SDKs híbridos comerciales usan
Córdova como piedra angular, por ejemplo Worklight (IBM),
Salesforce One (Salesforce), Evothings Estudio (Evothings) e
Intel XDK. Gracias a su abierta arquitectura de plug-ins, tanto
web como componentes nativos (construidos específicamente
para cada sistema operativo objetivo) pueden ser combinados
con libertad con el objetivo de crear un proyecto de Xcode
para iOS o una aplicación Android para publicar en tiendas
de aplicaciones. También existen herramientas y librerías
disponibles fuera de la familia Córdova, algunos unos pocos se
2 phonegap.com
Desarrollo Móvil y el Internet de las Cosas
185
centran exclusivamente en el desarrollo de aplicaciones del IoT,
que pueden ofrecer funcionalidades útiles para el desarrollo
industrial de servicios.
Comunicaciones y Protocolos
Uno de los asuntos pendientes en el desarrollo del IoT es la
aparición de exóticos protocolos de comunicación para un
programador móvil, con nombres como XMPP3, MQTT4 y COAP5.
Las aplicaciones de teléfonos inteligentes pueden necesitar
comunicarse utilizando algunos de estos protocolos para
interactuar con los dispositivos IoT. Por suerte, ya hay algunas
implementaciones disponibles, como el proyecto Eclipse Paho
que incluye un cliente Android6.
Un enfoque centrado en la web puede utilizar tecnologías
HTML5, como websockets de interoperabilidad y, como muchos
desarrolladores se han dado cuenta, muchas veces los websockets simplemente no son los ideales para comunicaciones
de baja sobrecarca ya que la mayoría de los formatos de
mensajería son incompatibles. Para poder hacer TCP de bajo
nivel, conexiones UDP, etc., es necesario introducir otras
tecnologías como los Chromium sockets (por ejemplo Berkeley
sockets empaquetados para javascripters). Si no te quieres
liar, la arquitectura plug-in de herramientas como Cordova7
será útil. Soportar plugins móviles para TLS (Transport Layer
Security) también es un paso adelante hacia un buen nivel de
seguridad end-to-end, desde el sensor hasta los controles de
3 xmpp.org/
4 mqtt.org/
5 tools.ietf.org/html/rfc7252
6 eclipse.org/paho/clients/android/
7 cordova.apache.org
Desarrollo Móvil y el Internet de las Cosas
186
seguridad del dispositivo IoT, salvándonos de muchas de las incertidumbres que enfrentan los servicios web y APIs expuestos
al público Internet.
Como resultado, una segunda ola de aplicaciones está
llegando, en la que las aplicaciones IoT se comunican directamente vía radio de corto alcance utilizando protocolos de bajo
nivel basados en IP para los datos del sensor, y mensajes de
telemetría con mínima sobrecarga.
Lecturas Adicionales
—— Understanding The Protocols Behind The Internet Of
Things que compara los protocolos utilizados en el IoT:
electronicdesign.com/embedded/understanding-protocolsbehind-internet-things
—— A Cisco view on IoT Application Protocols: blogs.cisco.
com/ioe/beyond-mqtt-a-cisco-view-on-iot-protocols
—— Scaling the Internet of Things es un vídeo de Yodit
Stanton grabado en la conferencia All Your Base 2014:
vimeo.com/album/3108317/video/109904567
—— Eclipse IoT protocols: iot.eclipse.org/protocols.html
—— Mobile and Web Messaging, trata MQTT e IoT:
media.jmesnil.net/slides/2014-11-13_oreilly_webcast.pdf
—— IoT Demonstration using WebSockets: developer.mbed.
org/cookbook/Internet-of-Things-Demonstration
Desarrollo Móvil y el Internet de las Cosas
187
Sigue adelante y prospera
Para finalizar este capítulo, aquí tienes una cuantos buenos
puntos de partida que representan algunas de los protagonistas
de la industria, software, hardware, agregadores y proveedores
de servicios:
—— Appmethod: appmethod.com/internet-of-things, herramientas cross-platform C++ para aplicaciones IoT
—— Estimote: estimote.com, productores de iBeacons y su SDK
móvil
—— Evothings Studio: www.evothings.com, herramientas de
prototipado rápido para IoT para Android e iOS
—— IFTTT: ifttt.com, empresa cloud que conecta eventos de
múltples servicios online
—— Intel IoT, and the Intel XDK: software.intel.com/en-us/iot,
herramientas de aplicaciones para microcontroladores y
aplicaciones móviles
—— Parse: parse.com/products, empresa enfocada al back-end
con una gran cantidad de código cliente y librerías
—— Phant by Sparkfun: data.sparkfun.com, productores de
hardware IoT y accesorios, proveen un ingenioso servidor
back-end para IoT perfecto para productores de aplicaciones que quieren mantener sus datos
—— Relayr: relayr.io, empresa de hardware y aplicaciones IoT
Desarrollo Móvil y el Internet de las Cosas
188
Programando Smartwatches
Después del trabajo pionero de Metawatch, Pebble y muchas
más empresas, Google lanzó Android Wear en 2014, varios
fabricantes sacaron smartwatches compatibles. Samsung lanzó
una gama de relojes Tizen y Microsoft su Microsoft Band para
fitness, y Apple también sacó Apple Watch. 2015 podría muy
bien ser el año del smartwatch.
Los Ecosistemas
Pebble, Android Wear, Apple Watch y Samsung Tizen podrían
considerarse las mayores plataformas. También hay relojes independientes Android y toda una gama de trackers de empresas
como Nike, quijada, Fitbit, Misfit, Razer y Microsoft. La mayoría
de estos dispositivos tienen un historial pésimo respecto a la
vida de la batería, por lo que empresas como Martian, Withings
o Cogito aplican mejoras inteligentes a relojes tradicionales. En
lugar de tener tiempos de vida de días, estos relojes aguantan
seis meses o más con una sola batería.
Un hecho interesante es que las grandes plataformas smartwatch aumentan el bloqueo al acceso a ese ecosistema. Los
smartwatches de Android requieren un dispositivo Android con
certificación de Google que tenga Google Mobile Services, por
lo que los dispositivos Android Open Source (AOSP) no sirven.
Samsung Tizen permite a los relojes funcionar mejor con los
móviles de Samsung, y Apple Watch, como era de esperar,
requiere un dispositivo iOS para funcionar correctamente.
Programando Smartwatches
191
De cara a interacción, hay que diferenciar entre aplicaciones
independientes que se ejecutan en el reloj y aplicaciones que
se ejecutan en el teléfono pero muestran el contenido en el
reloj. Muchos smartwatches resultan ser bastante limitados
cuando se desconectan del teléfono, pero con es posible añadir
una tarjeta SIM y realizar llamadas utilizando directamente el
reloj.
Será interesante ver cómo reaccionarán los primeros
consumidores sin esperiencia con gadgets a estas nuevas opciones. Aunque es bastante seguro que este sector tendrá que
evolucionar más tener adopción masiva, también parece que
los smartwatches han llegado para quedarse. Hagamos una predicción para la próxima versión de esta guía: los componentes
específicos de los smartwatches se integrarán en los capítulos
de la plataforma pertinentes. Ahora que ya soportas teléfonos
y tablets, y posiblemente ordenadores, puedes seguir adelante
y añadir otro factor de forma a tus planes de desarrollo... y ya
que estás en ello, ¡no te olvides de televisores y coches!
Diseño de UX para Smartwatches
Sea cual sea la plataforma que elijas, presta atención a la
experiencia de usuario de sus aplicaciones para smartwatches.
Como tienes poco espacio necesitas mostrar tus intenciones
muy claramente y sin información superflua. No importunes
a tus usuarios con demasiadas notificaciones o exigiendo
una entrada precisa de datos. Algunos dispositivos admiten
interacciones táctiles, pero otros sólo utilizan los botones
del reloj. Toques y otros gestos pueden ser difíciles de hacer
correctamente en una esfera del reloj diminuto, especialmente
cuando el usuario está desplazándose.
Programando Smartwatches
192
Evalúa qué notificaciones pueden ser útiles para el usuario,
y si sería práctica permitirle elegir el sistema de notificación,
por ejemplo la vibración en un meeting.
—— Pebble ofrece una excelente quía UX como parte de sus
mejores prácticas de diseño1. La guía incluye navegación y
pautas de diseño e interacción.
—— Este artículo en profundidad de Nielsen Norman Group2
combina un análisis del Samsung Galaxy Gear con
recomendaciones de diseño para aplicaciones móviles.
—— Jonathan Kohl ha escrito un exahustivo artículo sobre el
diseño de productos para smartwatches y wearables3
Android Wear
Android Wear se enfoca principalmente – como su nombre
indica – a los wearables, pero durante la escritura de éste
capítulo el único dispositivo compatible con él son sólo
smartwatches. En 2014 proveedores como LG, Motorola, Asus,
Sony e incluso Samsung lanzaros relojes basados en Android.
Tu punto de partida para desarrollar es
developer.android.com/wear. Siempre necesitarás una aplicación
para Android que contenga la aplicación, pudiendo elegir
diferentes niveles de integración para soportar smartwatches:
—— Sin integración: sólo las notificaciones se mostrarían en un
smartwatch conectado. Ten presente que esto podría provocar que el usuario se viera inundado de notificaciones.
1 developer.getpebble.com/guides/best-practices/design
2 nngroup.com/articles/smartwatch
3 kohl.ca/2014/lessons-learned-when-designing-products-for-smartwatches-
wearables
Programando Smartwatches
193
—— Notificaciones mejoradas con Android Wear: puedes
mejorar su visualización e interacción en el smartwatch,
y añadirles páginas, visualizaciones a pantalla completa y
acciones específicas del smartwatch.
—— Control de voz: instrucciones de voz para interactuar con
la aplicación en el smartwatch.
—— Wearable app: crea aplicaciones que se ejecutan directamente en el reloj, y por tanto con acceso a sensores, etc.
Es útil para, por ejemplo, aplicaciones de fitness para
seguir rutas sin necesidad de un teléfono (naturalmente,
necesitarías un reloj con GPS). Puedes utilizar la mayoría
de las APIs de Android, sólo unas pocas librerías no
están soportadas: android.webkit, android.print, android.
appwidget, android.app.backup y android.hardware.usb.
Puedes utilizar los emuladores de Android Wear para testear
la app, pero necesitarás un dispositivo real para pulir la
experiencia de usuario. Para desarrollos en Android en general
por favor consulta el capítulo Android. Puedes mantenerte al
día de las novedades en Android Wear uniéndote a la Android
Wear Developers community4 .
Apple Watch
La primera gama de relojes de Apple será lanzada a principios
de 2015. Los Apple Watch vienen en dos tamaños y una gama
de colores para satisfacer diferentes gustos (y presupuestos).
Puedes comenzar visitando developer.apple.com/watchkit. Si
bien no se puede crear aplicaciones independientes puras con
la versión inicial de la WatchKit, tienes estas opciones:
4 plus.google.com/communities/113381227473021565406
Programando Smartwatches
194
—— Notificaciones interactivas: crea notificaciones que se
muestran en el Apple Watch y con las que el usuario puede
interactuar.
—— Glances: información de sólo lectura.
—— WatchKit Apps: aplicaciones que pueden contener extensiones WatchKit, ejecutables en segundo plano del iPhone
y con una UI que se muestra en el Apple Watch.
Samsung Tizen
La gama inicial de Samsung de smartwatches operaba con
versiones propietarias de Android. En 2014, Samsung comenzó
a lanzar relojes "Gear" basados en Tizen e incluso reescribió el
firmware de sus relojes existentes para utilizar Tizen. Actualmente el curvado Samsung Gear S es probablemente uno de los
más emblemáticos smartwatches comercializados.
Tus puntos de partida para el desarrollo SmartWatch Tizen
son developer.samsung.com/samsung-gear y developer.tizen.org.
Puedes empezar a dar soporte a smartwatches Tizen enviando
notificaciones interactivas5. La forma más fácil de desarrollar
aplicaciones smartwatch independientes para Tizen es incrustar
una aplicación Tizen HTML5 dentro de tu aplicación Android.
Para la comunicación entre tu aplicación en el teléfono y tu
aplicación Tizen tienes que utilizar el SAP SP (Samsung Accessory Protocol Service Profile, un nombre que sólo una madre
puede amar, por cierto) - básicamente un protocolo byte-array
basado en que requiere su propia serialización. Para el desarrollo general en Tizen, consulta el capítulo al respecto.
5 developer.samsung.com/galaxy#rich-notification
Programando Smartwatches
195
Para mantenerte al día con las últimas noticias sobre
Samsung Gear, sigue el canal de Twitter de Samsung para
desarrolladores @samsung_dev.
Pebble
Pebble es, junto con Metawatch, uno de los pioneros del movimiento smartwatch. En el momento de redactar este capítulo,
existen dos ediciones distintas del reloj Pebble: el original y
el de acero. Respecto a hardware, ambos cuentan con una notáctil-pero-muy-eficiente pantalla e-Paper con una resolución
de 144x168 pixels, y 24 kb de RAM para aplicaciones.
Tu punto de partida para el desarrollo en Pebble es
developer.getpebble.com. Las aplicaciones están escritas en
C. Puedes usar el IDE basado en navegador cloudpebble6 en
cualquier sistema operativo, o el SDK de Pebble para sistemas
Mac y Linux, y también puedes utilizar Javascript para el
desarrollo de aplicaciones que se ejecutan en el teléfono. Una
versión inicial pero no oficial de emulador está disponible en
GitHub7. Con aplicaciones en segundo plano, el acceso a los
sensores y opciones de comunicación con AppMessage/AppSync
puedes crear grandes aplicaciones de Pebble. Puedes seguir a
Pebble en Twitter en @PebbleDev.
6 cloudpebble.net
7 github.com/PebbleDev/qemu_pebble
Programando Smartwatches
196
Activity Trackers
Hay muchos trackers de actividad que ofrecen oportunidades
para desarrolladores. A menudo, la única opción es tener
acceso a los datos en la nube para poder crear tus propias
estadísticas, pero algunos dispositivos también son compatibles con aplicaciones independientes. Estos son los trackers
más populares, junto con las páginas correspondientes para
desarrolladores:
——
——
——
——
——
Fitbit, dev.fitbit.com
Garmin, developer.garmin.com/connect-iq
Jawbone, jawbone.com/up/developer
Misfit, build.misfit.com
Microsoft Band, microsoft.com/microsoft-band (SDK
anunciado)
—— Nike, dev.nike.com
—— Polar, developer.polar.com
—— Razer Nabu, developer.razerzone.com/nabu#
Programando Smartwatches
197
Analíticas Móviles
Las analíticas móviles no son, probablemente, la primera cosa
que tenemos en cuenta cuando desarrollamos aplicaciones.
Sin embargo, es una gran manera de entender qué ocurre con
tu aplicación en el mundo real, cuando los usuarios están
utilizándola. Las tiendas de aplicaciones proporcionan algunos
datos clave e incluso información sobre los bloqueos de
nuestra aplicación, pero podemos aprender mucho diseñando
e implementando analíticas móviles, y cubriremos los aspectos
esenciales de este capítulo.
Los datos de las analíticas móviles pueden ayudar en
muchos aspectos de nuestro trabajo, incluyendo negocio y
operaciones, y también podemos aprender formas de mejorar
el desarrollo y testeo del software. Entre toda esa emoción de
desarrollar, necesitamos recordar proteger la privacidad del
usuario y respetar sus preferencias y expectativas. Los efectos
de las analíticas pueden molestar a los usuarios al consumir
recursos valiosos o abusar de la información confidencial del
usuario y su uso de la aplicación.
¿Para qué molestarse?
Las analíticas móviles pueden añadir valor a tu organización y
tu aplicación, e incluso a los usuarios de la misma, si se utiliza
la información inteligentemente para mejorar lo que haces. Los
datos capturados se pueden utilizar para orientar tu trabajo y
reducir las ineficiencias. Estarás bien acompañado: Más de la
Analíticas Móviles
199
mitad de las aplicaciones móviles más populares ya incluyen
analíticas1.
Hay una increíble riqueza en la galaxia móvil, donde tu
software se puede utilizar en muchos dispositivos extraños que
presentan diferencias significativas en su comportamiento.
Investigadores han descubierto que la descarga de la batería
puede variar en un rango de 3x cuando se utilizaba su
aplicación en dispositivos con especificaciones de hardware
similares, e incluso terminaron añadiendo código personalizado
para reducir el brillo de la pantalla mientras que la aplicación
se ejecutaba en Kindle Fire para mejorar la vida de la batería
en un 40%. También descubrieron que los usuarios que
utilizaban un teclado usaban su aplicación durante mucho más
tiempo.
Mobile DevOps
Mobile DevOps permite a los desarrolladores acercarse a los
aspectos operativos de su software. Las tiendas de aplicaciones
tienden a complicar las DevOps ya que el proceso de publicación está más allá del control directo de los desarrolladores,
y algunos aspectos de la recogida de datos son gestionados y
retenidos por el proveedor de la tienda. La analytics móviles
pueden ayudar a recopilar información equivalente y más datos
específicos de la aplicación sobre cómo se está utilizando la
aplicación. Estos datos pueden ayudar a mejorar los aspectos
DevOp de la aplicación, proporcionando información oportuna
y relevante para ayudar a mejorar el funcionamiento de la
aplicación. También puedes utilizar los datos para ayudarte a
mejorar futuras versiones.
1 blog.velti.com/mobclix-index-the-when-where-what-of-apps,
static.usenix.
org/event/sec11/tech/slides/enck.pdf
Analíticas Móviles
200
Poniéndote En Marcha
Como mínimo, 20 empresas ofrecen un festín de soluciones
para analíticas móviles con múltiples sabores, desde el trazado
de campañas hasta la mejora de calidad del software. Muchas
además incluyen funcionalidades extra, por ejemplo informe
de caídas o el trazado de usuarios y beneficios. Casi la mitad
ofrecen implementaciones de código abierto para sus librerías,
quizás para alejar el temor respecto al comportamiento de las
mismas.2
Muchos de los proveedores de soluciones de analíticas para
móviles incluyen un apartado 'Getting Started' donde se aprende cómo comenzar a utilizar sus productos. Algunos ejemplos
son Flurry3 y KISSmetrics4 . En general, es necesario registrarse
antes de que puedas utilizar cualquiera de los productos de
manera útil, ya que necesitan ser configurados con una única
'clave' para tu aplicación.
Examina muchas de las soluciones potenciales antes de
decidirte por una. Lee la documentación y código de ejemplo
para ver cómo de fácil es implementarla en tu aplicación, y
revisa las licencias de usa, incluidos los términos deprivacidad.
Elige entonces al menos una para experimentar con ella
implementando analíticas móviles en tu aplicación. Integrando
su código aprenderás mucho más acerca de los que puedes
conseguir, y también acerca de las analíticas móviles en la
práctica.
Por último, lee sobre qué utilizan otras aplicaciones y por
qué tomaron esa opción, por ejemplo VentureBeat ha descubi2 readwrite.com/2013/12/05/why-mobile-developers-need-open-source-
analytics-embedded-in-their-applications
3 support.flurry.com
4 support.kissmetrics.com/getting-started/overview
Analíticas Móviles
201
erto que el 95% de los desarrolladores Android utiliza Google
Analytics, "a pesar de la enorme cuota de mercado de Google,
menos de una tercera parte de los desarrolladores móviles la
considera su solución de analíticas principal."5
Probablemente desees consistencia en el informe de
analíticas para aplicaciones multiplataforma; de otra manera,
puede que te encuentres intentando comprar paquetes de
datos que difieran, o sean incluso completamente diferentes,
especialmente si se utilizan diferentes soluciones para las
distintas plataformas de desarrollo. Considera elegir una única
solución común que soporte todas las plataformas en las que
deseas construir tu aplicación.
Dos proveedores son especialmente destacables: Segment.io6 abstrae un amplio abanico de métricas, y tienen
publicado su código con licencia de código abierto en
github.com/segmentio, donde muestran maneras de implementar su herramienta de forma que se reduzca el esfuerzo
necesario para adaptarla a diferentes proveedores de
analíticas. Count.ly7 ofrece implementaciones de código abierto
tanto vía su servidor como a través de librerías cliente, y animan a los usuarios potenciales a crear un entorno de pruebas
completo para probar su producto.
5 venturebeat.com/2014/12/02/230-developers-and-1-8m-apps-reveal-the-
best-mobile-app-analytics-solutions
6 segment.io/
7 count.ly/
Analíticas Móviles
202
Decidir Qué Medir
¿Qué te gustaría a medir, comprender, acerca de cómo se está
utilizando la aplicación? Algunas sugerencias:
—— Eventos clave de uso: Por ejemplo, de cuándo se usa
la opción de búsqueda o se abre una red social desde tu
aplicación.
—— Eventos centrados en el negocio: Cualquier interacción
generada por el usuario que suponga un beneficio para
tí. ¿Con qué frecuencia tus usuarios compran la versión
premium de tu aplicación y otros ítems ofrecidos en su
interior? ¿Cuándo cancelan pedidos o descartan un carrito
de compra antes de realizar el pago?
—— Eventos centrados en la aplicación: Rendimiento, usabilidad, fiabilidad, y otros datos en torno al comportamiento
de la aplicación.
Una vez definidas las principales áreas de interés tendrás
que diseñar las métricas de análisis, por ejemplo, cuáles
elementos de los datos deberían ser reportados.
Definir Cómo Medir
Crea nombres significativos para tus eventos de interacción,
para que puedas recordar fácil y correctamente lo que miden.
Para cada evento que desees grabar, debes decidir cuáles son
los elementos que necesitan ser incluidos. Considera cómo
serán utilizados los datos una vez que se hayan obtenido; por
ejemplo, esboza informes y diagramas estándar y mapea cómo
los diversos datos serán procesados ​​para generar cada informe
o gráfico.
Analíticas Móviles
203
Asimismo, recuerda abordar temas sobre globalización,
tales como la fecha y hora de cada elemento. ¿La aplicación
detectará el momento de un evento de acuerdo a la ubicación
del dispositivo, su configuración o utilizando un tiempo global
como el UTC8?
Algunas de las soluciones de analítica móvil grabarán y
reportarán automáticamente los elementos de datos al servidor.
Vale la pena comprobar cuáles son estos elementos, cómo y
cuándo se presentan, y cómo están formateados. Entonces
podrás decidir si deseas utilizar y confiar en estos elementos
reportados automáticamente.
Las etiquetas personalizadas de eventos enriquecen aquellos
predefinidos, y muchas de las soluciones de analítica móvil
proporcionan medios para que tu aplicación los genere. Es
posible que necesites formatear los mensajes de eventos
personalizados. Si es así, pon atención a la codificación de
los elementos y los separadores, es posible, por ejemplo, que
deban pasar por codificación URL9 cuando se envían mensajes
como REST10.
También puede que desees considerar la frecuencia con
que la aplicación debe informar sobre eventos para minimizar
el riesgo de saturar la capacidad disponible del sistema de
analíticas, lo que podría afectar a la fiabilidad y exactitud de
los datos suministrados. Localytics tiene algunos ejemplos de
integración interesantes11. Un método para reducir el volumen
de datos procesados es el samping. Adán Cassar ha publicado
un interesante post sobre este tema en www.periscopix.co.uk/
blog/should-you-be-worried-about-sampling.
8 en.wikipedia.org/wiki/Coordinated_Universal_Time
9 en.wikipedia.org/wiki/Percent-encoding
10 msdn.microsoft.com/en-us/library/live/hh243648
11 support.localytics.com/Integration_Overview
Analíticas Móviles
204
Adaptando tu Código
Puede que tengas que declarar capacidades adicionales necesarias para que los análisis móviles funcionen correctamente
cuando se integran con tu aplicación.
Para Android, a éstos se les conoce como permisos.
Probablemente las analíticas necesitarán permisos de Internet
de modo que los eventos puedan ser enviados online, y
permisos centrados en la localización en el caso de que la
solución registre la ubicación del teléfono. Si tu aplicación ya
está utilizando esos permisos, no es necesario especificar su
uso de nuevo.
Para iOS, UIRequiredDeviceCapabilities indica a
iTunes y a la App Store qué características de dispositivo requiere la aplicación. Se implementa como un diccionario donde los
elementos se especifican utilizando claves, que incluyen WiFi,
servicios de localización y GPS.
En Windows Phone 7 y 8, se utilizan capacidades para
decidir lo que la aplicación utiliza. Localytics tiene online una
guía de arranque rápido12 que incluye un ejemplo de
configuración de la capacidad ID_CAP_IDENTITY_DEVICE.
Windows Phone 8.1 recomienda en cambio utilizar App Specific
Hardware ID (ASHWID)13.
Gestionando los Resultados
Hay un lapso de tiempo entre que una aplicación envía un
evento de analíticas y la información es procesada y puesta a
tu disposición. El retardo, o latencia, varía entre muy cerca de
'tiempo real' y varias horas. Tú, y tus promotores, debéis decidir
12 www.localytics.com/docs/windows-phone-7-integration/
13 msdn.microsoft.com/en-us/library/windows/apps/jj553431.aspx
Analíticas Móviles
205
cuánto tiempo podéis permitiros retrasar el conocimiento sobre
acontecimientos en tiempo real.
Algunas soluciones de análisis proporcionan una API para
acceder a los datos. Esto te permite realizar tener un mayor
campo de visión a la hora de crear informes personalizados.
Algunos te permiten hospedar los servidores, lo que te aporta
mayor control sobre los datos y su uso.
Para evaluar la calidad de los resultados, algunas empresas
invierten esfuerzo adicional en incorporar múltiples soluciones
de análisis en su aplicación y cruzar después los resultados.
Sin embargo, dos resultados contradictorios no se reconcilian fácilmente, así que puede ser necesario el uso de tres
bloques de resultados para diagnosticar las diferencias por
triangulación14 . Si has decidido trabajar con KISSmetrics, echa
un vistazo a su artículo sobre maneras de evaluar tus métricas
en support.kissmetrics.com/getting-started/testing-km.
¿Qué puede ir mal?
El camino al infierno está empedrado de buenas intenciones.
Hay muchas cosas que pueden salir mal en la implementación
de alas analíticas. Algunas de los más comunes incluyen:
—— Resultados sin calibrar: confiar ciegamente los datos
pueden conducir a una vorágine de problemas. Los
resultados puede ser inexacto y engañoso, causando
problemas derivados al ser utilizados para gestionar tu
negocio y trabajo. Una buena práctica es poner a prueba
la aplicación de análisis desde el principio, empezando
sin usuarios, y probando después uno individual antes de
14 en.wikipedia.org/wiki/Triangulation_(social_science)
Analíticas Móviles
206
probar con más usuarios. Mira la latencia, la precisión y la
fiabilidad de los datos capturados.
—— Traicionar la confianza: los usuarios creen implícitamente que las aplicaciones se comporatarán bien en sus
dispositivos móviles. Sin embargo, las aplicaciones pueden
romper accidentalmente o deliberadamente esa confianza,
por ejemplo mediante el seguimiento de los usuarios, la
grabación y luego el uso de datos sensibles, etc. Trata de
no esconderte detrás de licencias de uso que poca gente
lee y menos aún entienden. En su lugar, asegúrate de que
tu aplicación y las librerías de analíticas que utilices se
comportan de forma adecuada y "haz lo que quisieras que
hicieran otros, y no husmees donde no debes."
—— Regalar el tesoro: asegúrate de que tienes derechos
suficientes y acceso a los datos que se obtienen de las
analíticas. Es especialmente relevante cuando se utilizan
las bibliotecas y servicios de terceros.
Tenga presente que algunos proveedores de soluciones
analíticas pueden utilizar los datos reportados por su aplicación y proporcionarlos y venderlos a otros. Ellos pueden
controlar la vida de los datos, lo que significa que podrían
hacer que sean inaccesible para ti. Además, podrán conservarlos y usarlos mucho después de que hayas jubilado tu
aplicación. Si hay información de identificación personal en
los datos, puede haber implicaciones legales y de privacidad
adicionales. Así que vale la pena considerar cómo la utilizarán
terceros y cómo se compartirán los datos comunicados a través
de tu software y las APIs.
Analíticas Móviles
207
Privacidad
Tus aplicaciones se utilizan de manera remota por gente que
no conoces. Las aplicaciones pueden convertirse en vigilantes
de los usuarios y de su comportamiento con ellas.
Recuerda que debes explicar a los usuarios finales que la
aplicación está diseñada para registrar y compartir información
acerca de cómo la aplicación se está utilizando, a ser posible
en los términos y condiciones que desees. Puede que
necesites, o te interese, que los usuarios tengan
capacidad de decidir si permiten un seguimiento
a su uso de la aplicación. Si es así, facilítale
al usuario el control sobre los ajustes;
además, considera la posibilidad de proveer
al usuario de una forma de acceder a los
datos registrados, borrarlos, o ponerse en
contacto con el proveedor de soluciones
de analíticas.
Analíticas Móviles
208
Los proveedores de librerías de terceros parecen tener
variadas aproximaciones a la privacidad. Algunos declaran que
la privacidad de los usuarios es de suma importancia y resaltan
la relevancia de no realizarles seguimiento. Google Analytics
prohibe de manera fehaciente trazar información personal
que permita la identificación en sus términos de servicio15.
Otros proveen de ejemplos, incluidos fragmentos de código,
que demuestran cómo grabar datos de identificación personal.
Por ejemplo, KISSmetrics provee el siguiente código16:
] identify:@"[email protected]"];, y Mixpanel ofrece un
ejemplo de cómo actualizar el registro de analíticas personales
de un usuario17.
Hay varios lugares para aprender más sobre privacidad y
la ética de trabajar con datos relativos a los usuarios, por
ejemplo:
—— El post en el blog de Jeff Northrop sobre analíticas
móviles18
—— El libro de Kord Davis "Ethics of Big Data"19 (O'Reilly,
2012)
15 www.google.com/analytics/terms/us.html
16 support.kissmetrics.com/apis/objective-c
17 mixpanel.com/docs/people-analytics/android
18 jnorthrop.me/2012/07/2/privacy-considerations-mixpanel-people-analytics/
19 disponible en shop.oreilly.com/product/0636920021872.do
Analíticas Móviles
209
Aprende Más
Esperamos que este capítulo haya despertado tu curiosidad por
saber más acerca de las analíticas móviles. A continuación,
algunos lugares para comenzar tu investigación:
—— Capturing Mobile Experience in the Wild: A Tale of
Two Apps20, un estudio de la Universidad de Wisconsin
destacando la importancia de las analíticas centradas en
las aplicaciones, basado en datos de 1millón de usuarios
recogidos durante 3 años.
—— The Beginner's Guide To App Analytics21, disponible en
descarga gratuita.
—— The Mobile Developer's Guide to the Parallel Universe22,
libro hermano ésta guía, centrado en las analíticas móviles
desde la perspectiva del marketing.
—— TNW ofrece un buen artículo introductorio23 desde la
perspectiva de un desarrollador.
—— Upsight24 ofrece un gran abanico de documentos,
webinars y otros recursos sobre las analíticas móviles.
20 static.googleusercontent.com/media/research.google.com/en//pubs/
archive/41590.pdf
21 info.localytics.com/download-beginners-guide-to-app-analytics
22 wip.org/resources/#mobile-developers-guide-parallel-universe
23 thenextweb.com/dd/2013/08/11/9-tools-to-help-you-measure-mobileanalytics
24 upsight.com/resources
Analíticas Móviles
210
Application
Security
Seguridad de la Aplicación
Los lectores de esta guía saben cómo de extendidos están
los smartphones y cómo de útiles pueden ser las aplicaciones
móviles. Los dispositivos móviles, además, son también mucho
más personales que lo que jamás lo han sido los ordenadores.
La gente se despierta con sus teléfonos, permanecen cerca de
ellos todo el día, y duermen a su lado por las noches. Con el
tiempo se convierten en nuestros ‘colaboradores de confianza’.
Muchas de estas aplicaciones se aprovechan de tal cercanía
y confianza. Por ejemplo, tu teléfono puede ser tratado como
un eslabón en el proceso de autenticación para acceder a tu
cuenta bancaria, o tu tableta puede tener acceso directo a
las películas online que has comprado. Tu dispositivo podría
incluso contener una cartera con dinero real para realizar pagos
con NFC o monedas virtuales como Bitcoins.
Las aplicaciones móviles están atrayendo la atención de
hackers y ladrones cuyos intereses se extienden mucho más allá
de conseguir gratis una aplicación de 99 céntimos. En Q3 2014
Kaspersky Lab detectó 74,489 programas móviles maliciosos1.
Los datos históricos de la red y las defensas de punto final
(como antivirus) no son suficientes. Incorporar medidas de
seguridad en una aplicación móvil es un tema crítico.
La arquitectura de las aplicaciones móviles sigue evolucionando. Algunas aplicaciones son sólo nativas, y requieren de
bases de código muy diferentes para cada sistema operativo
móvil. Otras son webviews, poco más que la URL de un sitio
web envuelta en un icono. Algunas son híbridas, una combinación de funcionalidad de aplicación nativa con webviews. La
mayoría de aplicaciones móviles necesitan conectarse con los
1 securelist.com/analysis/quarterly-malware-reports/67637/it-threat-
evolution-q3-2014
Seguridad de la Aplicación
212
servicios de back-end utilizando tecnologías web para buscar
o actualizar información. Al igual que las aplicaciones web, la
seguridad para aplicaciones clásica necesita ser aplicada a las
aplicaciones móviles. La entrada de datos debe ser validada por
tamaño, tipología y valores permitidos. El manejo de errores
debe proporcionar mensajes de error útiles para los usuarios
a la vez que evitar el filtrado de información sensible. Las
pruebas de penetración en aplicaciones son necesarias para
asegurarse que los controles de identificación, autenticación
y autorización no pueden ser superados. El almacenamiento
en los dispositivos debe ser inspeccionado y probado para
asegurar que los datos sensibles y las claves de cifrado no se
almacenan en texto plano. Los archivos de registro no deben
capturar contraseñas u otra información sensible. La configuración SSL debe ser probada.
Los usuarios desean utilizar sus aplicaciones de forma segura y no quieren sorpresas desagradables. Su dispositivo móvil
puede exponerlos a mayores vulnerabilidades, por ejemplo,
su ubicación podría ser rastreada, potencialmente, utilizando
el GPS incorporado, la cámara y el micrófono podrían ser
utilizados para capturar información que preferirían mantener
privada, y así sucesivamente. Las aplicaciones también pueden
ser escritas para acceder a información confidencial, como por
ejemplo los contactos, o hacer llamadas telefónicas de manera
encubierta y enviar mensajes SMS a números de tarificación
adicional.
El desarrollador de la aplicación puede estar preocupado
por su reputación, pérdida de ingresos y de propiedad intelectual, mientras que las empresas quieren proteger los datos
empresariales a los que los usuarios pueden acceder desde sus
dispositivos, posiblemente utilizando tu aplicación. ¿Pueden
sus datos mantenerse separados y protegidos de todo aquello
que el usuario ha instalado?
Seguridad de la Aplicación
213
Posibles Amenazas
En algunas plataformas (iOS y Android en particular), desactivar la verificación de firmas es una práctica bastante común.
Necesitas considerar si es relevante o no el que alguien pueda
modificar tu código y ejecutarlo en un dispositivo jailbreakeado o ruteado. Un punto obviamente clave sería la eliminación
de una verificación de licencia, lo que podría dar lugar a que
tu aplicación sea robada y usada de forma gratuita. Menos
evidente, pero más grave, es la amenaza de inserción de código
malintencionado (malware) que puede robar información de los
usuarios, o inyectar contenido ilícito, y destruir la reputación
de tu marca.
La ingeniería inversa sobre tu aplicación puede dar a
hackers el acceso a una gran cantidad de datos sensibles, tales
como las claves de cifrado para películas protegidas con DRM,
el protocolo secreto para hablar con tu servidor de juegos
online, o la manera de acceder al crédito almacenados en el
teléfono para tu sistema de pago móvil. Sólo se requiere un
hacker y un teléfono jailbreakeado para explotar cualquiera de
estas amenazas.
Si tu aplicación maneja dinero real o contenido valioso es
necesario tomar todas las medidas posibles para protegerla de
ataques Man-At-The-End (o MATE, en el que el atacante tiene
acceso físico al dispositivo). Y, si estás implementando un
estándar DRM, tendrás que seguir las reglas de robustez que
hacen obligatorias las medidas de auto-protección.
Seguridad de la Aplicación
214
Protegiendo tu Aplicación
Escondiendo el Plano de tu Código
Algunas plataformas móviles se programan utilizando código
administrado (Java o NET.), integrado por los códigos de
bytes ejecutados por una máquina virtual, en lugar de hacerlo
directamente en la CPU. Los formatos binarios para estas
plataformas incluyen metadatos que establecen la jerarquía de
clases y dan el nombre y tipo de cada clase, variable, método
y parámetro. Los metadatos ayudan a la máquina virtual a
implementar algunas de las características del lenguaje (por
ejemplo, la reflexión). Sin embargo, los metadatos también son
muy útiles para un hacker que esté tratando de realizar ingeniería inversa del código. Hay programas de descompilación,
de libre acceso, que regeneran el código fuente a partir de los
códigos de bytes, y hacen ingeniería inversa fácilmente.
La plataforma Android tiene la opción de usar la Interfaz
Nativa Java (JNI, del inglés Java Native Interface) para acceder a funciones escritas en C y compilar en código nativo. Es
mucho más difícil que el código nativo sea objeto de ingeniería
inversa en comparación con Java, por lo que se recomienda
para cualquier parte de la aplicación donde la seguridad es de
suma importancia.
"gcc" es el compilador utilizado normalmente para generar
código nativo para Android, mientras que su gemelo "clang" se
utiliza para iOS. La configuración predeterminada para estos
compiladores prepara cada función para ser exportada desde un
objeto compartido, y la agrega a la tabla de símbolos dinámicos en el binario. La tabla dinámica de símbolos es diferente
a la tabla de símbolos utilizada para la depuración y es mucho
más difícil de desmantelar después de la compilación. El
volcado de los símbolos dinámicos puede dar a un hacker un
índice muy útil de cada función en el código nativo. El uso
Seguridad de la Aplicación
215
correcto del conmutador del compilador -f visibility2 es
una manera fácil de hacer que sea más complicado comprender
el código.
El código compilado en Objective-C contiene el código
máquina y una gran cantidad de metadatos que pueden proveer
a un atacante de información sobre nombres y la estructura de
llamada de la aplicación. En la actualidad, existen herramientas
y scripts para leer estos metadatos y guiar a los hackers, pero
no hay herramientas para ocultarlos. La manera más común de
construir una interfaz gráfica para iOS es el uso de Objective-C,
pero el método más seguro consiste en minimizar su uso y
cambiar a C o C++ para todo lo que no sea la interfaz gráfica de
usuario.
Escondiendo el Control de Flujo
Incluso si todos los nombres están ocultos, un buen hacker
todavía puede averiguar cómo funciona el software. Hay herramientas comerciales de protección de código administrado que
pueden ocultar deliberadamente el camino a través del código
recodificando las operaciones y rompiendo los bloques de
instrucciones, lo que hace la decompilación mucho más difícil.
Con una buena herramienta de protección bien ubicada, un
intento de decompilar un binario protegido terminará o bien en
un fallo de decompilador o en un código fuente no válido.
Decompilar código nativo es mucho más difícil, pero se
puede conseguir. Incluso sin una herramienta, no se necesita
mucha práctica para ser capaz de seguir el control de flujo
en el código ensamblador generado por un compilador. Las
aplicaciones con un fuerte requisito de seguridad necesitarán
una herramienta de ofuscación para el código nativo, así como
para el código administrado.
2 gcc.gnu.org/wiki/Visibility
Seguridad de la Aplicación
216
Protegiendo las Comunicaciones de Red
Las comunicaciones de red también son vulnerables, sobre
todo cuando las aplicaciones se pueden instalar en emuladores
o simuladores, donde los analizadores de red son de libre
acceso y pueden monitorear e interceptar el tráfico de red.
Protege todas las comunicaciones propietarias utilizando
HTTPS. Aún así, los ataques MATE, especialmente a través de
redes WiFi, pueden desvelar datos sensibles. Una manera de
incrementar la seguridad en la transmisión es usar encriptación
asimétrica entre el servidor y la aplicación móvil (utilizando
pares de claves públicas y privadas) para asegurar la seguridad
de punto a punto. Para datos y aplicaciones especialmente
relevantes, cabe instalar servidores VPN (del inglés Virtual
Private Network) y también sus correspondientes clientes en
los dispositivos móviles. Las redes VPN ofrecen generalmente
mayor fiabilidad en cuanto autenticación y transporte de datos
respecto a HTTPS.
Protegerse contra la Manipulación de Datos (Tampering)
Puedes proteger el código base aún más detectando los
intentos de manipulación en la aplicación y respondiendo a
esos ataques. El código criptográfico siempre debe utilizar
algoritmos de cifrado estándar relativamente seguros (por
ejemplo, AES, RSA, ECC) pero, ¿qué pasa si un atacante puede
encontrar las claves de cifrado en tu archivo binario o en
memoria en tiempo de ejecución? Esto podría resultar en que el
atacante tenga acceso a contenido valioso. Incluso si utilizas
criptografía de clave pública y sólo se expone una parte del
par de claves, todavía tienes que considerar lo que ocurriría
si un atacante intercambiara esa clave por la otra mitad que
ya conocía. Se necesita una técnica para detectar cuándo el
código ha sido manipulado. Hay herramientas disponibles
que encriptan/desencriptan código sobre la marcha, ejecutan
Seguridad de la Aplicación
217
las sumas de verificación contra el código para detectar su
manipulación, y reaccionan cuando el código ha cambiado.
Las comunicaciones entre la aplicación móvil y los servicios
de backend pueden ser monitorizadas y pirateadas. Incluso cuando se utiliza HTTPS, un proxy web interceptor (como Paros)
puede ser configurado con una conexión WiFi que inspeccionará
el tráfico encriptado. Los atacantes pueden entonces manipular
los datos en tránsito, con fines de lucro o entretenimiento. Así
que, si se están enviando datos realmente sensibles a través de
HTTPS, considera encriptar/desencriptar datos en la aplicación
móvil y en el servidor, de modo que los sniffers de red sólo
puedan ver datos cifrados.
Protegiendo Algoritmos Criptográficos
Una herramienta activa contra la manipulación puede ayudar
a detectar o prevenir algunos ataques a claves criptográficas,
pero no permitirá que las claves permanezcan siempre ocultas.
La criptografía de caja blanca tiene por objeto aplicar los
algoritmos de cifrado estándar de manera que las claves
permanecen ocultas. Algunas versiones de criptografía de caja
blanca utilizan complejos enfoques matemáticos para obtener
los mismos resultados numéricos de una manera que es difícil
de deducir por ingeniería inversa. Otras insertan claves en
tablas de consulta y máquinas de estados que es difícil que
sean objeto de ingeniería inversa. La criptografía de caja
blanca sin duda será necesaria si vas a escribir código DRM o
necesitas almacenamiento de datos de alta seguridad.
Seguridad de la Aplicación
218
Mejores Prácticas
No Almacenes Secretos o Información Privada
Minimiza la cantidad de información sensible almacenada en el
dispositivo. No almacenes las credenciales o claves de cifrado,
a menos que se utilice un almacenamiento seguro protegido
por una contraseña compleja. En su lugar, guarda los tokens
de autenticación que tienen tiempo de vida y funcionalidad
limitados.
Los archivos de registro son útiles para diagnosticar errores
en el sistema y hacer un seguimiento del uso de las aplicaciones, pero vigila no violar la privacidad de los usuarios mediante
el almacenamiento de información de ubicación, o registrar
información personalmente identificable de los mismos.
Algunos países tienen leyes que restringen la información
de seguimiento que se puede recopilar, así que asegúrate de
comprobar las leyes al respecto de los países en los que será
utilizada tu aplicación.
No imprimas seguimientos de pila ni diagnósticos de
sistema que un havker pueda aprovechar para penetrar a mayor
profundidad.
No Confíes en el Dispositivo
Cuando diseñas una aplicación, supón que el dispositivo será
propiedad de un atacante tratando de abusar de la aplicación.
Realiza el mismo ciclo de desarrollo de software seguro en
la creación de aplicaciones móviles que emplearías con los
servicios de backend. No confíes ni siquiera en las bases de
datos que creas para tus aplicaciones móviles, un hacker puede
cambiar su esquema. No confíes en el sistema operativo para
obtener protección, la mayoría de esas protecciones pueden
ser anuladas de manera trivial por un jailbreak al dispositivo.
Seguridad de la Aplicación
219
No confíes en que los almacenes nativos de claves mantendrán
los datos protegidos, se puede irrumpir en algunos almacenes
de claves por fuerza bruta, a menos que el usuario proteja el
dispositivo con una contraseña compleja y de gran longitud.
Minimiza los Permisos
Android tiene el concepto de permisos, mientras que iOS tiene
derechos, que permiten el acceso de las aplicaciones a sensores
tales como el GPS y contenido sensible. En Android estos
permisos deben ser especificados como parte de la creación
de la aplicación, en el archivo AndroidManifest.xml. Éstos son
mostrados al usuario cuando opta por instalar la aplicación en
su dispositivo.
Cada permiso aumenta el potencial de que tu aplicación
haga cosas nefastas, y eso puede disuadir a algunos usuarios
incluso de descargar la aplicación. Así que intenta minimizar
el número de permisos o de características que tu aplicación
necesita.
Herramientas
Protección
El renombrado de código básico de Java puede ser realizado
mediante Proguard3, una herramienta de código abierto, y
GuardIT de Arxan4 .
Dos comercializadores de herramientas de protección de
código gestionado (Java y .NET) son Arxan Technologies5 y
PreEmptive Solutions6.
3 www.proguard.sourceforge.net
4 arxan.com
5 arxan.com
6 preemptive.com
Seguridad de la Aplicación
220
La mayoría de vendedores de herramientas de protección
de código nativo y librerías criptográficas de caja blanca son
Arxan e Irdeto7.
Las técnicas para proteger Android frente a manipulación
de datos están documentadas en androidcracking.blogspot.com.
EnsureIT de Arxan te permite insertar código adicional en
tiempo de compilación para detectar depuradores, usar sumas
de validación para detectar cambios y permitir al código ser
desencriptado o reparado sobre la marcha.
Sniffing
Una herramienta web proxy estándar es Paros8, y una herramienta estándar de sniffing de red disponible en las plataformas habituales es Wireshark9.
De-Compiling
Véase el decompilador Hex Rays10.
7 www.irdeto.com
8 sourceforge.net/projects/paros
9 sourceforge.net/projects/wireshark
10 www.hex-rays.com
Seguridad de la Aplicación
221
Aprende Más
A continuación, algunos recursos y referencias útiles que
pueden ayudarte:
—— Apple ofrece una guía general de seguridad de software11.
También incluye múltiples enlaces a temas más detallados
de su plataforma.
—— Hay cursos comerciales de entrenamiento disponibles para
iOS y Android, y el Lancelot Institute12 ofrece cursos de
programación segura que cubren iOS y Android.
—— O'Reilly ha publicado el libro de Jeff Six sobre seguridad en
Android, Application Security For The Android Platform13
y otro para iOS, Jonathan Zdziarski: Hacking and Securing
iOS Applications14 .
—— Charlie Miller et al. publicaron el iOS Hackers Handbook15,
que demuestra cómo de fácil es robar código y datos de
dispositivos iOS.
—— Investigadores académicos han demostrado cuánta
información puede ser obtenida de aplicaciones públicas
Android en USENIX 201116.
—— Qualsys Labs17 ofrece una herramienta de testeo SSL.
11 developer.apple.com/library/mac/navigation/#section=Topics&topic=Security
12 www.lancelotinstitute.com
13 shop.oreilly.com/product/0636920022596.do
14 shop.oreilly.com/product/0636920023234.do
15 www.wiley.com/WileyCDA/WileyTitle/productCd-1118204123.html
16 static.usenix.org/event/sec11/tech/slides/enck.pdf
17 www.ssllabs.com/ssltest/
Seguridad de la Aplicación
222
—— Extensas guías y herramientas de testeo gratuitas de
aplicaciones son ofrecidas por OWASP18, incluyendo el
OWASP Mobile Security Project19.
—— AT&T ofrece una herramienta de código abierto de monitorizado de rendimiento de aplicaciones Android llamada
AT&T's Application Resource Optimization tool20.
Conclusiones
Cada vez hay mayor confianza en las aplicaciones móviles, pero
están expuestas a mucha gente que quisiera aprovecharse de
tal confianza. El nivel adecuado de seguridad de una aplicación
es algo que debe considerarse para cada caso en particular. Al
final, tu aplicación va a estar ahí fuera, sola ante el peligro,
y tendrá que defenderse de los piratas informáticos y otras
amenazas maliciosas, donde quiera que vaya.
Invierte tiempo en aprender acerca de las características y
capacidades de seguridad de las plataformas móviles que tienes
como objetivo. Usa técnicas como el modelado de amenazas
para identificar los peligros potenciales relacionados con su
aplicación. Realiza revisiones del código y elimina métodos no
esenciales de registro y depuración. Considera cómo un hacker
podría analizar tu código y, a continuación, utiliza técnicas
similares contra la aplicación en un ambiente seguro para
descubrir vulnerabilidades y mitigarlas antes de publicar tu
aplicación.
18 www.owasp.org
19 www.owasp.org/index.php/OWASP_Mobile_Security_Project
20 developer.att.com/application-resource-optimizer
Seguridad de la Aplicación
223
Accesibilidad
En diciembre de 2014, la Organización Mundial de la Salud
(OMS) declaró en su página web que más del 15% de la
población mundial tiene algún tipo de discapacidad1 y las tasas
de discapacidad están aumentando debido al envejecimiento
de la población y el aumento de las condiciones de salud
crónicas, entre otras causas. Esto significa que alrededor de mil
millones de usuarios potenciales podrían tener dificultades para
la utilización de tu aplicación en caso de que no sea accesible.
Ha habido un gran aumento en el uso de teléfonos inteligentes y tablets en la población general, y eso incluye a las
personas con discapacidad. Esto se debe a que ahora pueden
comprar un producto estandarizado que tiene servicios de
accesibilidad en el sistema operativo, cuando tradicionalmente
habrían tenido que comprar costosos complementos. La
encuesta WebAIM Screen Reader2 muestra que ha habido un
aumento sorprendente en el uso de teléfonos inteligentes por
personas ciegas que usan lectores de pantalla. Las personas
mayores pueden no haber utilizado un ordenador en el trabajo
pero, sin embargo, están descubriendo que pueden llegar a
acomodarse a dispositivos de pantalla táctil más rápidamente
que a un teclado y un ratón tradicionales. A medida que
nuestra población envejece, también lo hacen los niveles de
discapacidad y esto significa que más y más personas tendrán
dificultades para acceder a los servicios de la manera tradicional. Proporcionar una solución digital accesible alternativa
garantizará que las personas con discapacidad puedan seguir
siendo independientes. También puedes descubrir un nuevo
1 www.who.int/mediacentre/factsheets/fs352/en
2 webaim.org/projects/screenreadersurvey5/
Accesibilidad
225
mercado importante al desarrollar aplicaciones que se adapten
a estos usuarios.
La accesibilidad trabaja en pareja con la usabilidad, y se
asegura de que hay una excelente experiencia de usuario para
todos los usuarios de tus aplicaciones, independientemente
de si tienen o no una discapacidad. Todo el mundo quiere ser
capaz de completar la tarea que están llevando a cabo en una
aplicación tan rápida y fácilmente como sea posible, y si tienen
dificultades para hacerlo es probable que vayan a otra parte.
Incorporar la accesibilidad en tus aplicaciones garantiza una
excelente experiencia para todos.
¿Por Qué Hacer tu App Accesible?
A veces, tener acceso a entornos digitales permite a una
persona con discapacidad utilizar un servicio que de otra
manera sería ser imposible. Por ejemplo, si no son capaces de
salir de la casa para hacer sus compras o gestionar su cuentas
bancarias, la prestación de servicios en línea accesibles
significa que pueden acceder a estos servicios de forma
independiente. Es importante reconocer la importancia que un
acceso independiente a los servicios tiene para las personas
con discapacidad.
Hay muchas otras razones para hacer tu aplicación accesible:
—— Implementación la accesibilidad puede mejorar la usabilidad general: Por ejemplo, asegurar que cada elemento de
botón y forma tiene una etiqueta adecuada, que es útil
para todos, no sólo los que tienen discapacidades ya que
todos los usuarios sabrán cómo interactuar con él.
—— Simplemente, es un buen negocio: Por ejemplo, las
personas con discapacidad tienen capacidad de gasto y
Accesibilidad
226
——
——
——
——
si encuentran una aplicación accesible que funciona para
ellos no sólo lo usarán, también la comunicarán a otros.
En escenarios donde las soluciones accesibles son
legalmente obligatorias, tu aplicación puede ser la única
opción para que un negocio pueda operar: Por ejemplo,
tu aplicación puede ser capaz de aprovechar sectores
del mercado financiados por el gobierno tales como la
educación, donde legislación como la Section 508 of the
Rehabilitation Act en los EE.UU. puede exigir una solución
accesible.
El acceso a los bienes y servicios para todos es ley en
muchos países: Por ejemplo en el Reino Unido la Ley de
Igualdad de 2010 requiere que haya acceso a los bienes y
servicios para todo el mundo y esto incluye los servicios
que se proporcionan a través de un medio electrónico
como los sitios web y aplicaciones. Los organismos públicos también tienen el deber de anticipación para asegurar
que sus servicios sean accesibles, por lo que no pueden
considerar la accesibilidad como una ocurrencia tardía.
La organización para la que está siendo desarrollada la
aplicación puede tener un programa de responsabilidad
social corporativa: Por ejemplo, la accesibilidad en webs
y aplicaciones aporta la inclusión social de las personas
con discapacidad, que es un aspecto fundamental de la
responsabilidad social corporativa.
Las plataformas móviles de Apple, Google y Microsoft
aprovechan sus APIs de accesibilidad para las pruebas
automatizadas de la interfaz de usuario: La creación de
una aplicación accesible puede hacer tus pruebas automatizadas más fáciles.
227
¿Qué Funciones de Accesibilidad?
Como muchos de tus usuarios potenciales pueden tener una
discapacidad, esto puede hacer que sea más difícil para ellos
usar un teléfono móvil y sus aplicaciones. Las discapacidades
podrían incluir varios niveles de la vista o audición, discapacidades mentales o dificultades de aprendizaje, discapacidades
físicas, problemas de destreza, y así sucesivamente.
Muchos de estos usuarios confían en el software de terceros
fabricantes para ayudarles a utilizar su dispositivo. A este
software se le suele conocer como tecnología de asistencia, e
incluye diversas utilidades en función del tipo de discapacidad.
Tradicionalmente este tipo de software o los servicios públicos
han tenido que ser 'añadidos' a un dispositivo principal, a
menudo a un alto precio, con el fin de hacerlos accesibles o
más fáciles de usar para una persona con una discapacidad.
Algunos teléfonos inteligentes y tablets proporcionan
ahora suficientes capacidades para que algunos usuarios con
discapacidad puedan utilizar los dispositivos sin necesidad de
pagar por tecnología de asistencia adicional. Lo que se ofrece
depende de la plataforma y la versión del sistema operativo.
Sin embargo estas funcionalidades pueden necesitar de una
aplicación para poder ser ejecutadas.
—— Usuarios con visión parcial - Alguien que es parcialmente
ciego se beneficia de ser capaz de cambiar el tamaño
de fuente, estilo de fuente y el uso de la negrita y el
contraste de color. iOS, Android, Blackberry y Windows
Phone ofrecen varias opciones para cambiar estos términos
en su configuración. Además del universal 'pellizca para
ampliar' , iOS, Android, Blackberry y Windows Phone
ofrecen una función de ampliación o zoom, que amplía una
sección de la pantalla y mantiene este nivel de aumento
Accesibilidad
228
cuando se mueve por todo el teléfono. Tiene gestos únicos
asociados con ella.
—— Usuarios ciegos - Alguien que es ciego tiene que tener la
información en la pantalla y la navegación por la pantalla
se le debe indicar con una locución sintetizada, llamada
a menudo 'lector de pantalla'. iOS fue el primer sistema
operativo que ofreció un lector de pantalla incorporado
llamado 'VoiceOver'. Android incluye 'Talkback' (con todas
las funciones desde Android 4.1 Jelly Bean), que se está
igualando rápidamente en popularidad en la comunidad de
ciegos, ya que está mejorando constantemente. Windows
Phone acaba de sacar Narrator en Windows Phone 8.1, pero
en este momento no está en el punto en el que se puede
utilizar para tener acceso completo al teléfono. Blackberry
ofrece un lector de pantalla con funcionalidad limitada en
unos pocos dispositivos.
—— Usuarios con pérdida auditiva - Una persona con una
discapacidad auditiva a menudo hará uso de un teléfono
inteligente compatible con audífonos que ofrezca funciones como hace iOS 'parpadeos LED de alerta' o 'cancelación
de ruido'. También hay opciones de configuración en iOS y
Android para cambiar los subtítulos y la ayuda en pantalla.
Hacer uso de la vibración para las alertas también es útil.
Un número de teléfonos también proporcionan soporte a
la escucha y dispositivos TTY. Un dispositivo TTY permite
a las personas con pérdida auditiva o con limitaciones del
habla escribir mensajes a cualquier otra persona que tiene
un teléfono de texto, usando una línea telefónica.
—— Usuarios con discapacidades físicas - Si un usuario tiene
un impedimento motor puede estar usando un producto de
hardware para acceder al teléfono, como un interruptor ya
que algunos dispositivos lo permiten. Alternativamente,
229
podría estar haciendo uso del reconocimiento de voz para
acceder al dispositivo.
—— Usuarios con dificultades de aprendizaje - Si un usuario
tiene un deterioro cognitivo o dificultad de aprendizaje,
dependiendo de lo que la discapacidad sea, puede hacer
uso de la configuración que utilizaría un usuario con deficiencia visual, especialmente las opciones de color. Otros
usuarios pueden hacer un mayor uso del reconocimiento
de voz.
Las personas con discapacidad ven su experiencia global
afectada por lo bien que funciona una aplicación con la
tecnología de asistencia. A medida que estas características
están integradas en el sistema operativo y se pueden activar
en la configuración, es importante que, como desarrollador,
tengas en cuenta que se pueden usar con tu aplicación y
asegurarte de testearlo.
Como los lectores de pantalla y la ampliación de la pantalla
en el sistema operativo hacen uso de sus propios gestos, los
gestos en la aplicación pueden verse afectadas cuando los
lectores de pantalla o de ampliación están habilitados. Por
ejemplo, un lector de pantalla del usuario puede navegar por
una pantalla con toques a izquierda y derecha o explorar la
pantalla moviendo su dedo por la pantalla del dispositivo
en un movimiento constante. Según hagaun un gesto, se
indicará un elemento, por ejemplo se selecciona un elemento
pulsando una vez y se abre tocando dos veces. Al utilizar la
magnificación de pantalla, dependiendo del sistema operativo,
es posible que necesite usar un gesto de tres dedos. Incluir
las pruebas con funciones de accesibilidad desde el principio
asegura que estos gestos son soportados por la aplicación y
que cualquier rediseño puede realizarse sin impacto para los
usuarios.
230
Una de las mejores maneras de aprender más acerca de
estas características es activarlas y probarlos por ti mismo en
diferentes aplicaciones.
Directrices en el Diseño de Aplicaciones
Las API de accesibilidad buscar texto en atributos específicos
de elementos de la interfaz de usuario estándar. Los lectores de
pantalla utilizados por personas ciegas, como VoiceOver y TalkBack, transforman el texto en voz sintética que el usuario escucha. El software lector de pantalla también puede determinar
el tipo de atributos de control y otros relacionados para ayudar
a proporcionar al usuario más información contextual, sobre
todo si no hay texto disponible. Es importante que el usuario
entienda lo que la etiqueta del control es, cuál es el control y
la forma de interactuar con él. En algunos casos puede haber
también etiquetas para aportar información adicional.
Del mismo modo que los desarrolladores web hacen uso
de normas y directrices tales como las WCAG 2.0 para hacer
páginas web accesibles, es importante los desarrolladores de
aplicaciones hagan lo mismo. En la actualidad no existe un
estándar de la industria para accesibilidad, aunque existen
normas que pueden ayudar.
La norma internacional, ISO 9241-171 ('The Ergonomics of Human-system Interaction: Guidance on Software
Accessibility')3 es un estándar útil, ya que es independiente de
plataforma. Cubre los elementos de accesibilidad y usabilidad
para una amplia gama de software.
El Royal National Institute of Blind People (RNIB)4 ha
3 www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.
htm?csnumber=39080
4 www.rnib-business.org.uk
231
creado un estándar de aplicaciones y pruebas para todo tipo
de discapacidades basado en su experiencia en este ámbito.
Su estándar para aplicaciones nativas refleja también los
principios de la norma ISO 9241-171. Ofrecen asesoría a
organizaciones y agencias en esta área y una acreditación que
se puede conceder a las aplicaciones, las cuales se consideran
accesibles tras un proceso de auditoría.
La BBC ha desarrollado un conjunto de Directrices de
Accesibilidad para móviles5 que utiliza internamente en su
contenido móvil. Su guía cubre sitios web móviles, híbridas y
aplicaciones nativas. Afirman que "han de considerarse como
un estándar para los empleados y los proveedores de la BBC,
sin embargo también puede ser referencia para cualquier
persona involucrada en desarrollo móvil".
Éstos son algunos de los principios útiles a la hora de
desarrollar una aplicación. Si nos atenemos a ellos, también le
darán a tu aplicación la mejor posibilidad de interoperar con
la tecnología de asistencia que el usuario pueda ejecutar en
conjunto con tu software:
APIs y Directrices para Interfaces
—— Averigua qué características de accesibilidad y APIs tiene
tu plataforma y sigue las mejores prácticas en el aprovechamiento de esas APIs, si existen.
—— Usa elementos estándar en lugar de elementos de interfaz
de usuario personalizados cuando sea posible. Esto asegurará que si tu plataforma cuenta con una infraestructura de
accesibilidad, o adquiere una en el futuro, probablemente
tu aplicación se considerará accesible.
—— Utiliza la API de accesibilidad para tu plataforma, si la
5 www.bbc.co.uk/guidelines/futuremedia/accessibility/mobile_access.shtml
Accesibilidad
232
hay. Esto te permitirá hacer los elementos de interfaz de
usuario personalizada más accesible y significará menos
trabajo por tu parte.
—— Sigue las directrices de interfaz de usuario estándar en tu
plataforma. Esto mejora la consistencia y puede significar
un diseño más accesible por defecto.
—— El usuario debe ser capaz de aplicar los ajustes de
preferencias que el sistema operativo proporciona, tales
como la configuración de accesibilidad.
Navegación
—— La navegación debe ser lógica y coherente. Por ejemplo,
si tiene un botón de atrás en cada pantalla debe estar
ubicado en el mismo lugar en todas las pantallas y
etiquetados de forma consistente.
—— Soporte de navegación programática de la interfaz de
usuario. Esto no sólo permitirá a tus aplicaciones ser
utilizadas con un teclado externo, también mejorará la accesibilidad de tu aplicación en plataformas como Android,
en la que la navegación se puede realizar con un trackball
o virtual d-pad.
Elementos de usuario
—— Todos los elementos de usuarios deben ser visibles y
operables a través de la tecnología de asistencia, a menos
que sea obvio que no son necesarios.
—— Cuando un elemento de usuario tiene un estado asociado
con él, el estado también debe estar disponible para ser
leído por tecnología de asistencia. Por ejemplo, si un
botón de activación es 'on', este debe ser anunciado por el
Accesibilidad
233
lector de pantalla. Los cambios de estado también deberán
ser anunciados.
—— Asegurar que los objetivos de pantalla táctil son de
un tamaño razonable para que se puedan seleccionar
fácilmente.
Etiquetado
—— Todos los elementos, incluyendo elementos de formulario, botones, iconos y así sucesivamente, deberán ser
etiquetados visualmente y mediante programación con un
nombre corto y descriptivo. La etiqueta también debe ser
adyacente al elemento que se relaciona.
—— Cada pantalla debe tener un nombre descriptivo único que
se refiere a su contenido y ayuda a la navegación.
Colores y Fuentes
—— Asegúrate de que haya un buen contraste entre colores de
fondo y primer plano.
—— Evita el uso del color como el único medio de diferenciar una acción. Un usuario daltónico no será capaz de
identificar los errores si se le muestran en rojo los datos a
corregir, por ejemplo.
—— Considera el tamaño de la fuente más pequeña. ¿Es razonable considerar que la mayoría de la gente podría leerla
sin dificultad?
Notificaciones
—— Los mensajes de error, notificaciones y alertas deben ser
identificables y claros.
Accesibilidad
234
—— Asegúrate de que los mensajes de error, notificaciones
y alertas no son proporcionados sólo por un color, una
señal háptica, o una sonora. Por ejemplo, una persona con
pérdida auditiva no reconocerá notificaciones que sólo son
audibles.
Testeo
—— No te olvides de probar tu aplicación en el dispositivo de
destino con la tecnología de asistencia integrada para ese
sistema operativo.
—— ¡Asegúrate de que tu test de usuarios incluye a las
personas con discapacidad también!
Apple, Google y Microsoft, han aumentado la importancia de
sus respectivo soportes de accesibilidad mediante la interfaz
de Accesibilidad para mejorar su automatización de pruebas
de interfaz. Esto proporciona un incentivo más para que los
desarrolladores consideran el diseño de sus aplicaciones desde
el punto de vista de la accesibilidad.
En cuanto a las diferentes plataformas móviles, se hace
evidente que difieren en gran medida con respecto a sus APIs,
pero están empezando a poner en práctica muchas de las
mismas características de accesibilidad.
Controles y Elementos Personalizados
Si estás utilizando elementos de interfaz personalizados en tu
aplicación, las plataformas que tienen una API de accesibilidad
te permiten hacer tus controles personalizados accesible.
Para ello, expón el control a la tecnología de asistencia que
se ejecuta en el dispositivo para que pueda interrogar a las
propiedades del control y hacerlo accesible.
Accesibilidad
235
Puedes obtener más información sobre este proceso en
Android en Google IO 2012 presentations6.
Si eres miembro del programa de desarrolladores de Apple,
echa un vistazo a las sesiones sobre accesibilidad de la WWDC
2014 disponible en el iOS Developer Center7.
Accesibilidad de una App Android
La última gran versión de Android, la versión 5 (Lollipop), ha
seguido mejorando el soporte a accesibilidad con nuevas APIs.
La accesibilidad comenzó a ser una propuesta real con Android
4.1 (Jellybean) y se ha mejorado mucho desde entonces.
Desde las áreas activas accesibles y la subtitulación oculta
en la versión 4.0, en 5.0 también hay características experimentales en los ajustes que incluyen inversión de color y de
alta contraste de texto con los Android Services8.
Algunas de las funciones de accesibilidad en Android 5.0
incluyen:
—— TalkBack - lectura de contenido para usuarios ciegos
—— Switch Access - para personas con discapacidad física que
quieran acceder a una app con un disposotivo de hardware
—— Soporte al etiquetado - ofrece etiquetas y subtítulos para
personas con dificultades auditivas
—— Gestos de aumento - aumento tipo zoom para usuarios
con dificultades visuales
—— Texto con gran tamaño o contraste (experimental) - para
usuarios con dificultades visuales o ciertas dificultades de
aprendizaje
6 youtube.com/watch?v=q3HliaMjL38
and youtube.com/watch?v=ld7kZRpMGb8
7 developer.apple.com/wwdc/videos
8 developer.android.com/about/versions/lollipop.html
Accesibilidad
236
—— Retardo en pulsación - para usuarios con dificultades
motoras
—— Inversión de color (experimental) - para usuarios con
dificultades visuales y algunos usuarios con dificultades de
aprendizaje que prefieran una paleta de color alternativa
—— Entrada de datos por voz - para usuarios con dificultades
de aprendizaje o discapacidades físicas que deseen
controlar el teléfono con su voz
Encontrarás algunos recursos útiles en la Support Library9,
que incluye maneras de mejorar la accesibilidad de las vistas
personalizadas.
Para obtener información específica sobre cómo utilizar
la API de accesibilidad de Android, junto con las mejores
prácticas en accesibilidad en Android, consulta el documento
de Google titulado Making Applications Accessible10.
También puedes encontrar más ejemplos en la documentación de desarrollo, en una sección titulada Implementing
Accessibility11. Testear la accesibilidad también está tratado
online12 .
Para obtener más información sobre la accesibilidad en
Android, incluyendo cómo utilizar la API de lectura de texto,
consulta el proyecto Eyes-Free project13.
9 developer.android.com/tools/support-library/index.html
10 developer.android.com/guide/topics/ui/accessibility/apps.html
11 developer.android.com/training/accessibility/index.html
12 developer.android.com/tools/testing/testing_accessibility.html
13 code.google.com/p/eyes-free
Accesibilidad
237
Accesibilidad en Aplicaciones BlackBerry
Actualmente, el sistema operativo Blackberry tiene algunas
características de accesibilidad que son útiles para personas
con diversas discapacidades. Las funcionalidades que ofrece
son más limitadas, sin embargo sí soporta TTY para personas
con pérdida de audición. Como sólo hay un lector de pantalla
disponible para dispositivos BlackBerry y no está tan desarrollado como VoiceOver para iOS o TalkBack para Android,
Blackberry están siendo considerados por muy pocas personas
ciegas en la actualidad.
Para los dispositivos Blackberry 7 y BlackBerry 10, el Blackberry Screen Reader14 sólo está disponible para un número muy
limitado de dispositivos. Viene preinstalado en los dispositivos
Blackberry 10 y se puede descargar para otros dispositivos
compatibles. Puedes ver cuáles se soportan actualmente en
Blackberry Accessibility Website15.
Blackberry 10 ofrece varias configuraciones de accesibilidad
para permitir a los usuarios personalizar su dispositivo. Estos
incluyen, entre otros:
—— Lector de pantalla - convierte texto en voz sintética para
usuarios con poca o ninguna visión. Sólo está disponible
en el BlackBerry Z30.
—— 'Modo Ampliar' - permite al usuario aumentar y disminuir
la ampliación de la pantalla de texto y sus elementos.
—— Subtítulos y etiquetas - son útiles en el contenido de
vídeo para las personas con pérdida de audición.
—— Configuración de pantalla - dan al usuario la oportunidad
de cambiar el texto y los colores en la pantalla. Es útil
14 mobileapps.blackberry.com/devicesoftware/entry.do?code=bsr
15 us.blackberry.com/legal/accessibility.html
Accesibilidad
238
para las personas con dificultades de aprendizaje y
usuarios con visión parcial.
—— Configuración de TTY - para usuarios con pérdida auditiva
que quieren usar usar texto en lugar de la voz para
comunicarse.
—— Soporte a la escucha - disponible en algunos teléfonos.
Encontrarás documentación sobre la creación de aplicaciones accesibles para Blackberry 10 en "Accessibility features
and best practices - BlackBerry Native"16.
Si estás diseñando para Blackberry 10, también hay recursos
de desarrollo que incluyen algunas directrices de diseño en
"Blackberry 10 Design Guidelines"17.
Si estás desarrollando para BB OS 7.1, tienes amplia
información sobre el uso de su API de accesibilidad y muchos
consejos sobre diseño de interfaz accesible en su sitio web
para desarrolladores18.
Accesibilidad en iOS
Apple fue la primera empresa de integrar funciones de accesibilidad directamente en el sistema operativo. Debido a esto
el apoyo a la accesibilidad en iOS es un poco mejor que en
Android, aunque Android se está igualando rápidamente.
Algunas de las características de accesibilidad en iOS 8
incluyen, entre otras:
16 developer.blackberry.com/native/documentation/cascades/best_practices/
accessibility/accessibility_features_best_practices.html
17 developer.blackberry.com/devzone/design/bb10/accessibility.html
18 developer.blackberry.com/java/documentation/intro_
accessibility_1984611_11.html
Accesibilidad
239
—— VoiceOver - lector de pantalla. Indica los objetos y textos
en pantalla, habilitando tu aplicación para poder ser
utilizada por personas ciegas.
—— Zoom - aumenta el tamaño del contenido en pantalla.
—— Invertis Colores - invierte los colores mostrados, ayudando a personas que necesitan contraste entre blancos y
negros pero para los que una pantalla blanca es demasiado
brillante.
—— Texto Grande y en Negrita - ayuda a un amplio rango
de personas, desde los que usan gafas a aquellos con
ceguera parcial, pasando por los que tengas dificultades de
aprendizaje.
—— Aumentar Contraste - mejora el contraste entre el fondo y
el contenido.
—— Etiquetas y Subtítulos - para usuarios con dificultades
auditivas.
—— Alertas audibles, visibles y hápticas - permite elegir qué
tipo de alerta utilizar para las notificaciones.
—— Control por voz y Siri - permite llamar por teléfono y usar
ciertas funciones del teléfono mediante comandos de voz.
Puede ser útil para muchos usuarios, por ejemplo aquellos
con dificultades de motricidad, de aprendizaje, o de visión.
—— Soporte a Audífonos - para personas con pérdida de
audición.
—— Control de Acceso - para aquellos con discapacidades
físicas que quieran utilizar hardware de terceros para usar
la aplicación.
—— Acceso Guiado - útil en el ámbito educativo o cuando
alguien quiere limitar qué es accesible desde la pantalla de
un usuario.
Si estás trabajando en iOS, asegúrate de seguir las directri-
Accesibilidad
240
ces de accesibilidad de Apple19. Aportan información detallada
de la API y una excelente fuente de recomendaciones para
maximizar la experiencia de usuario en tus aplicaciones.
Apple también ofrece ayuda sobre cómo testear la accesibilidad de tu aplicación con VioceOver20.
Accesibilidad en Windows Phone 8
Es justo decir que Microsoft ha estado poniéndose al día con
iOS y Android en cuanto a accesibilidad. Desplegaron un buen
apoyo para la ampliación, el cambio de tamaño de texto y
el cambio de colores, y en Windows Phone 8.1 las cosas han
cambiado de nuevo. Ahora hay un lector de pantalla llamado
Narrador en Windows Phone 8.1, aunque todavía en fase beta,
que lee el texto en voz sintética y, al igual que otros lectores
de pantalla del teléfono, hace uso de sus propios gestos
específicos. Está diseñado para usuarios con poca o ninguna
visión, pero todavía necesita mejorar para ser tan útil como
iOS y Android. Sólo puede utilizarse con algunas funciones
básicas y la navegación, y no tiene tantas funciones como
otros lectores de pantalla. En el momento de escribir estas
líneas sólo está disponible con la pantalla, teclado y ajustes de
idioma para inglés de Estados Unidos. Sin embargo, es sin duda
prometedor.
Algunas de las características de accesibilidad de Windows
Phone 8/8.1 incluyen:
19 developer.apple.com/library/ios/#documentation/UserExperience/
Conceptual/iPhoneAccessibility
20 developer.apple.com/library/ios/technotes/TestingAccessibilityOfiOSApps/
TestAccessibilityonYourDevicewithVoiceOver/
TestAccessibilityonYourDevicewithVoiceOver.html
Accesibilidad
241
—— Narrador - lector de pantalla aún en beta, iene una
funcionalidad limitada y sólo está disponible en 8.1
—— Tamaño de Texto - el tamaño del texto se puede ampliar
para ayudar a las personas con dificultades visuales o de
aprendizaje
—— Alto Contraste - cambia el texto a blanco y negro y
proporciona un fondo de texto sólido en vez de imágenes.
Es útil para usuarios con deficiencia visual y o dificultades
de aprendizaje
—— Lupa de Pantalla - para las personas con deficiencia visual
que deseen ampliar el texto en la pantalla y cambiar el
nivel de zoom. Tiene sus propios gestos
—— Control por Voz - el usuario puede hacer llamadas, buscar
en Internet, abrir aplicaciones o escuchar mensajes de
texto. Útil para una amplia gama de personas en diferentes
situaciones, incluyendo aquellas con deficiencias motrices,
problemas de aprendizaje o discapacidad visual
—— Personalizar Etiquetas de Navegador - es posible cambiar
el tamaño de fuente y el color y la transparencia del
fondo de los subtítulos en Internet Explorer, y también en
las aplicaciones que hacen uso del navegador. Útil para
personas con pérdida auditiva o de visión
—— Compatibilidad con TTY - permite a las personas con
pérdida auditiva o del habla escribir mensajes a cualquier
otra persona que tiene un TTY
—— Cortana - es el 'asistente personal' disponible en Windows
Phone 8.1. Es una característica interesante para todos los
usuarios, pero especialmente útil para las personas con
discapacidades, ya que se puede activar con el habla
La documentación "Accessibility for Windows Runtime
Accesibilidad
242
Apps"21 te proporcionará ayuda, ya estés desarrollando en C#/
VB/C++ y XAML o JavaScript y HTML.
Microsoft tiene sus Directrices para el Diseño de Aplicaciones Accesibles22, un documento muy útil. Informa sobre la
API correspondiente y sobre si realmente tienes que utilizar
controles personalizados en XAML o HTML, explicándote cómo
hacerlo de una manera accesible. También recoge algunas otras
guías de terceros que pueden ser útiles. Por ejemplo, si estás
desarrollando en HTML será importante considerar el uso de
Accessible Rich Internet Applications 1.0 (WAI-ARIA)23, útil
para hacer el contenido dinámico más accesible a los lectores
de pantalla.
Sólo una vez que hayas teasteado la accesibilidad de tu
aplicación24, Microsoft te permitirá declarar que tu aplicación
es accesible en su tienda aplicaciones25, lo que le permitirá
ser descubierta por los usuarios que filtren sus búsquedas por
accesibilidad.
Accesibilidad de Aplicaciones Web
Móviles
Como se ha mencionado anteriormente en este capítulo, se ha
escrito mucho acerca de la accesibilidad web, pero menos se ha
escrito sobre la accesibilidad en relación con las aplicaciones.
Esto también se aplica a la accesibilidad de la web móvil. Es
un área que tiene un interés creciente y el World Wide Web
21 msdn.microsoft.com/en-us/library/windows/apps/xaml/dn263101.aspx
22 msdn.microsoft.com/en-us/library/windows/apps/hh700407.aspx
23 www.w3.org/TR/wai-aria/markup
24 msdn.microsoft.com/en-us/library/windows/apps/xaml/hh994937.aspx
25 msdn.microsoft.com/en-us/library/windows/apps/xaml/jj161016.aspx
Accesibilidad
243
Consortium (W3C) ha creado el 'Web and Mobile Interest
Group' para discutirla e identificar qué tareas deben llevarse a
cabo, junto con el 'Web Applications Working Group'. Así que
el número de grupos de trabajo en el W3C que se relacionan
con esta área están creciendo y pueden proporcionar ayuda y
documentación útil.
El W3C ha publicado un análisis estado de la cuestión y hoja
de ruta que enumera los Estándares para Aplicaciones Web en
Móviles26.
El W3C ha sugerido que todo aquello que utilice HTML y esté
basado en web debería atenerse a las Web Content Accessibility Guidelines (WCAG) 2.0 y a las Mobile Web Best Practices
(MWBP). Así que si eres un desarrollador de contenidos web,
estas directrices son un buen lugar para empezar. También
encontrarás que las Relationship between Mobile Web Best
Practices (MWBP) and Web Content Accessibility Guidelines
(WCAG)27 son un recurso útil.
Si tu aplicación desea imitar el aspecto y usabilidad de
una aplicación nativa, entonces debes seguir las directrices
mencionadas anteriormente en este capítulo.
26 www.w3.org/Mobile/mobile-web-app-state
27 w3.org/TR/mwbp-wcag/
Accesibilidad
244
Como el HTML5 cada días es más soportado en las diferentes
plataformas móviles, te recomendamos leer la guía de mejores
prácticas "Mobile Web Application Best Practices"28, ya que es
probable que se utilicen para conformar las bases de cualquier
norma de accesibilidad de aplicaciones web móvil futura.
Otra área clave para orientarse es "Accessible Rich Internet
Applications 1.0 (WAI-ARIA)" de W329, ya que ha sido diseñada
para asegurar que las funciones de HTML más dinámicas sean
accesibles para los lectores de pantalla.
Un área interesante de trabajo en el W3C es el grupo
"Independent User Interface (IndieUI) Working Group"30.
El grupo afirma que "la interfaz de usuario independiente
(IndieUI) es una forma de que las acciones del usuario sean
comunicadas a las aplicaciones web y hagan que sea más fácil
para las aplicaciones web trabajar en una amplia gama de
contextos - diferentes dispositivos, diferentes tecnologías de
asistencia (AT), diferentes necesidades de los usuarios". Esta
línea de trabajo va a ser muy importante para la accesibilidad
y la independencia de los dispositivos. Vale la pena mirar la
documentación que tienen actualmente.
28 w3.org/TR/mwabp
29 www.w3.org/TR/wai-aria
30 www.w3.org/TR/indie-ui-context
Accesibilidad
245
Testeo
Hay muchos mundos paralelos en el universo de las aplicaciones móviles y, mientras tanto, los dispositivos móviles
evolucionan muy rápidamente en comparación a otros tipos de
bienes. El testeo de aplicaciones móviles tiene que mantenerse
en vanguardia aún cuando el ritmo de cambios continúa
acelerándose.
El destino de las aplicaciones móviles depende de que los
usuarios, al igual que las multitudes en los anfiteatros de la
época romana, a menudo toman la decisión final de si una aplicación vive para luchar otro día, o muere. Del mismo modo, las
aplicaciones comunes y corrientes son propensas a languidecer
como un mero dato estadístico más en la tienda de aplicaciones, faltando al duro trabajo de su ideación, producción y
lanzamiento. Además, el estigma de una mala calificación tiene
una vida media larga y es difícil sobreponerse a él.
Testear podría ser visto como una inconveniencia, pero
los fallos en tu aplicación pueden ser demasiado notorios,
y recuperar tu credibilidad es difícil cuando tu aplicación
tiene mala puntuación en la tienda de aplicaciones. Así que
puedes esperar a que los usuarios decidan su destino, o testear
tus aplicaciones móviles para inclinar la balanza a tu favor.
Tienes la oportunidad de ayudarte a ti mismo y a tu equipo de
pruebas para testear de manera más efectiva tu aplicación.
Testeo
247
Cuidado con las especificaciones
Plataformas, redes, dispositivos, en incluso firmware, todo son
especificaciones, y cualquiera de ellas podría causar problemas
en tus aplicaciones. Hay varias maneras de identificar sus
efectos, por ejemplo un tester puede notar diferencias en el
rendimiento de la aplicación y el comportamiento de la interfaz
de usuario durante la prueba con diferentes dispositivos.
QuizUp utilizó pruebas que ayudaron a encontrar cinco problemas importantes en su aplicación para Android, provocados
por las diferencias entre dispositivos, y un error específico a
Android 4.0.4. Las pruebas automatizadas se ejecutaron en 30
dispositivos durante 30 minutos, lo que hizo esta prueba práctica y útil, en lugar de tener que pasar 60 horas tratando de
hacer pruebas manuales de la aplicación en 30 dispositivos1.
Necesitas conocer estas especificaciones para poder decidir
si se deben abordar las diferencias no deseadas mediante
modificaciones en aplicación antes de su lanzamiento.
Por el contrario, las analíticas móviles puede ayudarte a
identificar diferencias en diversos aspectos, incluyendo el
rendimiento y el consumo de energía cuando la aplicación
está siendo utilizada por muchos usuarios en gran variedad
dispositivos. Puedes ver algunos ejemplos de diferencias en
el comportamiento y en cómo los problemas se abordaron en
un artículo publicado por científicos de la computación de la
Universidad de Wisconsin2 .
Este capítulo trata los temas generales; las pruebas para
1 blog.testmunk.com/quizup-mastering-android-device-fragmentation-
automated-testing
2 “Capturing
Mobile Experience in the Wild: A Tale of Two Apps”, disponible
en static.googleusercontent.com/media/research.google.com/en//pubs/
archive/41590.pdf
Testeo
248
plataformas específicas se tratan en sus capítulos correspondientes.
El Testeo Necesita Tiempo - Planifícalo
Ejemplo de Cálculo
Asumamos que tu aplicación tiene diez epics3, y cada epic
necesita ser testeada con entre una y tres enfoques (funcionalidad, usabilidad, escenarios de usuario). Si testeas cada
epic con una perspectiva con un caso de uso durante una hora
te llevaría diez horas testear la aplicación. Por otra parte,
si testeas cada epic utilizando las tres perspectivas con dos
casos de uso, el testeo te llevaría 60 horas. Habitualmente,
hacer pruebas consique detectar defectos y otros temas que
vale la pena reportar, lo que requiere más tiempo, lo que a su
vez requiere invertir algo de tiempo en resolver lo encontrado,
por ejemplo resolver un bug o realizar una mejora en la app.
Asumamos que cada prueba encuentra entre 5 y 10 problemas.
El tiempo necesario para procesar los defectos será entre 5
a 50 horas de trabajo. Así que en el mejor de los casos lleva
unas 15 horas probar la aplicación (funcionalmente), y en el
peor llevará hasta 110 horas probar la aplicación en los tres
enfoques posibles.
3 también
llamadas historias de usuario en este contexto (en.wikipedia.org/
wiki/User_story)
Testeo
249
Bajo
10 × 3 × 2
Alto
10
5 a 10 defectos detectados / hora
60
50
5min / defecto detectado
5
600
Horas de
Trabajo
Defectos
detectados
Horas de
Trabajo
50
Es posible que también necesites añadir al cálculo mucho
más tiempo para probar la aplicación en una variedad de
dispositivos compatibles, particularmente para aplicaciones
web y aplicaciones nativas Android.
Testeo Continuo
Los lanzamientos continuos necesita pruebas continuas.
Una aplicación viable debe actualizarse de manera continua.
Las actualizaciones pueden incluir correcciones para nuevas
versiones de la plataforma o modelos de dispositivos, nuevas
funcionalidades y otras mejoras. Por lo tanto, el testeo no es
una tarea puntual; a las aplicaciones de alta calidad les conviene tener procesos de testeo continuados, optimizados, en su
producción. Las pruebas de producción incluyen su validación,
así como la detección temprana de problemas potenciales
antes de que se dispare su número.
Gestionando tu Tiempo de Pruebas
El testeo, como ya has descubierto, puede tomar muchas horas,
mucho más de lo que desearías, especialmente si te aproximas
a una fecha límite, como la de lanzamiento. Hay varias formas
de administrar el tiempo a invertir en las pruebas, y las pruebas en paralelo se pueden ser más interesantes, gratificantes y
productivas.
Testeo
250
—— Reducir el tiempo de configuración: Encuentra maneras
de desplegar aplicaciones de forma rápida y eficiente.
Implementar mecanismos para proporcionar los datos y la
configuración de las pruebas correspondientes, tanto en el
dispositivo móvil como en los servidores pertinentes. Trata
de tener dispositivos y sistemas 'listos para testear'.
—— Reducir el tiempo necesario para la presentación
de informes y análisis de errores: datos, capturas de
pantalla, e incluso de vídeo, pueden ayudar a investigar
los bugs más fácil y rápidamente. Los datos pueden incluir
los logs, las configuraciones del sistema, el tráfico de red y
la información de tiempo de ejecución.
—— Análisis de riesgos: Se puede utilizar el análisis de
riesgos para decidir cómo y cuándo asignar recursos a
las pruebas. Los riesgos son difíciles de determinar con
precisión por el tester o el desarrollador individualmente;
un esfuerzo conjunto de todos los implicados en la
aplicación móvil puede ayudar a mejorar el análisis de
riesgos. A veces, el tester es el encargado de ajustar la
valoración del riesgo.
Implica a otros en tus pruebas
Gente que no pertenece a tu equipo puede ayudar con el testeo. Por ejemplo, otros empleados pueden participar en cazas
de bugs4, y el crowdsourcing5, y los tests de las versiones
Alpha y Beta proporciona acceso temprano a segmentos de
usuarios.
Cuando terceros están involucrados en probar una
aplicación, necesitan maneras de acceder y utilizarla. Las
4 en.wikipedia.org/wiki/Bug_bash
5 Algunos
proveedores de crowdtesting son Applause.com y PassBrains.com
Testeo
251
aplicaciones web pueden hospedarse online, protegidas usando
contraseñas, URLs difíciles de adivinar y otras técnicas. Las
aplicaciones instalables necesitan por lo menos una forma de
ser instaladas, por ejemplo utilizando una tienda de aplicaciones de empresa o servicios de implementación especializados.
Estos enfoques pueden aumentar tus otras pruebas, pero no
recomendamos su uso como único testeo formal. Para obtener
buenos resultados tendrás que dedicar parte de tu tiempo
y esfuerzo a la definición de las pruebas que deseas que se
ejecuten, trabajar con la empresa para revisar los resultados,
etcétera.
Effective Testing Practices
Testear, al igual que otras competencias, se puede mejorar
mediante la aplicación de diversas técnicas y prácticas.
Algunas de ellas tienen que aplicarse en el desarrollo de tu
aplicación móvil, tales como la capacidad de testeo, mientras
que otras se aplican al crear tus pruebas, y algunas cuando las
estás realizando. Testdroid ofrece una buena lista de control6
para asegurar la correcta adquisición de experiencia en testeo
por parte de tu equipo.
Mnemónicos que resumen los Tests Heurísticos
Los tests heurísticos son directrices falibles, o sugerencias, que
tienden a ser útiles. Varios han sido creados específicamente
para ayudar a probar aplicaciones móviles y algunos utilizan
códigos menmónicos para ayudarte a considerar aspectos
particulares del software. Cada letra es la inicial de una palabra
clave.
6 testdroid.com/testdroid/6336/get-the-superb-expertise-in-your-testingqa-
team
Testeo
252
—— I SLICED UP FUN7: Input (Prueba la aplicación cambiando
su orientación (horizontal / vertical) y todas las entradas
incluyendo teclado, gestos, etc.), 'Store (Usa directrices de
la tienda de apliaciones como fuente para probar ideas),
Location (Test en movimiento para comprobar si hay
problemas de localización), Interaction/Interruption (Ver
cómo tu aplicación interactúa con otros programas, en
particular los integrados, aplicaciones nativas), Communication (Observa el comportamiento de tu aplicación
al recibir llamadas, correos electrónicos, etc.), Ergonomics
(Búsqueda de áreas con problemas en la interacción,
por ejemplo, fuentes pequeñas), Data (Test del uso de
caracteres especiales, diferentes idiomas, soporte a contenido externo, grandes archivos de diferentes formatos,
notificaciones), Usability (Busca cualquier acción de
usuario que sea torpe, confusa o lenta), Platform (Prueba
sobre diferentes versiones del sistema operativo), Function
(Verifica que todas las funciones se implementan y que
funcionan de la manera que se supone que deben hacerlo),
User Scenarios (Crear pruebas de escenarios para tipos
concretos de usuarios), Network (Test con diferentes y
cambiantes condiciones de la conexión)
—— COP FLUNG GUN8 resume los aspectos Communication,
Orientation, Platform, Function, Location, User Scenarios,
Network, Gestures, Guidelines, Updates, Notifications.
7 kohl.ca/articles/ISLICEDUPFUN.pdf
8 moolya.com/blogs/2014/05/34/COP-FLUNG-GUN-MODEL
253
Implementando la Testeabilidad
Comienza diseñando e implementando formas de probar tu
aplicación durante su desarrollo; especialmente para pruebas
automatizadas. Por ejemplo, utilizar técnicas como la inyección de dependencias en el código permite sustituir servidores
reales (lentos y fragmentados) con los servidores de simulacros
(controlables y rápidos). Utiliza identificadores únicos y claros
para los elementos clave de la interfaz de usuario. Si los
mantienes sin cambios tus identificadores pruebas requerirán
menos mantenimiento.
Separa tu código en módulos comprobables. Hace varios
años, cuando los dispositivos móviles y herramientas de
software eran muy limitadas, los desarrolladores optaron por
‘optimize’ su código móvil en bloques monolíticos de código;
sin embargo, los dispositivos actuales y plataformas móviles
implican que esta forma de ‘optimization’ es innecesaria y
posiblemente contraproducente .
Ofrece maneras para consultar el estado de la aplicación,
posiblemente a través de una interfaz de depuración personalizado. Si no, tu, o sus testers, podríais pasar mucho tiempo
tratando de comprender los problemas cuando la aplicación no
funciona como se esperaba.
—— Prueba de combinación : es una técnica para encontrar
errores mediante la combinación de los parámetros de
manera eficiente, requiriendo muchas menos pruebas que
intentando todas las permutaciones posibles. Una técnica
popular se llama All Pairs Testing9.
9 en.wikipedia.org/wiki/All-pairs_testing
Testeo
254
Tours para Testing Exploratorio
Un tour es un tipo de prueba exploratorias, una manera de
estructurar más las sesiones de testing exploratorio. Los tours
ayudan a enfocar tus tests, Cem Kaner describe un tour como
"una búsqueda dirigida a través del programa. Encuentra todas
las funciones, especificaciones sobre el producto, variables,
eneficios previstos, maneras de ir de A a B, todo X. O tal vez
no todos, pero muchos de ellos"10. Con la combinación de
diferentes tours en diferentes perspectivas (véase la heurística I SLICED UP FUN), se puede seleccionar la cobertura y
profundidad de la prueba.
Examples of Tours11 include:
—— Tour de configuración: intenta encontrar todas las
maneras en que se puede cambiar la configuración en el
producto de manera que la aplicación conserva dichos
ajustes.
—— Tour de funciones: se mueve a través de la aplicación y
se familiariza con los controles y características que se
encuentre.
—— Tour de estructura: encuentra todo lo que pueda acerca
de lo que se refiere al producto físico (código, interfaces
de hardware, archivos, etc.).
—— Tour de variabilidad: busca las cosas que se pueden
cambiar en la aplicación - y trata de cambiarlas.
Más información sobre este y otros métodos de pruebas
10 kaner.com/?p=96, ver también developsense.com/blog/2009/04/of-testingtours-and-dashboards/
11 from michaeldkelly.com/blog/2005/9/20/touring-heuristic.html
Testeo
255
exploratorias en el libro de James Whittaker "Exploratory
Software Testing"12 .
Testear en Varios Dispositivos
Dispositivos Físicos y Virtuales
Los dispositivos físicos son reales, puedes sostenerlos en tus
manos. Los dispositivos virtuales se ejecutan como software,
dentro de otro ordenador. Ambos son útiles para probar las
aplicaciones móviles.
Los dispositivos virtuales son generalmente libres y están
disponibles de inmediato para instalar y utilizar. Algunas
plataformas, incluyendo Android, te permiten crear dispositivos
personalizados, por ejemplo con una nueva resolución de
pantalla, que puede utilizar para probar aplicaciones, incluso
antes de que el hardware adecuado esté disponible. Pueden
proporcionar pruebas básicas rápidas de tus aplicaciones. Las
principales diferencias son: el rendimiento, la seguridad y la
forma en que interactuamos con ellos en comparación con los
dispositivos físicos. Estas diferencias pueden afectar la validez
de algunos resultados de la prueba.
El conjunto de dispositivos de prueba requiere ser revisado
de manera continua a medida que evoluciona el ecosistema.
También es posible identificar nuevos dispositivos, que tu
aplicación no soporta actualmente, durante las revisiones,
como se puede ver a continuación:
12 www.amazon.com/Exploratory-Software-Testing-Tricks-Techniques/
dp/0321636414
Testeo
256
Grupo de usuarios existente
La mézcla óptima a la que dar soporte
Posible Base
de Datos de
dispositivo
Base de Datos
de dispositivo
instalada
Base de Datos
de dispositivo
objetivo
Grupo de usuarios futuro
El de mayor crecimiento
en el periodo anterior
Nuevo grupo de usuarios
Externos
El mayor grupo que no es objetivo y
que no está utilizando la aplicación
El dispositivo o plataforma
más interesante
En última instancia, el software necesita ejecutarse en
dispositivos reales, físicos, ser utilizado por sus usuarios
previstos. Las características de funcionamiento de diversos
modelos de teléfono varían enormemente de unos a otros,
y también respecto a los dispositivos virtuales. Por tanto,
comprar, pide prestado y mendiga si hace falta teléfonos para
realizar tus pruebas. Un buen comienzo es elegir una mezcla
de aquellos populares, nuevos y que incluyen características
específicas o características tales como: pantalla táctil, teclado
físico, resolución de pantalla, chipset de redes, etcétera.
Prueba tu software en al menos uno de gama baja o antiguo
, ya que también deseas satisfacer a usuarios con estos
dispositivos sean.
Estos son algunos ejemplos de áreas a poner a prueba en
los dispositivos físicos:
—— Navegación por la interfaz de usuario: por ejemplo, ¿pueden utilizar los usuarios tu aplicación con una sola mano?
Efectos de las diferentes condiciones de iluminación: la
experiencia de la interfaz de usuario puede diferir bajo la
luz del sol cuando estás fuera de casa. Es un dispositivo
257
móvil - la mayoría de los usuarios estarán en movimiento.
Gira la pantalla y asegúrate de que la aplicación es
igualmente atractiva y funcional.
—— Localización: si utilizas la información de ubicación en
tu aplicación: muévete tanto de forma rápida como lenta,
y ve a lugares con cobertura de red y GPS irregulares para
ver cómo se comporta su aplicación.
—— Multimedia: el soporte a audio, reproducción de vídeo y
servicios de grabación puede diferir drásticamente entre
los dispositivos reales y sus respectivos emuladores.
—— Conectividad a Internet: conectar a Internet puede llevar
una cantidad increíble de tiempo. El retardo en la conexión
y el ancho de banda dependen de la red, su potencia real
y el número de conexiones simultáneas. Pon a prueba los
efectos de una conectividad intermitente tu aplicación.
Como ya se ha mencionado, el crowdtesting también puede
ayudar a cubrir un amplio rango de dispositivos reales, pero
nunca debes tomar las observaciones de terceros como única
referencia.
Dispositivos Remotos
Si no tienes dispositivos físicos a mano o si necesitas probar
la aplicación en otras redes, especialmente en el extranjero o
diversas localizaciones, entonces un ‘servicio de dispositivos
remotos’ podría ayudarle. Te puede ayudar a extender la
amplitud y profundidad de tu prueba con poco o ningún coste.
Varios fabricantes ofrecen este servicio sin coste alguno a
los desarrolladores de software registrados para un subconjunto
de sus modelos de teléfono. Tanto Nokia13 para sus plataformas
13 developer.nokia.com/Devices/Remote_device_access/
Testeo
258
y Samsung14 (para Android y Tizen) proporcionan acceso diario
restringido, pero libre.
También puedes utilizar los servicios comerciales
de empresas tales como SauceLabs.com, testdroid.com,
PerfectoMobile.com o DeviceAnywhere.com para realizar pruebas
similares a través de una gama de dispositivos y plataformas.
Algunos fabricantes promueven estos servicios pero, sin
embargo, a menudo hay que pagar por ellos después de un
corto periodo de prueba. Algunos de los servicios comerciales
proporcionan APIs para que puedas crear pruebas automatizadas.
Puedes incluso crear un depósito privado de dispositivos
remotos, por ejemplo alojándolos en oficinas en localizaciones
remotas.
Ten cuidado con la privacidad y la confidencialidad en el uso
de dispositivos compartidos.
Pruebas Automatizadas
Las pruebas automatizadas pueden ayudar a mantener y
mejorar tu velocidad, es decir tu capacidad de lanzar funcionalidades, proporcionando la detección temprana de problemas.
Para ello, tienen que estar bien diseñadas e implementadas. De
lo contrario, corres el riesgo de duplicar la carga de trabajo y
mantener un embrollo de aplicación y pruebas automatizadas
incompletas y poco fiables. Las buenas pruebas automatizadas
imitan las buenas prácticas de desarrollo de software, por
ejemplo utilizando Patrones de Diseño15, modularización,
revisiones de código, etcétera.
Testear aplicaciones móviles con eficacia puede ser algo
14 developer.samsung.com/remotetestlab/rtlDeviceList.action
15 en.wikipedia.org/wiki/Design_Patterns
Testeo
259
complejo e incluso desafiante, siendo necesario combinar
pruebas automatizadas e interactivas a través de una gama
de dispositivos. Afortunadamente, varias de las principales
plataformas de desarrollo móvil incluyen la automatización
de pruebas en sus herramientas básicas, como Android y iOS.
Y hay herramientas multiplataforma de automatización de
pruebas disponibles para plataformas populares; siendo algunas
son gratuitas y de código abierto, mientras que otras son
comerciales.
Es importante evaluar la longevidad y la vitalidad de
las herramientas de automatización de pruebas que vas a
utilizar, de lo contrario es posible que cargues con código de
automatización de pruebas no soportado. Las herramientas de
automatización de pruebas proporcionadas como parte de un
SDK de desarrollo son dignas de consideración. Generalmente
son gratis, inherentemente disponibles para la plataforma en
particular, y apoyadas por grandes empresas.
Automatización de Pruebas en BDD
BDD es el acrónimo de Behavior-Driven Development, o Desarrollo Guiado por Comportamiento16 donde el comportamiento
se describe en los archivos de texto que pueden ser ejecutados
como pruebas automatizadas. El formato de las pruebas
tienen la intención de ser legible y comprensible por cualquier
persona involucrada con el proyecto de software. Pueden ser
escritas en cualquier idioma humano, por ejemplo japonés17, y
utilizan una estructura consistente, sencilla, con frases como
Dado que, Cuando, Entonces para estructurarse.
Hay varios entornos de BDD disponibles para probar las
aplicaciones móviles. Entre otros:
16 en.wikipedia.org/wiki/Behavior-driven_development
17 github.com/cucumber/cucumber/tree/master/examples/i18n/ja
Testeo
260
——
——
——
——
Calabash Para Android e iOS: github.com/calabash
Frank para iOS: www.testingwithfrank.com
RoboGerk para Android: github.com/leandog/RoboGherk
Zucchini para iOS: www.zucchiniframework.org
y varias implementaciones que se integran con SeleniumWebDriver para testear aplicaciones web, incluyendo web apps
en iOS y Android.
A menudo, los 'step-definitions' (pequeños scripts que
interactúan con la aplicación en pruebas) tienen que ser
escritos por alguien con conocimientos de programación.
Automatización de Pruebas GUI
La automatización de pruebas de GUI permite a las pruebas
automatizadas interactuar con la aplicación a través de la
interfaz gráfica de usuario (GUI). Es uno de los elixires de la
industria de pruebas, muchos han intentado, pero pocos han
tenido éxito en la creación de una automatización de pruebas
GUI útil y viable para las aplicaciones móviles. Una de las
principales razones por las que la automatización de pruebas
GUI es tan difícil es que la interfaz de usuario está sujeta a
cambios significativos que puedan romper la forma en que las
pruebas automatizadas interactuan con la aplicación.
Para que las pruebas sean eficaces a largo plazo, y como
la aplicación tiende a cambiar, los desarrolladores necesitan
diseñar, implementar y soportar las etiquetas y otros elementos
utilizados por las pruebas automatizadas de interfaz. Tanto
Apple, con UI Automation18, y más recientemente Android19
18 developer.apple.com/library/ios/documentation/DeveloperTools/
Conceptual/InstrumentsUserGuide/UsingtheAutomationInstrument/
UsingtheAutomationInstrument.html
19 developer.android.com/tools/testing/testing_ui.html
Testeo
261
utilizan la etiqueta Accessibility asignada a elementos de
la GUI como la interfaz de facto para la automatización de
pruebas.
Algunas empresas han convertido sus herramientas a código
abierto, por ejemplo, GorillaLogic's MonkeyTalk20 y Xamarin's
Calabash21. Estas herramientas tienen como objetivo proporcionar soporte multiplataforma, particularmente para Android
e iOS. Otros entornos de código abierto de éxito incluyen
Robotium22 y Frank23.
Pruebas Unitarias
Una prueba unitaria consiste en escribir pruebas automatizadas
que ponen a prueba pequeñas secciones de código, por lo general sólo unas pocas líneas. Generalmente deben ser escritas
por el mismo desarrollador que escribe el código fuente de la
aplicación, ya que reflejan cómo se espera que esas secciones
se comporten.
Las pruebas unitarias tienen una larga tradición en el
desarrollo de software, en el que JUnit24 ha generado entornos
similares para prácticamente todos los lenguajes de programación utilizados para desarrollar aplicaciones móviles.
Las pruebas unitarias son sólo un aspecto de las pruebas
automatizadas, y no son suficientes para demostrar que la
aplicación funciona, pero ayudan a los desarrolladores a entender lo que se espera de las secciones individuales. Pruebas
adicionales, incluyendo otras formas de pruebas automatizadas,
pueden ayudar a aumentar tu confianza en la aplicación.
20 gorillalogic.com/testing-tools/monkeytalk
21 github.com/calabash
22 code.google.com/p/robotium
23 testingwithfrank.com
24 en.wikipedia.org/wiki/JUnit
Testeo
262
Testear las Cinco Fases del Ciclo de Vida
de una App
El software se desarrolla en fases, que se llaman fases del ciclo
de vida. Un tester de aplicación móvil puede ser parte del
equipo de desarrollo, pero también puede ser responsable de
facilitar las pruebas de la experiencia del usuario en producción. Dependiendo de en qué fase estés involucrado en el ciclo
de vida, hay diferentes tareas a realizar. Por ejemplo al unirte
a un equipo de desarrollo tu tarea puede ser el análisis de
errores en los archivos de registro en un dispositivo, mientras
que al unirte a una fase de prueba beta una tarea puede ser el
análisis de los resultados de las pruebas de usabilidad, como
la grabación de vídeo. El ciclo de vida de una aplicación móvil
encaja en 5 fases: implementación, verificación, lanzamiento,
retención y validación, y se aplican pruebas a cada fase.
Algunas de las decisiones que se toman en las etapas previas
pueden afectar tus pruebas en etapas posteriores. Por ejemplo,
si decides que quieres pruebas automatizadas del sistema en la
primera fase serán más fácil de aplicar en las fases posteriores.
Fase 1: Implementación
Esto incluye diseño, código, pruebas unitarias, y creación de
tareas. Tradicionalmente, los probadores no están involucrados
en estas tareas; sin embargo, un buen testeo aquí puede
mejorar significativamente la calidad y el éxito de la aplicación
al ayudarnos a asegurarnos de que nuestra implementación se
hace correctamente.
En términos de diseño, deberíamos decidir sobre las
siguientes cuestiones:
—— ¿Utilizar TDD?
Testeo
263
—— ¿Escribir pruebas unitarias incluso si no estamos utilizando
TDD?
—— ¿Tendremos sistemas automatizados de pruebas? En caso
afirmativo, ¿cómo facilitaremos dichas pruebas? Por
ejemplo, añadiendo etiquetas adecuadas a objetos clave
en la interfaz de usuario.
—— ¿Cómo validaremos nuestras aplicaciones? ¿Por ejemplo, a
través del uso de analíticas móviles, informes de errores o
feedback de usuarios?
Cuestiona el diseño. Queremos asegurarnos de que cumple
con los fines previstos, y también evitar cometer errores
graves. El documento de Phillip Armour ‘Five Orders Of
Ignorance’25 es un gran recurso para ayudar a estructurar tu
enfoque.
Ten en cuenta también la forma de mejorar la testeabiliad
de su aplicación en esta etapa para que puedas hacer tu
aplicación más fácil de probar con eficacia y eficiencia.
Prácticas tales como pruebas unitarias y TDD se aplican en
la fase de implementación. Recuerda probar tu proceso de
construcción y los build scripts para asegurarte de que sean
eficaces, fiables y eficientes; de lo contrario, es probable que
sufras los efectos de un desarrollo deficiente a lo largo de la
vida de la aplicación.
Fase 2: Verificación
Esto incluye la revisión de las pruebas unitarias, instalación
interna y pruebas de sistema.
Revisa las pruebas unitarias y evalúa su potencia: ¿son
realmente útiles y dignas de confianza? Nota: también deben
ser revisadas ​​como parte de la fase de implementación, sin em25 www-plan.cs.colorado.edu/diwan/3308-07/p17-armour.pdf
Testeo
264
bargo éste es un buen momento para abordar las deficiencias
materiales antes de que el desarrollo se considere "completo"
para la base de código actual.
Para las aplicaciones que requieren instalación, necesitamos
maneras de llevarlas a dispositivos específicos para las pruebas
de pre-lanzamiento. Para algunas plataformas (incluyendo
Android, iOS y Windows Phone), los teléfonos deben estar configurados para que las aplicaciones se pueden instalar. También
tenemos que decidir en qué teléfonos probar la aplicación. Por
ejemplo, es aconsejable probar la aplicación en cada versión
apropiada de la plataforma móvil. Para iOS esta sólo puede
incluir las últimas versiones. En Android es bastante diferente
ya que los dispositivos de gama baja se siguen vendiendo con
versiones antiguas de Android y podrían no actualizarse nunca.
También queremos probar diferentes factores de forma
de los dispositivos, por ejemplo cuando la relación de las
dimensiones de pantalla difiere. Las nuevas dimensiones de
pantalla de los iPhone 5 y 6 han expuesto un montón de bugs
de interfaz de usuario. Los desarrolladores de Android son muy
conscientes de los muchos problemas que diferentes tamaños
de pantalla pueden desencadenar.
Las pruebas del sistema se realizan a menudo de forma
interactiva, por los probadores. Considera la posibilidad de
evaluar las herramientas de automatización de pruebas y los
entornos para algunas de las pruebas del sistema. Entraremos
en más detalle más adelante en esta sección.
También queremos considerar cómo sabremos que la
aplicación responde bien en:
—— Usabilidad, experiencia de usuario y requisitos estéticos
—— Rendimiento, particularmente tal y como es percibido por
los usuarios finales
—— Pruebas de internacionalización y localización
Testeo
265
Fase 3: Lanzamiento
Esto incluye pre-publicación y publicación.
Aquellos de vosotros que aún no habéis trabajado con las
principales tiendas de aplicaciones, estad preparados para una
desafiante experiencia donde la mayoría de los aspectos están
fuera de tu control, incluyendo los plazos para la aprobación
de tu aplicación. Además, en algunas tiendas de aplicaciones,
no es posible revertir a una versión anterior, así que si tu
versión actual tiene defectos importantes, tienes que crear una
nueva versión que corrija los defectos y, luego, esperar hasta
que haya sido aprobada por la tienda de aplicaciones antes de
que tus usuarios puedan recibir una versión operativa de la
aplicación.
Dadas estas limitaciones es útil ampliar tus pruebas para
incluir verificaciones de pre-publicación, por ejemplo respecto
a si es adecuada para el conjunto de los dispositivos de destino. Los proveedores de las principales plataformas publican
actualmente pautas para ayudarte a verificar que tu aplicación
responde a sus criterios de presentación. Estas directrices
pueden ayudarte incluso si tu objetivo son otras tiendas de
aplicaciones.
Testeo
266
Apple
developer.apple.com/appstore/resources/
approval/guidelines.html
Android
developer.android.com/distribute/
googleplay/publish/preparing.html#coreapp-quality
Windows Phone
msdn.microsoft.com/en-us/library/
windowsphone/develop/hh394032
BlackBerry
developer.blackberry.com/devzone/
appworld/tips_for_app_approval.html
Fase 4: Vinculación
Esto incluye búsqueda, confianza, descarga e instalación.
Una vez que tu aplicación es de disponibilidad pública, los
usuarios necesitan encontrarla, confiar en ella, descargarla e
instalarla. Podemos probar cada aspecto de esta fase. Intenta
buscar tu aplicación en la tienda de aplicaciones pertinente y
en los motores de búsqueda principales. ¿De cuántas maneras
diferentes puede ser encontrada por los usuarios de destino?
¿Qué pasa con los usuarios fuera de los grupos objetivo,
quieres que la encuentren? ¿Cómo van a confiar los usuarios en
tu aplicación lo suficiente como para descargarla y probarla?
¿Tu aplicación realmente necesita tantos permisos? ¿Cómo
de grande es la descarga, es práctico descargarla mediante la
Testeo
267
red móvil? ¿Cabrá en el teléfono del usuario, especialmente
si hay poco espacio de almacenamiento disponible en su
dispositivo? ¿Se instala correctamente la aplicación? Puede
que haya problemas de firmado que causen que sea rechazada
por algunos dispositivos.
Fase 5: Validación
Esto incluye el pago, el uso y la retroalimentación. Como
seguramente ya sabes, es poco probable que una aplicación
móvil con poco feedback tenga éxito. Además, muchas de las
aplicaciones tienen una vida muy corta en el teléfono de un
usuario. Si la aplicación no es de su agrado ni le involucra en
pocos minutos, es probable que sea descartada o ignorada.
Y, si estás buscando obtener pagos, vale la pena probar las
diferentes formas de pago, sobre todo para aquellos integrados
en la aplicación.
Considera encontrar maneras de probar los siguientes puntos
prácticos:
—— Detección y reporting de problemas. Pueden incluir tu
propio código, utilidades de terceros y servicios online.
—— Analíticas móviles. ¿Tienen sentido los datos recabados?
¿Qué anomalías hay en los datos reportados? ¿Cuál es la
latencia en la recepción de resultados?
Testeo
268
Herramientas de Testeo
—— Application Ressource Optimizer (ARO) de AT&T:
developer.att.com/application-resource-optimizer, proyecto
de código abierto en github.com/attdevsupport/ARO
—— Fiddler por Telerik: telerik.com/fiddler permite encontrar
y modificar el tráfico de red entre tu móvil y su conexión
de red.
—— Genymotion: genymotion.com, un emulador rápido y
muy potente para controlar, por ejemplo, valores de los
sensores.
—— iFunbox: i-funbox.com/ ayuda a instalar aplicaciones y
gestionar archivos en dispositivos iOS.
—— iTools: itools.en.uptodown.com/, un configurador de
aplicaciones para iOS que incluye el monitorizado de la
cache y logs en tiempo real.
Testeo
269
Aprende Más
Testear aplicaciones móviles se está convirtiendo en una
importante corriente con múltiples fuentes de información.
Algunos recursos útiles son:
—— testdroid.com/blog, un fértil blog que trata varios temas,
entre ellos el testeo de apps. También publican una línea
editorial sobre el testeo de juegos móviles26.
—— appqualitybook.com/, el sitio sobre el interesante libro de
Jaron Arbon, basado en sus experiencias en el testeo y
análisis de un gran número de aplicaciones móviles.
—— kohl.ca, el sitio de Jonathan Kohl incluye enlaces a su
aclamado libro sobre el testeo de aplicaciones móviles, y
otros artículos.
—— slideshare.net/karennjohnson/kn-johnson-2012-heuristicsmnemonics, presentación de Karen Johnson sobre tests
heurísticos y el uso de SFDPOT en el testeo móvil.
—— appqualityalliance.org/resources, el sitio oficial de la App
Quality Alliance AQuA incluye unas útiles directrices para
el testeo de aplicaciones.
26 testdroid.com/testdroid/7790/best-practices-in-mobile-game-testing
Testeo
270
Monetización
Por fin, has terminado tu aplicación, o sitio web para móviles,
y la has pulido como resultado del feedback de beta testing.
Suponiendo que no estás desarrollando como hobby, para
promocionar una marca, etc., es el momento de hacer algo de
dinero. Pero, ¿cómo se hace eso y cuáles son tus opciones?
En general, tienes las siguientes vías de monetización:
—— Pago por descarga: Vende tu aplicación por descarga
—— Pago en aplicación: Añade opciones de pago dentro de tu
aplicación
—— Publicidad móvil: Gana dinero por publicidad
—— Patrocinios: Recibe un pago cada vez que uno de tus
usuarios se da de alta en un servicio de tu patrocinador
—— Participación en ingresos: Obtén ingresos por servicios
del operador que se originen en tu aplicación
—— Ventas indirectas: Afiliados, venta de datos y bienes
físicos, entre otros
—— Mercado de componentes: Vende componentes o una
versión marca blanca de tu aplicación a otros desarrolladores
Cuando planifiques tu desarrollo, la determinación de la
monetización en tu modelo de negocio debería ser uno de los
elementos clave de su diseño inicial, ya que podría afectar
al comportamiento técnico y funcional de la aplicación. El
artículo "Five strategies to monetize your mobile app"1 es
una excelente referencia sobre cómo plantear los aspectos
1 medium.com/@signored/dont-fall-below-the-app-poverty-line-
9b800a214e4a
Monetización
272
financieros para evitar incomodar a los usuarios o perder los
ingresos que esperabas conseguir.
Pago Por Descarga
Usando el pago por descarga (PPD, del inglés Pay Per
Download), tu aplicación se vende una vez para cada usuario
al descargarla e instalarla en su teléfono. El pago puede ser
gestionado por una tienda de aplicaciones, operador móvil o
mediante otro mecanismo configurado por ti mismo. El que una
vez fue el método de monetización más popular y rentable hoy
es utilizado por una minoría de los desarrolladores. Gartner
predice que para el año 2017 casi el 95% de las descargas será
de aplicaciones libres, frente a aproximadamente el 90% en la
actualidad2 .
Cuando tu aplicación se distribuye en una tienda de
aplicaciones, la tienda se encargará del mecanismo de pago
por ti. A cambio, la tienda cobra una comisión por todas las
ventas (habitualmente el 30%). En la mayoría de los casos, las
tiendas ofrecen una matriz de precios fijos para elegir por país
y moneda ($0,99, 0,7 EUR, $3, etc.) a la hora de fijar el precio
de tu aplicación.
El pago por la descarga de aplicaciones se gestiona
habitualmente de una de las siguientes maneras: o bien se
factura a través del operador de telefonía, o se efectua el cobro
mediante tarjeta de crédito.
La facturación vía operador permite a tus clientes pagar
por tu aplicación con sólo confirmar que la venta se cargará
a su factura de teléfono móvil o mediante el envío de un SMS
Premium. En algunos casos, la facturación vía operador se ges2 aplicaciones
www.businessweek.com/articles/2013-09-19/the-profitablefuture-of-free-mobile-aplicaciones
273
tiona mediante una tienda de aplicaciones (por ejemplo Google
Play, que soporta la facturación vía operador para un buen
número de operadores por todo el mundo). En otros casos,
puede ser implementada directamente por el desarrollador.
Los operadores reciben una parte de los beneficios del
precio de venta (normalmente del 30% al 60%, pero algunos
pueden llegar a quedarse con el 95%) y, si usas uno de ellos,
el agregador también recibirá una parte. Es común que gestión
y seguridad (cómo evitar que copien tu aplicación) sean temas
problemáticos en el modelo PPD, pero en ciertos escenarios
pueden ser la única manera que tendrás de monetizar tu
aplicación. Facturar a operadores puede resultar una tarea muy
difícil, sobre todo si quieres vender en varios países, ya que
es necesario firmar contratos con un operador en cada país.
Por razones desconocidas, algunos operadores, como Vodafone,
están eliminado la opción de facturar al operador vía Android
Play en algunos mercados, como Reino Unido y Alemania.
Posiblemente porque hay mejores alternativas, como por
ejemplo pagos bancarios vía móvil.
Vale la pena señalar que la mayoría de los propietarios
de tiendas de aplicaciones están llevando a cabo acuerdos
de facturación vía operador, teniendo Nokia Store la mejor
cobertura de capacidad de facturación vía operador al ofrecerla
para 60 países tanto para su antigua Nokia Store en los
actuales teléfonos Nokia de gama baja, en el que el 99% de
los beneficios se canalizan facturando al operador3, como para
Microsoft Windows Phone Marketplace. Google y BlackBerry
ofrecen opciones similares. La razón principal de ésto es que
normalmente, cuando los usuarios tienen la opción de comprar
con tarjeta de crédito o con métodos de facturación vía operador, muestran una preferencia significativa hacia la facturación
3 developer.nokia.com/nokia-x/opportunity/monetization
Monetización
274
vía operador. Nokia, adicionalmente, aísla a los desarrolladores
de las variaciones de la cuota de operador, ofreciendo a los
desarrolladores una tasa fija del 70% de los ingresos por
facturación (Nokia dice que sus estudios indican un incremento
por diez de los beneficios respecto a los pagos con tarjeta de
crédito). Nokia, al menos, aísla a los desarrolladores de las
variaciones de comisiones según operador, ofreciéndoles un
porcentaje fijo del 70% de la facturación.
La facturación mediante tarjeta de crédito es utilizada por
Apple, Google (en algunos casos), Amazon y otras tiendas.
Apple lleva años exigiendo a los usuarios de iPhone que den los
datos de una tarjeta de crédito cuando se registran, y Google
también ha comenzado a utilizar éste método para usuarios de
Android.Obtener estos datos antes de que se realice compra
alguna es, según los analistas, un factor diferenciador clave
para obtener mayores beneficios mensuales por aplicación.
La última opción de pago es crear tu propio sitio web y
poner en práctica un mecanismo de pago a través de él, como
PayPal móvil, la marcación a números fijos premium4, y otros.
El uso de PPD se puede implementar sin un diseño o
requisitos de codificación especiales para tu aplicación. Para
comenzar, recomendamos utilizar las opciones de facturación
de las tienda de aplicaciones, ya que implican un coste mínimo
de instalación y gastos administrativos de menor importancia.
Para cada forma de pago es importante determinar la
elasticidad en el precio de demanda o PED5. Incrementar el
precio no significa necesariamente incrementar los beneficios
(y viceversa), ya que tu precio debe encajar con las expectativas de tu base de usuarios.
4 daopay.com
5 en.wikipedia.org/wiki/Price_elasticity_of_demand
Monetización
275
Pagos en la Aplicación
El pago dentro de la aplicación (o IAP, en inglés In-App
Payment) es una forma de cobrar por acciones o contenidos
específicos dentro de tu aplicación. Un uso muy básico podría
permitir la compra unitaria de tu aplicación (sin suscripciones
ni cargos recurrentes) después de un período de prueba,
que puede generar más ventas que PPD si crees que las
características de tu aplicación justifican un precio más alto.
Alternativamente, puedes ofrecer las características básicas
de tu aplicación de forma gratuita, pero cobrar por contenido
premium (vídeos, créditos virtuales, información premium,
características adicionales, eliminación de los anuncios y
similares). La mayoría de las tiendas de aplicaciones ofrecen
una opción de compra en aplicación, o puedes implementar tu
propio mecanismo de pago. Si quieres algo más que una "licencia completa" por pago, tienes que pensar cuidadosamente
acerca de cómo, cuándo y qué están dispuestos a pagar tus
usuarios, y diseñar tu aplicación en consecuencia. Los pagos
en aplicación recurrentes, también llamados subscripciones,
son posibles en la mayoría de las plataformas. Este tipo de
pagos son adecuados cuando tu aplicación ofrece contenido
que se actualiza de manera regular, por ejemplo periódicos
online o revistas digitales.
Las compras dentro las aplicaciones se han convertido en
el modelo más próspero de monetización en muchos mercados,
particularmente en los juegos "freemium", que se distribuyen
gratuitamente para enganchar a los usuarios antes de convertirlos en clientes. La IAP es especialmente popular en los videojuegos (por ejemplo para comprar energía extra, más niveles,
créditos virtuales, etc.) y puede ayudar a conseguir una gran
base de usuarios si ofreces la aplicación gratuitamente.
Distimo informó en el 2014 que las compras in-app suponen
Monetización
276
el 79% de los beneficios de iOS6. Si tu objetivo son países
específicos, sé consciente de las posibles diferencias de
comportamiento, por ejemplo en China la compra inicial es el
99% del beneficio generado, mientras que la IAP es muy baja;
en cambio, en EE.UU. ocurre justo lo inverso.
También debería ser obvio que necesitarás diseñar y desarrollar tu aplicación de manera que incorpore el método de pago
en aplicación. Si la aplicación se ejecuta en varias plataformas,
puede ser necesario implementar un mecanismo diferente para
cada una de ellas (y, potencialmente, para cada tienda de
aplicaciones).
Al igual que con PPD, te recomendamos que comiences
con el mecanismo de compra en aplicación que ofrece una
tienda de aplicaciones, especialmente porque algunos de estos
servicios pueden incrementar la facturación vía operador (tales
como Google Play), utilizar la información de la tarjeta de
crédito preexistente (como Apple o Amazon), o con el pago
desde la aplicación ofrecido directamente por el operador.
Desde el punto de vista de los usuarios, esta es la manera más
fácil y más conveniente de pago (uno o dos clics, sin necesidad
de introducir números de tarjetas de crédito, nombres de
usuario u otras credenciales), por lo que los desarrolladores
pueden esperar una gran aceptación por parte del usuario y
elevadas tasas de conversión.
Publicidad Móvil
Como es común en los sitios web, puedes decidir ganar dinero
mostrando anuncios. Hay una serie de entidades que ofrecen
herramientas para mostrar anuncios para móviles, siendo
ésta la forma más fácil de ganar dinero en aplicaciones de
6 “2014
How the Most Successful Apps Monetize Globally” disponible en www.
distimo.com/publications
Monetización
277
navegador móvil. Admob.com, Buzzcity.com e inmobi.com
(para videojuegos) son algunas de ellas. Sin embargo, debido
a la amplia gama de dispositivos, países y características, en
la actualidad hay más de 70 grandes redes de publicidad móvil.
Cada red ofrece enfoques ligeramente diferentes y encontrar
el que mejor monetice la audiencia de tu aplicación puede
no ser tarea simple. No hay una regla de oro, es posible que
tengas que experimentar con algunas para encontrar la que
mejor te funcione. Sin embargo, para un arranque rápido se
puede considerar el uso de un agregador de publicidad móvil
como por ejemplo Madgic7, smaato8 o inneractive9, ya que
tienden a dar mejores resultados al combinar y optimizar los
anuncios de más de 50 redes móviles de publicidad. La mayoría
de los agregadores pueden operar como redes de publicidad
ofreciendo Real Time Bidding (RTB), como si fuera una
subasta en vivo donde el precio de cada anuncio se determina
dinámicamente. La mayoría de las redes de publicidad tienen
una comisión del 30% al 50% en los ingresos por publicidad y
los agregadores de un 15% o 20% adicional, pero incluso con
esas cifras lo agregadores son los más beneficiosos si deseas
integrar diversas redes de publicidad.
Si tu aplicación está dando buenos resultados y tiene un
gran volumen en un determinado país, podrías considerar
vender publicidad directamente a agencias de publicidad o
marcas (publicidad Premium) o contratar a una agencia de
medios para hacer eso por ti.
También aquí, muchos de los fabricantes de dispositivos
ofrecen servicios de publicidad móvil como parte de las
funciones de su tienda de aplicaciones, e igualmente vale la
7 madgic.com
8 smaato.net
9 inner-active.com
pena explorar estos mecanismos. En algunos casos puede que
tengas que utilizar los servicios de publicidad del proveedor
para poder incluir tu aplicación en su tienda.
La publicidad en aplicación requiere que diseñes y programes tu aplicación con cuidado. No sólo debes considerar
con cuidado la ubicación de los anuncios en tu aplicación,
también las variaciones y el mecanismo de exclusión (optout). Si los anuncios se vuelven demasiado intrusivos, puede
que los usuarios abandonen tu aplicación, al tiempo que la
publicidad demasiado sutil significará pocos o nulos ingresos.
Relativamente nueva es la publicidad intersticial, comparada
con la publicidad tradicional de banners: este término se usa
generalmente para describir un anuncio que ocupa toda la
pantalla y que suele ir acompañado de un botón "skip screen".
Otros nuevos formatos incluyen los anuncios gamificados y los
premiados, especialmente en los videojuegos. Puedes necesitar
experimentar un poco para encontrar la manera y posición
correcta en la que colocar los anuncios.
Patrocinios
La startup alemana Apponsor10 ofrece una nueva manera de
ganar dinerp sin tener que mostrar publicidad o cobrar por
descargar la aplicación: El usuario obtiene tu aplicación de
manera gratuita y se le pide darse de alta en una newsletter
de tu patrocinador. El patrocinador te paga por cada nuevo
registro en esa newsletter. No debe ser confundida con las
empresas de tipo App Sponsors, que pagan el coste de desarrollo de la aplicación pidiendo a cambio una participación en
los beneficios. Para más información entra en Apps Funder11.
10 apponsor.com
11 appsfunder.com
Monetización
279
Ventas Indirectas
Otra opción es utilizar tu aplicación para dirigir las ventas
donde desees.
Habitualmente ofreces tu aplicación o website de manera
gratuita, y entonces empleas mecanismos tales como:
1. Programas de afiliación: Promover aplicaciones de pago
propias o de terceros en el interior de una gratuita. Ver
también MobPartner12 . Esto puede ser considerado una
variación de publicidad móvil.
2. Venta de datos: Seguimiento del comportamiento y
venta de los datos a partes interesadas. Ten en cuenta
que, por razones de privacidad, no debe revelar ninguna
información personal, y que debes asegurarte de que todos
los datos son proporcionados en informes anónimos y
consolidados.
3. Mundo real versus virtual: Usa tu aplicación como
herramienta de marketing para vender bienes en el mundo
real. Ejemplos típicos son aplicaciones para vehículos,
revistas y marcas tales como McDonald’s y Starbucks.
También utilizan este modelo de negocio aplicaciones de
cupones empresas como Groupon.
No hay nada que te impida combinar esta opción con
cualquiera de las otras de monetización si lo deseas, pero ten
la precaución de no dar la impresión de realizar promociones
extremadamente intrusivas.
12 mobpartner.com
Monetización
280
Mercado de Componentes
Un mercado de componentes o CMP (del inglés Component
Marketplace) proporciona otra oportunidad para los desarrolladores de monetizar sus productos mediante la venta a otros
desarrolladores de componentes de software o aplicaciones de
marca blanca. Un componente es una pieza de construcción
de software que ofrece una funcionalidad definida para ser
utilizado por el software de nivel superior.
La típica pregunta que surge en este punto es cómo los
CMPs conviven con el código abierto. Como usuario, el código
abierto es a menudo gratuito, por lo que el código fuente debe
ser proporcionado y los usuarios tienen el derecho de modificar
el código fuente y distribuir la obra derivada.
Algunos proveedores de componentes requieren una cuota
de licencia. Ellos pueden proporcionar el código fuente
completo que permite al desarrollador depurar código en el
nivel más bajo. Algunos CMP soportan todos los modelos:
componentes de pago así como componentes libres, ambos con
o sin el código fuente.
Si eres un desarrollador en busca de un componente, los
CMP ofrecen dos ventajas principales: En primer lugar, no
tienes que abrir su código fuente sólo porque uses componentes de software. Todo código abierto viene con una licencia.
Algunas licencias como la Apache están comercialmente
compatibles, mientras que otras, como AGPL y OSL, requieren
que abras el código fuente tuyo que se integrará con el
suyo. Es posible que no quieres esto. En segundo lugar, los
CMPs proporcionan una forma fácil de encontrar y descargar
componentes. Puedes pasar días mirando los repositorios de
código abierto para encontrar el componente adecuado.
Los mercados de componentes han existido durante
décadas. El mercado más importante es de componentes para
Monetización
281
.NET y Visual Basic en la comunidad y Windows. Mercados
como componentOne y proveedores como Infragistics son bien
conocidos. En cambio, la idea de los mercados de componentes
dentro del ámbito móvil es bastante nueva. La empresa de
Deutsche Telekom Deutsche Developer Garden13 y ChupaMobile14 son jugadores destacados en este campo.
Eligiendo tu Modelo de Monetización
Así que, con todas estas opciones, ¿cuál debería ser tu
estrategia? Depende de tus objetivos, veamos algunos:
—— ¿Estás seguro de que los usuarios desearán comprar tu
aplicación inmediatamente? Entonces véndela como PPD a
0.89€, pero ten en cuenta que, aunque puede que ingreses
varios cientos de euros por día, fácilmente pueden no ser
más que un par de cientos por semana si la valoración de
tu aplicación es poco apropiada o la competencia es feroz.
La Application Developer's Alliance recomienda el método
de monetización PPD para aplicaciones de producción
costosa, con barreras de entrada o elevado volumen15.
Esto incluye juegos y aplicaciones de entretenimiento, la
productividad, la navegación y noticias.
—— ¿Estás ofreciendo capacidades premium a precio premium?
Considera una versión limitada en tiempo o capacidades
y usa la compra en aplicación para permitir la compra de
una versión completa, ya sea permanentemente o por un
período de tiempo.
—— ¿Estás desarrollando un juego? Considera ofrecerlo de
13 www.developergarden.com/component-marketplace/
14 www.chupamobile.com
15 www.appdevelopersalliance.org/app-monetización
Monetización
282
manera gratuita con publicidad en la aplicación, o una
versión básica que desbloquee mediante compra en la
aplicación nuevas capacidades, niveles, vehículos o
cualquier equipamiento de juego (freemium).
—— ¿Es tu aplicación móvil una extensión de una tienda web
o física? Ofrece la aplicación gratis y gana ingresos de los
productos y servicios que comercializas en el mundo real.
—— ¿Tiene contenido que se actualiza frecuentemente, como
una revista digital? Ofrece pagos recurrentes y asegúrate
de que lo usuarios vuelven.
—— ¿Ofrece bienes físicos, como la aplicación de una tienda?
Ofrece la aplicación gratuitamente y obtén comisiones de
las compras de los clientes.
Estrategias para las Tiendas de
Aplicaciones
La otra cara de la generación de ingresos es el marketing y la
publicidad. La necesidad puede ser obvia si vendes tu aplicación a través de tu propio sitio web, pero resulta igualmente
importante cuando se usa la tienda de aplicaciones de un
vendedor. Esas tiendas son a la vez la maldición y la bendición
de los desarrolladores móviles. En el lado positivo, dan a los
desarrolladores largo alcance y exposición potencial de ventas
que de otra manera sería muy difícil de lograr. En el lado
negativo, las más populares contienen actualmente cientos de
miles de aplicaciones, disminuyendo el potencial para destacar
entre la multitud y tener éxito, llevando a muchos a comparar
la posibilidad de éxito en una tienda de aplicaciones a la
probabilidad de ganar la lotería.
Dicho esto, aquí están algunos consejos y trucos para
ayudarte a incrementar tus probabilidades.
Monetización
283
Estrategias para Conseguir un Ranking Alto
Lo más importante a comprender acerca de las tiendas de
aplicaciones es que son canales de distribución y máquinas de
marketing. Esto significa que aunque son una gran manera de
conseguir introducir tu aplicación en los dispositivos de los
usuarios, no van a promocionar tu aplicación por ti (a menos
que compres posicionamiento premium, ya sea a través de
banners o posiciones de lista). No puedes confiar en las tiendas
de aplicaciones para incrementar tus descargas, a menos que
aparezcas en una lista top-ten. Pero no hay que jugar a la
lotería con tus aplicaciones, ten una estrategia y un plan para
comercializar tu aplicación.
Hemos preguntado a muchos desarrolladores acerca de las
tácticas que les han proporcionado la mayor atención y un
mejor ranking en las tiendas de aplicaciones.
Nos dieron muchas respuestas y salió a la luz un tema
común: no hay ninguna fórmula mágica, ¡tienes que atacar por
todos los frentes! Sin embargo, te ayudará tratar de mantener
en cuenta lo siguiente:
—— Necesitas una aplicación rompedora: debería ser entretenida, fácil de usar y estar libre de bugs. Asegúrate de
ponerla en las manos de usuarios antes de en las tiendas.
—— Pule tus iconos e imágenes para la tienda de aplicaciones,
trabaja en la descripción de tu aplicación, y elige cuidadosamente palabras clave y categoría. Si estás inseguro
o insatisfecho con los resultados, experimenta.
—— Obtener reseñas de bloggers y revistas es una de las
mejores maneras de recibir atención. Como contraprestación, algunos te pedirán dinero, otros exclusividad y
otros acceso anticipado a tus aplicaciones.
—— Consigue críticas positivas tan pronto como sea posible.
Monetización
284
Llama a tus amigos y pide a tus usuarios de manera regular
una reseña.
—— Si vas a llevar a cabo cualquier tipo de publicidad, hazlo
en avalancha durante un par de días. Esto es mucho más
efectivo que gastar la misma cantidad de dinero durante
dos semanas, ya que te ayudará a alcanzar un elevado pico
de audiencia, más que una subida lenta y gradual.
—— No confíes en el tráfico generado por personas que
exploran la tienda de aplicaciones, cerciórate de conducir
tráfico a tu aplicación a través de tu sitio web, SEO y
social media.
Múltiples Tiendas versus Tienda Única
Con más de 120 tiendas de aplicaciones disponible para los
desarrolladores, evidentemente hay muchas opciones para
distribuir una aplicación. Pero los 20 minutos necesarios en
promedio para presentar una aplicación en una tienda significa
que podrías pasar mucho tiempo publicando aplicaciones en
tiendas lóbregas que consiguen pocas descargas. Esta es la
razón por la que la mayoría de los desarrolladores se adhieren
a sólo una o dos tiendas, perdiendo una oportunidad potencialmente enorme, ¡pero consiguiendo mucho más tiempo para
cosas importantes, como la programación! Así que, ¿debes ir a
múltiples tiendas o no?
Monetización
285
Múltiples tiendas
Tienda única
Las tiendas de aplicaciones
de las principales plataformas
pueden tener serias limitaciones,
tales como mecanismos de pago,
penetración en determinados
países y directrices de contenido.
Más del 90% de los usuarios
sólo utilizan una única tienda
de aplicaciones, que suele ser la
que viene por defecto incluida
con el teléfono.
Las tiendas más pequeñas te
dan más opciones de visibilidad
(aplicación destacada).
Tu propio sitio web te puede
aportar más tráfico que las
tiendas (especialmente si tienes
una marca conocida).
Las tiendas más pequeñas tienen
un entorno social más amistoso
que las grandes.
Muchas tiendas pequeñas arañan
datos de las grandes, así que
puede que tu aplicación también
esté en ellas.
Las tiendas de los operadores
tienen directrices para contenidos notoriamente estrictas
y puede ser difícil entrar,
particularmente para algunos
tipos de aplicaciones.
Para contenidos sin nicho, la
tienda del operador o plataforma pueden ofrecer suficiente
exposición para no justificar el
esfuerzo extra de una estrategia
multi-tienda.
Monetización
286
Múltiples tiendas
Tienda única
Las tiendas más pequeñas
ofrecen un amplio rango de
opciones de pago y modelos de
negocio, o están disponibles en
muchos países.
Algunas tiendas de operadores tienen procesos de
facturación más fáciles, tales
como facturación directa a la
cuenta de teléfono del usuario,
conduciendo a un incremento en
la ratio de conversión.
Algunos desarrolladores reportan
que el 50% de sus beneficios
en Android vienen de fuera de
Android Market.
Los desarrolladores para iOS sólo
necesitan una tienda.
Las tiendas de aplicaciones pueden darte cobertura global,
pero con el paso del tiempo te será interesante adaptar tu estrategia respecto a las tiendas de aplicaciones para que encaje
con tu base de usuarios objetivo, y utilizar sólo las tiendas de
aplicaciones que se adecúan más a ese público. Esto podría
implicar usar tiendas particulares de operadores, aquellas
populares en un determinado país, o sencillamente mantenerte
fiel a las plataformas globales de venta de aplicaciones. Existen
algunas tiendas de terceros con un gran volumen de audiencia,
por ejemplo la tienda de Amazon para Android, que ofrece a
los desarrolladores un buen número de maneras de monetizar
sus aplicaciones, por ejemplo PPD y pagos en aplicación para
muchos países. Además, en algunos países existen tiendas de
aplicaciones locales muy populares, por ejemplo la alemana
AndroidPit16 o algunas dedicadas a Android en China.
16 androidpit.de
¿Qué Puedes Ganar?
Una de las preguntas más comunes de un desarrollador es
acerca de cuánto dinero se puede ganar con una aplicación
móvil. Está claro que algunas aplicaciones han hecho millonarios a sus desarrolladores, mientras que otros no renunciarán
a su puesto de trabajo en el corto plazo. De acuerdo con una
investigación del 2013 por Forbes.com17, la mayoría de los
desarrolladores de aplicaciones no están generando suficientes
ingresos para llegar a ser rentables y los desarrolladores
dedicados a una única plataforma confirman que los ingresos
generados por su aplicación de más éxito no resultan suficientes para sustentar un negocio independiente. Según el estudio
Business and Productivity apps de VisionMobile, realizado
a más de 6.000 desarrolladores móviles, el 50% de ellos se
encuentran por debajo del “límite de pobreza por aplicación”
al obtener menos de 500 dólares americanos al mes por cada
aplicación (el 67% en el 2013)18. inMobi afirma que en el
tercer trimestre del 2014, los juegos móviles eran la categoría
más rentable de software móvil en términos de ingresos por
publicidad. Según su informe19 , el mejor tipo de anuncio son
las aplicaciones rich media. Y Gartner no predice un futuro
prometedor: consideran que hasta el 2018 menos del 0,01%
de las aplicaciones móviles de consumo serán consideradas un
éxito financiero por sus desarrolladores20.
En última instancia, lo que puedes ganar depende de
17 www.forbes.com/sites/tristanlouis/2013/08/10/how-much-do-average-appsmake
18 www.visionmobile.com/products/research
19 www.inmobi.com/insights/download/whitepapers/the-state-of-mobile-appmonetization-q3-2014
20 www.gartner.com/newsroom/id/2648515
Testeo
288
satisfacer una necesidad y de un marketing eficaz. La experiencia sugiere que las aplicaciones que ahorran dinero o
tiempo al usuario son más atractivas (descuentos, cupones de
hotel, música gratuita y similares), seguidas por los juegos
(basta con ver el éxito de Angry Birds) y las herramientas de
negocio (los visores de documentos de oficina, herramientas
de sincronización, herramientas de copia de seguridad y otras),
pero a menudo el éxito (económico) de una sola aplicación no
se puede predecir. El éxito, por lo general, viene con un bagaje
en experimentación y mucha perseverancia.
Testeo
289
Epílogo
Gracias por leer esta 15ª edición de nuestra Guía del Desarrollador Móvil. Esperamos que hayas disfrutado de su lectura y
que te hayamos ayudado a clarificar tus opciones. Tal vez ahora
estás listo para participar en el desarrollo de una aplicación
móvil o hayas descubierto nuevas opciones en el negocio
de las aplicaciones. Esperamos que sí. Por favor, involúcrate
también con la comunidad y comparte tus experiencias e ideas
con nosotros y el resto de compañeros.
Si quieres contribuir a esta guía, patrocinar próximas
ediciones, o te interesa obtener ediciones anteriores, por favor
escríbenos a [email protected]. Si utilizas Twitter, te
invitamos a seguirnos en twitter.com/enoughsoftware y difundir
este proyecto utilizando el hashtag #mdgg.
Por supuesto, puedes descargarte esta edición en formato
ebook en amazon.com, y en formato PDF desde nuestro website: www.enough.de/mdgg. En el momento de escribir estas
palabras, también estamos en proceso de publicar el contenido
de este libro como website en www.mobiledevelopersguide.
com, donde esperamos que encuentres nuevas maneras de
involucrarte y hacernos llegar tu feedback.
¡Publicaremos la próxima edición a comienzos de 2016!
Epílogo
291
Acerca de los Autores
Anna Alfut
Anna comenzó su vida profesional como diseñadora creativa.
Después de descubrir su pasión por el diseño de interfaces, se
convirtió en la co-autora de una aplicación para iOS y Android
y consultora en múltiples proyectos, tanto en el lado agencia
como en el de cliente. Actualmente trabaja como diseñadora
UX para dispositivos móviles. Aparte de dibujar y pensar a
través de interfaces, también hace ilustraciones y disfruta de
vivir en Londres.
www.alfutka.net
Davoc Bradley / MiraLife
Davoc ha estado trabajando como ingeniero de software desde
1999, especializándose en arquitectura y diseño de webs
y sistemas móviles de alta usabilidad. Actualmente es CTO
en MiraLife, proveedores de software web y móvil que tiene
por objetivo mejorar las vidas de personas con demencia y
otras enfermedades terminales. Davoc es también un músico
entusiasta, fan ávido del cricket y le encanta viajar.
Twitter: @davocbradley
Acerca de los Autores
292
Marco Büttner / SciDev
Marco tiene 27 años y es desarrollador móvil desde el 2011.
Estudia informática en la Universidad Humboldt de Berlin,
trabaja para idealo, y es miembro fundador del proyecto de desarrollo móvil SciDev, centrado en el desarrollo de aplicaciones
web para bada, Tizen y otras tecnologías móviles emergentes.
Es bien conocido en las comunidades bada y Tizen y siempre
está encantado de poder compartir sus conocimientos.
Twitter: @scionbln
www.scidevapps.de
Sally Cain / RNIB
Sally ha trabajado en RNIB en el ámbito de la accesibilidad
digital desde hace más de 15 años. Cree apasionadamente en
la igualdad de acceso a la tecnología digital para las personas
con discapacidad. Sally es representante de su organización
en grupos de estándares del W3C, y también forma parte de
una serie de grupos en el British Standards Institute (BSI)
relacionados con la estandarización de las TIC, lo que incluye
el grupo responsable del BS8878 o Código de Prácticas para
la Accesibilidad Web. Actualmente, Sally gestiona la equipo
Web & Online en RNIB, que ofrecen asesoría en accesibilidad
de páginas web y aplicaciones. Ha dirigido la redacción del
estándar interno del RNIB para la accesibilidad.
Twitter: @sallycain
www.rnib.org.uk
Acerca de los Autores
293
Eva Casado de Amezua / Universitat Oberta de Catalunya
Eva es la traductora al castellano de esta edición de la guía.
Además de ser Head of Support en Typeform, es colaboradora
docente en la UOC, patrocinadores de esta traducción. En el
pasado, ha sido desarrolladora RIA, copywriter, y creativo
especialista en marketing online. Le apasiona cantar jazz, la
sociología de los nuevos medios, la fotografía y leer libros de
divulgación científica.
Twitter: @ellaing
Dean Churchill / AT&T
Dean trabaja en el diseño de seguridad, desarrollo y prueba de
aplicaciones de AT&T. Desde hace años está centrado en impulsar los requisitos de seguridad en las aplicaciones móviles,
tanto para aquellas de consumo como para internas de AT&T.
También ha apoyado las líneas emergentes de producto de
AT&T en Salud Móvil y Vida Digital. Vive en el área de Seattle y
disfruta haciendo esquí alpino y pesca con mosca.
John Gambrell
John ha estado en el mundo del desarrollo de software desde
hace más de 20 años en posiciones corporativas y consultoría,
y ha trabajado con los cambios de paradigma de cliente/
servidor, web y, actualmente, móvil. Lleva desarrollando
aplicaciones para iOS como freelance desde el año 2009 y
también desarrolla proyectos personales. Vive en Dallas (Texas,
EE.UU.) con su esposa, sus hijos, y tres perros.
Twitter: @jpgdallas
Acerca de los Autores
294
Julian Harty / Commercetest
Julian fue contratado por Google en 2006 como su primer
ingeniero de pruebas en Europa responsable de probar las
aplicaciones móviles de Google. Ayudó a otros, tanto dentro
como fuera de Google, a aprender a hacer lo mismo, y terminó
escribiendo el primer libro sobre ese tema. Posteriormente
trabajó para eBay, donde su misión era reformar las pruebas
a nivel mundial. Actualmente trabaja de forma independiente,
escribe aplicaciones móviles y herramientas de automatización
de pruebas, y ayuda a otros a mejorar sus aplicaciones móviles.
También está escribiendo un nuevo libro sobre testeo y
automatización de pruebas para aplicaciones móviles.
Twitter: @julianharty
Oscar Clark / Unity Technologies
Oscar Clark es un autor, consultor y divulgador de Everyplay
(Unity Technologies). Ha sido pionero en el mundo de los
juegos sociales online, en móvil y en consolas desde 1998.
Oscar ha aportado 'vision' para una de las primeras comunidades de juegos en línea (Wireplay - British Telecom); fue
líder mundial en la división de videojuegos en Hutchison
Whampoa (3UK), incluyendo la que, posiblemente, fuera la
primera compra in-app de la historia; y fue el Home Architect
para PlayStation®Home. Actualmente es columnista regular en
PocketGamer.Biz y Develop-Online, conferenciante en innumerables conferencias sobre videojuegos, mentor en la aceleradora
GameFounders, y profesor invitado en múltiples universidades.
Su primer libro, "Games As A Service - How Free To Play Design
Can Make Better Games" está disponible online.
Twitter: @athanateus
www.gamesasaservice.net
Acerca de los Autores
295
Ovidiu Iliescu / Enough Software
Tras desarrollar aplicaciones de sobremesa y web durante
varios años, Ovidiu decidió que el software móvil era más de su
agrado. Está involucrado en desarrollos Java ME y BlackBerry
para Enough Software desde 2009. Se emociona con cualquier
cosa relacionada con una programación eficaz, algoritmos y
gráficos por ordenador.
Twitter: @ovvyblabla
www.ovidiuiliescu.com
www.enough.de
Alex Jonsson / Evothings
A Alex le gusta todo lo móvil, tanto aplicaciones como
tecnologías web, y especialmente conectar inteligentemente
objetos físicos a otros móviles. Tiene un Doctorado en
Tecnología de Medios por el Real Instituto Tecnológico de
Estocolmo y comparte sus ideas y conocimientos tanto a nivel
académico como corporativo. El Dr. Jonsson tiene también
una necesidad ecléctica de investigar cómo las aplicaciones y
servicios pueden generar nuevos negocios, aportando nuevos
valores y maneras de conectar el mundo de manera inteligente.
Es el fundador y VP Community de Evothings simplemente
porque las cosas son mejores si están conectadas.
Twitter: @dr_alexj
www.evothings.com
296
Michael Koch / Enough Software
Michael viene desarrollando software desde 1988, uniéndose
al equipo de desarrollo de Enough Software en 2005. Ocupa el
cargo de Director de Tecnología. Ha dirigido numerosos proyectos de desarrollo de aplicaciones móviles (principalmente para
Java ME, Android, Windows Mobile y BlackBerry), y también es
un experto en tecnologías de servidor. Michael es un entusiasta
del código abierto involucrado en muchos proyectos libres,
como GNU classpath.
Twitter: @linux_pinguin
www.enough.de
Daniel Kranz / Joule
Daniel es un estratega multicanal con experiencia en consultoría, agencias y tecnología. Anteriormente director técnico de
proyectos en una de las principales agencias de publicidad y
consultor de soluciones móviles para una consultora especializada en web y multicanal, ahora trabaja como consultor de
planificación estratégica global aconsejando a marcas sobre
cómo integrar lo móvil como parte de su estrategia digital.
www.jouleww.com
Acerca de los Autores
297
Carlo Longino / WIP
Carlo ha dedicado más de una década de experiencia la
industria móvil, comenzando justo tras el cambio de milenio
en la sede de Nokia en Finlandia. Antes de incorporarse a WIP
(Wireless Industry Partnership) como director de los servicios
de marketing para desarrollo en el 2010, Carlo trabajó como
consultor freelance y escritor hasta que completó un MBA.
Previamente, fue analista senior para Floor64, una firma de
análisis con sede en Silicon Valley, donde se especializó en las
industrias móviles y de telecomunicaciones. También ayudó
a lanzar, e impulsó durante cinco años, TheFeature.com, un
site centrado en el liderazgo de ideas propiedad de Nokia.
Carlos también ha publicado en las redes de noticias de The
Wall Street Journal, Business 2.0 y Dow Jones, y ha dado
conferencias en numerosos eventos, incluyendo el Mobile World
Congress, SXSW, MobileBeat y CTIA, entre otros.
Twitter: @caaarlo
www.wip.org
Javier Melenchón / Universitat Oberta de Catalunya
Javier Melenchón se dedica a realizar actividades formativas
asociadas a la creación multimedia desde el ámbito universitario, inicialmente en la Universitat Ramon Llull y actualmente en
la Universitat Oberta de Catalunya. Forma parte de la primera
promoción de titulados universitarios en ingeniería multimedia
y se doctoró en ese mismo ámbito. Es experto en todo tipo de
tratamiento de señales de audio, imagen y vídeo y en cómo
formar a los profesionales para que sepan manejar este tipo de
información, de crucial importancia en el ámbito móvil actual.
Colabora con la revista digital Mosaic.
www.mosaic.uoc.edu
multimedia.uoc.edu
Acerca de los Autores
298
Tim Messerschmidt / PayPal
Tim ha estado desarrollando aplicaciones Android desde 2008.
Después de estudiar informática de negocios, se unió a Neofonie Mobile con sede en Berlín como desarrollador de software
móvil en 2011, siendo consultor para Samsung Alemania como
Developer Advocate para Android y bada desde 2010. En 2012
se trasladó a PayPal como un Developer Evangelist. Es un
apasionado de los pagos por móvil, las interfaces de usuario,
UX y el desarrollo en Android en general. Además, le encanta
hablar en conferencias, escribir artículos y participar en todo
tipo de social media.
Twitter: @seraandroid & @PayPalDev
timmesserschmidt.com
Sebastian Meyer / D-LABS
Sebastián tiene más de una década de experiencia con las
tecnologías web y móviles. Se unió a D-LABS como Consultor
de Innovación y Software después de cursar sus estudios
en ingeniería de software en el Hasso Plattner Institute en
Potsdam. Está especializado en metodologías centradas en el
usuario y la innovación en un contexto empresarial, y trabaja
como consultor para startups nacionales e internacionales,
PYME y grandes empresas.
www.d-labs.com
Acerca de los Autores
299
Patrick Mortara
Patrick estudió informática en Frankfurt y ha estado desarrollando software para ordenadores de sobremesa desde mediados
de los noventa, tanto por libre como contratado por diversas
empresas. Comenzó a desarrollar para móviles en el 2010,
cuando Samsung lanzó su primer smartphone bada, el Samsung
Wave I.
Twitter: @pmortara
www.mortara.org
Marcus Ross
Marcus es un desarrollador y formador independiente. Después
de 10 años de estar empleado en varias empresas, ahora está
haciendo proyectos SQL-BI y todo tipo de actividades móviles
multiplataforma. Es un autor regular en la revista alemana
"mobileWebDeveloper". En su tiempo libre se le ve a menudo
en conferencias, hablando sobre temas móviles y JavaScript.
También escribe artículos, libros y tweets sobre desarrollo
móvil.
Twitter: @zahlenhelfer
www.zahlenhelfer-consulting.de
Acerca de los Autores
300
André Schmidt / Enough Software
André lleva en el negocio del software desde 2001. Después de
iniciar su carrera somo programador en una de las empresas
líderes en la industria de defensa, se unió a Enough Software
en 2007 como desarrollador móvil. En este rol, ha creado una
amplia gama de aplicaciones móviles, sobre todo para Android.
También es un orador frecuente en conferencias de desarrolladores y bar camps.
www.enough.de
Michel Shuqair / AppValley
Tras comenzar con aplicaciones WAP en blanco y negro, iMode
y juegos SMS en la década de los 90, Michel pasó a liderar la
red social Wauwee. Sirviendo a casi un millón de miembros,
Michel fue apoyado por un equipo de especialistas en Symbian,
iPhone, BlackBerry y Android en su sede en Amsterdam.
Wauwee fue adquirida por MobiLuck, ahora parte de la empresa
con sede en Paris Madgic.com, una plataforma de moetización
móvil.
www.appvalley.nl
Marco Tabor / Enough Software
Marco es el responsable de relaciones públicas, ventas y mucho
más en Enough Software, donde lleva trabajando más de 7
años. El es el coordinador de esta guía, teniendo además la
responsabilidad de encontrar patrocinadores y fusionar las
aportaciones hechas por la comunidad móvil.
Twitter: @enoughmarco
www.mobiledevelopersguide.com
www.enough.de
Acerca de los Autores
301
Ian Thain / SAP
Ian es un Mobile Evangelist de SAP, aunque comenzó hace 12
años con Sybase Inc. Se dirige regularmente a público de todo
el mundo, proporcionando conocimiento móvil y experiencia
corporativa. También escribe artículos, blogs y tweets en
movilidad empresarial y es un apasionado de la experiencia en
desarrollo móvil en el mundo empresarial.
Twitter: @ithain
scn.sap.com/blogs/ithain/
www.sap.com
Marc van 't Veer / Polteq
Marc es un consultor especializado en pruebas de aplicaciones móviles en Polteq, con más de 8 años de experiencia
como coordinador y testeador de sistemas. Tiene una gran
experiencia en pruebas orientadas a un contexto tecnológico,
por ejemplo en telecomunicaciones, SOA, automatización de
pruebas, desarrollo de controladores y testeo de APIs. En su
trabajo actual, Marc forma parte de un equipo scrum que está
desarrollando la próxima generación de coordina todas las
pruebas de aplicaciones nativas para los mercados holandés e
internacional en servicios de paquetería.
marcvantveer.niobe.nl/blog
www.polteq.com
Acerca de los Autores
302
Robert Virkus / Enough Software
Robert ha estado trabajando en el espacio móvil desde 1998.
Experimentó la fragmentación de Java de primera mano cuando
desarrolló y portó un cliente móvil en el Siemens SL42i, el
primera teléfono para el mercado de masas con una máquina
virtual Java. Después de esta experiencia puso en marcha
el proyecto de código abierto J2ME Polish en 2004. J2ME
Polish ayuda a los desarrolladores a superar la fragmentación
por dispositivo. Es el fundador y CEO de Enough Software, la
compañía detrás de J2ME Polish, muchas aplicaciones móviles,
y este libro.
Twitter: @robert_virkus
www.j2mepolish.org
www.enough.de
Chris Ward / Sitepoint
Chris es un desarrollador y escritor trotamundos que trabaja
actualmente en varios proyectos con el objetivo de explorar
el potencial de la 'cultura libre'. Actualmente el editor de
www.sitepoint.com/mobile y siempre está buscando nuevos
escritores.
Twitter: @ChrisChinch
chrischinchilla.com
Acerca de los Autores
303
una iniciativa de:
www.enough.de
esponsorizado por:
msdn.microsoft.com
developers.sap.com
hp.com/go/mobile
“Si quieres empezar tu propio negocio en el ámbito móvil, este es el libro
Minh Nguyen en amazon.com
que tienes que leer primero.”
“El títol és magnífico, pero el contenido hace honor al título en cierta medida.
Este libro electrónico ofrece un amplio vistazo a casi cualquier cosa relacionada
Azzief Khaliq en hongkiat.com
con el desarrollo de aplicaciones móviles existente.”
“¡Una obra espectacular! Te asombrarás por cómo de increíblemente rápido
puedes establecer tu presencia en el mercado móvil con los simples pasos
Daniel Hudson en webtechman.com
explicados en esta guía.”
Una lectura obligatoria para cualquiera que esté considerando crear y
Steve en amazon.com
comercializar apps.”
Socio de distribución:
wip.org
www.mobiledevelopersguide.com
Descargar