Anda di halaman 1dari 309

Dont Panic

nte actuali
me

is

Edici

do
za

complet
a

GUIA A LA GALAXIA DE
APLICACIONES MVILES

n gra

publicado por:

Enough Software GmbH + Co. KG


Stavendamm 22
28195 Bremen
Alemania
www.enough.de

15a edicin, Febrero de 2015


Esta gua se encuentra bajo la licencia Creative Commons
Algunos derechos reservados.
Por favor, enva tus aportaciones, preguntas o esponsorizacin a:
mdgg@enough.de
Sguenos en Twitter: @MobileDevGuide

traduccin hecha posible por:

Diseo:
Cornelius Kwietniak (Enough Software)
Editores:
Marco Tabor (Enough Software)
Julian Harty, Chris Ward
Traductores:
Javier Melenchn, Eva Casado de Amezua
www.mobiledevelopersguide.com

1 Prlogo
4

La Galaxia Mvil: Introduccin


De la Idea al Concepto
27
Experiencia de Usuario & Diseo de Interfaz
38 Android
56
BlackBerry 10
68
Firefox OS
74 iOS
90
Java ME (J2ME)
101 Tizen
106 Windows
117 Hacia Multiplataforma
135 Sitios para Mviles & Tecnologas Web
151 Aplicaciones Empresariales
163 Videojuegos para Mviles
182 Desarrollo Mvil y el Internet de las Cosas
191 Programando Smartwatches
199 Analticas Mviles
212 Seguridad de la Aplicacin
225 Accesibilidad
247 Testeo
272 Monetizacin
291 Eplogo
292 Acerca de los Autores
17

Prlogo
El desarrollo de aplicaciones ha avanzado mucho en los ltimos
10 aos. Cuando fundamos Enough Software en el 2005, las
aplicaciones mviles eran algo realmente extico y limitado a
los telfonos, y la distribucin era ms que difcil. Ahora, no
slo tenemos que limitarnos a los mviles como plataforma,
sino que hemos ampliado nuestro alcance a tablets, phablets,
PCs, relojes inteligentes (smartwatches), televisores y sistemas
de automocin. Asimismo, muchos productos derivados del
Internet de las Cosas (o IoT, del ingls Internet of Things) han
sido posibles gracias a la aplicaciones mviles.
En esta quinceava edicin, y como siempre desde el 2009,
mostramos esas nuevas oportunidades, siendo en este caso los
captulos ms notables los captulos dedicados a IoT y smartwatches; pero tambin cabe destacar que otros captulos han
sido ampliados, mejorados, y en algunos casos completamente
renovados. Por ello queremos felicitar a los autores, habis
hecho un trabajo fantstico!
Tambin agradecer el soporte de nuestros patrocinadores,
que hace posible imprimir esta gua en formato de libro de
bolsillo: SAP, HP y Microsoft! Podis documentaros sobre
su oferta de plataformas mviles en developers.sap.com,
developers.hp.com y dev.windows.com. Y por supuesto:
Muchsimas gracias a los traductores!

Prlogo

Por favor, compartid vuestro entusiasmo con nosotros va Twitter en @enoughsoftware o va email en
mobiledevguide@enough.de, y recordad que podis encontrar
la edicin electrnica de este libro, en varios idiomas, en
mobiledevelopersguide.com.
Robert + Marco / Enough Software
Bremen, Febrero 2015
PD: Necesitas ayuda para triunfar en el universo mvil?
Contctanos en service@enough.de para saber ms sobre
nuestros servicios de coaching de aplicaciones.

Prlogo

10

th

ION

EDIT

La Galaxia Mvil:
Introduccin
Bienvenido al mundo del desarrollo mvil, un lugar donde
antiguos gigantes se tambalean y nacen nuevas estrellas,
aparentemente de forma habitual.
ste libro se centra en el desarrollo de aplicaciones mviles,
abarcando fases como: planificacin y especificacin, prototipado y diseo, implementacin, testeo interno y despliegue,
publicacin en una tienda de aplicaciones, descubrimiento por
los usuarios, instalacin, 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 cmo desarrollar aplicaciones
para las principales plataformas. Si sta es la primera vez que
has considerado involucrarte en este tema, te recomendamos
no demorarlo ms ya que el mundo se est enfocando
rpidamente hacia el mvil como forma predominante en la
informtica, y es probable que otros te adelanten si esperas
demasiado.
Aunque el desarrollo de aplicaciones mviles tiene algunos
puntos en comn con el de otro tipo de software, tambin
posee caractersticas especficas. Vamos a tratar algunas de
ellas a continuacin.

La Galaxia Mvil: Introduccin

Topologa: Factores de Formato y


Patrones de Uso
Tradicionalmente, los desarrolladores de aplicaciones slo nos
habamos centrado en los telfonos mviles; posteriormente
las tablets aparecieron en escena como plataformas objetivo;
y, hoy en da, nuestras aplicaciones pueden cubrir un amplio
espectro de dispositivos: smartwatch, mvil, tablet, PC, TV y
automocin. Y otros factores de forma se incorporarn en el
futuro. Cada factor de forma plantea sus propios retos de usabilidad; por ejemplo, un tablet exige una navegacin diferente a
un telfono y la entrada de datos en un televisor puede resultar
muy incmoda.
Naturalmente, los patrones de uso de Android difieren de los
de iOS, que a su vez son diferentes de aquellos para Windows
Phone, etctera. Por tanto, deberas 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.

Formacin Estelar: Creando un Servicio


Mvil
Hay varias maneras de producir un servicio mvil:
Aplicacin (app)
Sitio Web
SMS, USSD1 y STK2

1 es.wikipedia.org/wiki/USSD
2 en.wikipedia.org/wiki/SIM_Application_Toolkit

La Galaxia Mvil: Introduccin

Aplicaciones
Las aplicaciones se ejecutan directamente en el dispositivo. Se
pueden desarrollar como nativas, web o hbridas.
Aplicaciones Nativas
Una aplicacin nativa est programada en un lenguaje
especfico con APIs propias de la plataforma. Se suele comprar,
descargar y actualizar a travs de la tienda de aplicaciones
especfica de la plataforma. Las aplicaciones nativas suelen
ofrecer mejor rendimiento, integracin ms completa y la mejor
experiencia de usuario en comparacin con otras opciones; sin
embargo, el desarrollo nativo suele ser tambin la opcin de
desarrollo ms compleja.
Aplicaciones Web
Una aplicacin 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 mvil que trata
de emular el look-and-feel (aspecto y comportamiento) de
una aplicacin. Un famoso ejemplo de aplicacin 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 aplicacin web basada en Facebook iOS fue puesta
al da como aplicacin nativa para mejorar dramticamente 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 Mvil: Introduccin

Aplicaciones Hbridas
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 mviles esta
controversia ya no es relevante, porque la aproximacin hbrida
al desarrollo de aplicaciones se ha convertido en algo bastante
comn: una aplicacin puede utilizar cdigo 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 aplicacin. Una aplicacin hbrida hace
uso tanto de las tecnologas nativas como las web. Partes de
ella se comportarn como una aplicacin nativa, mientras que
otras se ejecutan sobre tecnologas web y pueden utilizar la
conexin a Internet para ofrecer contenidos actualizados y
funcionalidades sin necesitar de publicar actualizaciones en
las tiendas de aplicaciones. Mientras que esto podra ser visto
como un inconveniente, el uso de las tecnologas web permite
a los desarrolladores mostrar contenido actualizado sin tener
que volver a subir la aplicacin a las tiendas de aplicaciones.
El desafo clave es combinar las capacidades nicas de
tecnologas nativas y web para crear una aplicacin verdaderamente fcil 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 ubicacin
actual del dispositivo. A diferencia de las aplicaciones, los
sitios web para mviles son inherentemente multiplataforma.
Histricamente, los sitios web se han centrado en ser compatibles con navegadores basados en WebKit como Safari.
Hoy en da, 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 estndares HTML5 tanto como sea posible
y evita renderizar cdigo especfico de un slo motor.
SMS, USSD y STK
Los servicios sencillos pueden ser realizados con SMS, USSD
o STK. Todo el mundo sabe cmo funciona el sistema de
mensajera de texto SMS (Short Message Service), y todos los
telfonos son compatibles con l, pero necesitas convencer a
los usuarios de que recuerden comandos de texto para servicios
ms complejos. Algunos operadores ofrecen APIs para servicios
de mensajera que funcionan para dispositivos que slo 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 ingls Unstructured Supplementary Service
Data) es un protocolo GSM utilizado para enviar sencillos
mens basados en texto, cuyas capacidades dependen de
la compaa operadora y el dispositivo. En Sri Lanka, los
turistas pueden recibir una tarjeta SIM gratuita que se registra
utilizando mens USSD.
El STK (SIM Application Toolkit) permite implementar
aplicaciones interactivas de bajo nivel directamente en la
tarjeta SIM de un telfono. El STK puede parecer irrelevante
cuando se estn dando tanta relevancia a las aplicaciones
para smartphones, sin embargo hay casos como el de M-Pesa,
una aplicacin STK que est transformando las transacciones
financieras en Kenia y otros pases5.

4 www.developergarden.com/apis
5 memeburn.com/2012/03/how-m-pesa-disrupts-entire-economies/

La Galaxia Mvil: Introduccin

El Universo de los Sistemas Operativos


Mviles
El espacio mvil es mucho ms diverso que otras reas TIC.
Cuando ests desarrollando software para ordenadores personales, tienes bsicamente 3 sistemas operativos para elegir,
pero en el caso de los mviles hay muchos ms. Este libro te
ofrece una introduccin a aquellos sistemas operativos mviles
ms relevantes actualmente, pero hay que ser consciente de
que el entorno mvil cambia continuamente a una velocidad
que rara vez se observa en otros negocios. Hemos visto cmo
muchas tecnologas prometedoras aparecen y desaparecen
rpidamente, sin importar lo grandes que eran las compaas
que las respaldaban o la relevancia que tuvieran histricamente
en el mercado.
As que sigue leyendo, aprende cmo es el mercado actual
y preprate para seguir sus cambios (o asegrate de tener la
ltima edicin de esta gua a mano).
Qusars: Android e iOS
Cuando la gente habla sobre aplicaciones mviles, en su
mayora slo se refieren a Android e iOS. Por qu? En trminos
de cuota de mercado, estas dos plataformas combinadas
dominan el mercado de smartphones con alcanzando fcilmente
el 90% de cuota en los principales mercados6 (ver la tabla a
continuacin para los nmeros globales). El estudio Developer
Economics 20147 tambin muestra que iOS y Android estn a
la cabeza en trminos de atencin 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 Mvil: Introduccin

ellos consideran su 'primaria'. Android era lder, con un 71% de


los desarrolladores trabajando en ella, seguido por iOS con un
55%.
Naturalmente, esto tambin significa que si vas a usar
Android o iOS, vas a tener muchos competidores.
Materia Oscura: Plataformas de Mviles de Gama Media
Si bien los smartphones acaparan todo el protagonismo en
los medios, algunas partes del mundo pertenecen al universo
del mvil de gama media. A nivel global, alrededor del 50%
de todos los telfonos vendidos en el tercer trimestre de 2014
fueron feature phones (telfonos de gama media)8, con una
base instalada muy superior a esa cifra. An as, Android est
incrementando su penetracin 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 telfonos 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
telfonos de gama media cuando se tiene estrecha relacin con
el comercializador, normalmente desarrollars aplicaciones para
esos telfonos utilizando Java ME o BREW.
Magnetoestrella: Windows
Windows se ha convertido en el 'tercer ecosistema'10 en el
universo mvil, 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 Mvil: Introduccin

10

dows 8.1 y Windows 8 ha superado a la de todas las versiones


de Mac OS X juntas, y tambin las versiones de Windows XP,
segn 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), telfonos, tablets, PCs, e
incluso la Xbox One.
Supernovas: Sailfish OS, Firefox OS, BlackBerry 10 y
Aliyun
Se convertirn estas plataformas en espectaculares historias
de xito o en desafortunados captulos de la industria mvil?
Nadie lo sabe con seguridad, pero hay seales ambivalentes
abiertas a la interpretacin.
La empresa finlandesa Jolla12 entr en el mercado en el
cuarto trimestre del 2013 con Sailfish OS13. Aunque an es un
sistema enfocado a un nicho del mercado, Jolla ha lanzado
una versin estable de su firmware y ha recibido ms de 1,8
millones de dlares estadounidenses va 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 atencin en un


mundo cada vez ms 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 consumindose lentamente (como Samsung bada), otros han terminado con una
explosin (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 polticas corporativas y a una buena dosis
de pura suerte. Cada vez es ms difcil 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 telfono con Ubuntu no alcanz sus objetivos, en
Febrero 2015 la empresa espaola BQ17 present el Aquaris
E4.5 con Ubuntu.
Tizen18 ha disfrutado de un cierto xito en el mercado de
smartwatches (ver el captulo dedicado a esos dispositivos),
aunque se ha retrasado la produccin de los telfonos
16

indiegogo.com/projects/ubuntu-edge

17

www.bq.com

18

tizen.org
La Galaxia Mvil: Introduccin

12

prometidos por Samsung que lo soportaran. El Z1, el primer


telfono Tizen ha sido finalmente lanzado en India en enero
de 2015. Aparentemente impulsado suave pero firmemente
por Samsung e Intel, Tizen aspira soportar no slo telfonos
y smartwatches, sino tambin televisores, tablets, netbooks
y sistemas de infotenimiento para vehculos. El hecho de que
incluyamos un captulo dedicado a Tizen en esta edicin 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 aos 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 mayora de los desarrolladores,


consideres que invertir tiempo en todo lo que no sea iOS y
Android es una prdida 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 Mvil: Introduccin

13

superaron a las de telfonos de gama media19, y Nokia Asha


est considerada como la prxima plataforma que llegar
al billn de usuarios, ofreciendo ya la posibilidad de portar
aplicaciones desde Android.
Recuerda tambin que se estas son cifras globales; la
participacin 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 caractersticas del mercado objetivo. Por ejemplo,
China es el mayor mercado de smartphones en la actualidad y
es responsable de ms 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 mviles.
Para obtener informacin sobre la cuota de mercado
en tu regin objetivo, tienes recursos en lnea tales como
comscore21, StatCounter22, VisionMobile23, Gartner24 o Kantar
Mobile World Panel25.

Sobre Tiempo y Espacio


Como desarrolladores, tendemos a mostrar mucha pasin por
nuestros sistemas favoritos. Sin embargo no debemos olvidar
que estas tecnologas son slo eso, tecnologas que son
relevantes en un momento y lugar dado, pero nada ms. 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 Mvil: Introduccin

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 aos
80! Probablemente no muchos de vosotros, pero seguramente,
entendis a los que nos referimos. Iniciativas como FairPhone26
o IndiePhone27 pueden ser ms importantes que el sistema
operativo o el proveedor que elijas en el futuro.

Perdido en el Espacio
Si ests perdido en el vasto universo del desarrollo mvil, no
te preocupes, mantn la calma y sigue leyendo. Explora tus
opciones y evala el problema que deseas resolver, tu pblico
objetivo y tu know-how. Pon un gran esfuerzo en disear la
experiencia de tu servicio, concntrate en el problema en
cuestin, y mantenlo simple. Es mejor hacer una cosa bien que
hacer "todo" slo regular. Invierte en el diseo y la usabilidad de la solucin. 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 gua te
ayudar a tomar una decisin 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 cmo puedo lograr un xito
similar con mis productos? Este captulo te ofrece herramientas
y un marco para generar sistemticamente ideas innovadoras
para productos.

Los Ingredientes del xito: Conveniencia,


Viabilidad & Factibilidad
Comenzaremos debatiendo qu hace a un producto innovador
y exitoso. Una caracterstica importante de los productos
innovadores es su combinacin de tres aspectos principales:
conveniencia humana, viabilidad financiera y viabilidad
tcnica.
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 debera
simplificar tareas o hacer ms cmoda la vida de las personas.
As, una idea de producto genera inters 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 fcilmente, la estructura de la aplicacin es muy
clara y fcil de entender, y las actualizaciones peridicas sobre
el contenido o sitio ofrecido mantienen el inters en la misma
constante. Las aplicaciones mviles pueden permitir a los
De la Idea al Concepto

17

usuarios hacer cosas que no podran hacer antes fcilmente;


por ejemplo, comprar precios en una tienda, comprar y vender
sobre la marcha, o el control de su salud y estado fsico.
Considera formas de desarrollar aplicaciones que aprovechen lo
que ofrecen los dispositivos mviles.
La viabilidad financiera es crucial para el desarrollo de la
mayora de productos, incluyendo las aplicaciones mviles. La
viabilidad ayuda a cubrir los costes en tiempo y energa del
desarrollo y mantenimiento de tu aplicacin. Para aquellos que
esperan que la aplicacin se autofinancia, el desafo 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 dcada. Por ejemplo, tanto la
publicidad como el modelo freemium se han utilizado en a las
aplicaciones mviles, siendo las compras In App especialmente
populares en los videojuegos, aunque con riesgo de ser
contraproducentes2 . Lee el captulo monetizacin de esta gua
para aprender ms sobre qu opciones tienes de ganar dinero
con el software mvil.
El tercer aspecto es la viabilidad tcnica. La mayora de los
ingenieros de software y desarrolladores estn involucrados en
la evaluacin de esta dimensin. A menudo, construir y combinar la tecnologa adecuada para hacer un producto es todo
un desafo. Casos de la vida real muestran que los productos
innovadores no siempre necesitan tecnologa 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 combinacin inteligente de las


tecnologas 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 implementacin de una solucin. Obtn feedback
de otras personas, incluidos los usuarios potenciales, para
ayudarte a refinar idea y concepto.

Cntrate en el Usuario
En teora, es posible que un producto encaje inmediatamente
con los deseos de su grupo objetivo, pero en la prctica esto
es poco habitual. En la mayora 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 satisfaccin 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 ms y ms usuarios, ya
que las expectativas de los usuarios no se pueden cubrir con la
aplicacin existente.
Comenzar a desarrollar sin comprender realmente las
necesidades del usuario es muy arriesgado porque los cambios
en una aplicacin ya lanzada son caros. Adems, 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 aplicacin usando su feedback. El
anlisis 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 diseo
de soluciones digitales innovadoras.
El primer paso es saber quines son tus usuarios y definir el
grupo(s) de destino para tu aplicacin. Tienes que comprender
cules son los objetivos de los usuarios, qu tareas necesitan
realizar, y por qu tu aplicacin es relevante para sus necesidades. Comprueba que sabes qu grupos de usuarios desearan
utilizar la aplicacin.
Con el fin de revelar lospain points (puntos de dolor) y
deducir los requisitos reales, es necesario entender cmo
los usuarios realizan las tareas actualmente, incluyendo sus
soluciones alternativas. La mejor manera de obtener esa informacin 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 demogrficos, pueden ampliar tu investigacin, pero no
dependas de ellos como principal fuente de informacin!
Adems, durante el anlisis de requisitos es importante
tener en cuenta las diferencias entre deseos y necesidades.
Segn Merriam Webster, un deseo es "un deseo de que algo
suceda o sea hecho."3 Adems, 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 mgica 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
slo los deseos de usuarios, no significa necesariamente que
ayude a los usuarios con sus objetivos. Por ejemplo, algunos
clientes quieren obtener un producto slo porque tiene un
diseo 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. Segn 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 debera eliminar dicha ausencia.
Diferentes carencias inducen diferentes niveles de accin.
De acuerdo con la famosa pirmide de Maslow5, la necesidad
fisiolgica de dormir o el hambre son, por ejemplo, mucho ms
fuertes que la necesidad de comunicacin social. A diferencia
de los deseos, las necesidades son inespecficos y, a menudo,
inconscientes.
Para iniciar el anlisis de los requisitos, asegrate de
plantear las necesidades y definir tu producto basndote en
necesidades reales en lugar de deseos arbitrarios.

4 merriam-webster.com/dictionary/need
5 en.wikipedia.org/wiki/Maslows_hierarchy_of_needs

De la Idea al Concepto

21

Ideando
El resultado del anlisis no es una solucin, sino una declaracin clara y bien fundamentada del problema. Este planteamiento debe ser una base para explorar el escenario de la
solucin en la fase de ideacin 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 ms fcil discutir diferentes enfoques para resolver
los pain points de los usuarios y combinar las mejores.
Existen muchas tcnicas 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 especficas, como el
mtodo 6-3-56, la confrontacin visual, o el mtodo Disney7.
Lo que todas estas tcnicas tienen en comn es que fomentan
tanto el pensamiento divergente como el convergente,
fomentando el pensar fuera de la caja (del ingls 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 mtodo ms popular, pero no produce
los mejores resultados en cuanto a la cantidad de ideas;
para mejorarlos, se recomienda la aplicacin de tcnicas 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

tcnica 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 evalan antes de


tiempo.
No es importante la tcnica que se utilice, sino tener en
cuenta las siguientes reglas de equipo durante la fase de
ideacin del proyecto:

Aplazar el juicio
Fomentar ideas extraas
Mantenerse centrado
Centrarse en la cantidad
Ser visual
Construir sobre las ideas de otros
Una vez recogidas las diversas ideas, debern
revisarse, retocarse o combinarse por el equipo,
y las resultantes ms prometedoras sern 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
satisfara las necesidades de los usuarios. Los comentarios
de los usuarios potenciales son clave para evaluar el valor
de tu idea. Al principio slo tienes que hablar de tu idea y
el concepto general de la aplicacin. Sin embargo, puede ser
un reto para describir tus pensamientos de una manera en la
que el pblico 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 comprensin puede ser
diversa y la comunicacin de las ideas un reto.
Con el fin de superar los retos de la comunicacin, debes
expresar tus ideas de maneras visuales y tangibles, por ejemplo
con prototipos. El trmino prototipo puede sonarte como algo
que requiere mucho esfuerzo; de hecho, tradicionalmente se
entiende como una pre-versin de un producto final, pero un
enfoque ms moderno del concepto es ms verstil al incluir
borradores (por ejemplo, un dibujo en papel). En las primeras
fases de desarrollo de una aplicacin innovadora, un prototipo
debe ser una herramienta que se utiliza para discutir ideas y
conceptos. Un prototipo puede ser, por ejemplo, un dibujo,
guin grfico, o la visualizacin fsica de un concepto. Debe
ser fcil y rpido de construir y representar las partes esenciales de tu idea.
El principio ms importante para trabajar con prototipos
es "empezar poco a poco, fallar pronto y aprender rpido".
Esto significa que puedes crear un prototipo rpido con costes
muy bajos para hacer tangible tu idea, obteniendo feedback
y aprendiendo en ciclos de iteracin muy cortos. En esas
iteraciones puedes probar y mejorar el prototipo rpidamente
y a bajo coste. De esta manera, es posible validar nuevas ideas
con riesgos bajos y sin costes adicionales para la ejecucin del
proyecto.
Cuando se trata de la ingeniera de software, hay tres
herramientas relacionadas con el trmino 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 informacin o interaccin bsica.
Implementar una prueba de concepto se utiliza para validar la
viabilidad tcnica. Durante la implementacin de una prueba
de concepto, es fundamental centrarse en los riesgos del
De la Idea al Concepto

24

proyecto e identificar soluciones y lmitaciones tcnicas. Lee


el siguiente captulo para obtener ms informacin sobre cmo
crear prototipos.
Si conveniencia y viabilidad son validados, tambin 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 Ms
Aqu puedes aprender ms acerca sobre metodologas y
tcnicas:
businessmodelgeneration.com, el sitio web del famoso libro
sobre cmo generar tu propio modelo de negocio. Tambin
ofrecen una herramienta online, una vista previa del libro9,
y mucho ms.
mycoted.com/Brainwriting, una buena introduccin a
mtodos de brainwriting. Forma parte de una Wiki sobre
tcnicas creativas mantenida por la empresa inglesa
mycoted.
uxbooth.com/articles/complete-beginnersguide-to-design-research, la "Complete Beginners Guide to
Design Research" por Andrew Maier. El ttulo es un tanto
exagerado, pero el libro es una buena introduccin 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 ms deseables con menor coste.

8 alexosterwalder.com
9 businessmodelgeneration.com/book

De la Idea al Concepto

25

Experiencia de Usuario &


Diseo de Interfaz
A estas alturas probablemente ya tienes una idea para tu
aplicacin. Este captulo trata sobre las tcnicas a utilizar para
transformar tus planteamientos en un producto utilizable.
Disear una aplicacin desde cero requiere una aproximacin diferente a trabajar con una interfaz de usuario (o UI,
del ingls User Interface) ya existente. En ambas situaciones,
habitualmente irs alternando una visin ms global con una
ms detallada para asegurarte de que continuas mejorando su
calidad pero alinendote con las directrices del proyecto.
Utiliza los mtodos descritos aqu como una caja de
herramientas ms que como una frmula magistral, y aplcalos
en el orden que mejor encaje con el proyecto en el que ests
trabajando.
Las fases de diseo -diseo 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 tipologa de usuario para un producto. En diseo, una
persona tpica consistir en una informacin de base acerca de
un usuario tipo, por ejemplo su profesin y motivaciones para
usar tu aplicacin, y cmo sta podra mejorar su vida. Le
ayudara a ser ms productivo en el trabajo? Realizar nuevas
actividades? Aprender nuevas habilidades? Habitualmente hay
Experiencia de Usuario & Diseo de Interfaz

27

ms de una persona para un proyecto. Para facilitarte adecuar


la aplicacin a las necesidades de tus usuarios, elige tambin
nombres y fotografas que te permitan perfilar en detalle las
personas que utilizars.
Los perfiles de usuarios son relevantes para ayudarte a
evitar que tiendas a disear para ti mismo. Dado que ya ests
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 disear tu interfaz, no ser as para tus usuarios. En cambio,
juzgarn la interfaz de tu aplicacin segn cmo esta encaje
en sus prejuicios al respecto. Para asegurarte de que ests
comunicando sus funciones con claridad, mantn en todo
momento tus personas presentes, y realiza el tipo de preguntas
que esos perfiles haran en cada paso de su viaje por tu
aplicacin (llamados User Journeys).
User journeys
Cuando tengas una idea precisa del tipo de audiencia para la
que ests diseando, puedes comenzar pareando las funciones
con escenarios de uso; pensar en flujos -un viaje especfico
en tu aplicacin desde un punto A a uno B- antes de pasar
a definir en ms detalle la interfaz es tambin importante.
Esbozar esos flujos cuanto antes te ayudar a definir el nmero
de interacciones y pantallas que realmente vas a necesitar para
ellos.
Ejemplos de viajes pueden ser el flujo de compra en la
aplicacin, subir y compartir una imagen, hacer un boceto,
etc. Para mapearlos debers usar diagramas de flujo, mockups,
diseos de pantalla, descripciones escritas de cada paso,
storyboards o simples ilustraciones anotadas. Cualquier
Experiencia de Usuario & Diseo de Interfaz

28

tcnica que elijas como la ms 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 diseos precisos o ser abstractos y enfocados
a elementos especficos, por ejemplo el sistema de mensajera
de la aplicacin.
Tras definir el flujo principal, puedes dividirlo en mltiples
tareas menores que necesites considerar en cada paso del
flujo. Esto te dar el enfoque que necesitas para disear
una experiencia complete con la comodidad de tener el flujo
principal cubierto antes de entrar en detalles.
Iterar sobre un problema de diseo revelar diferentes
retos segn el tipo de persona que tengas en mente. Algunos
usuarios necesitan ms gua que otros. Incluso si es poco probable que todo el mundo perciba cada detalle de informacin y
diseo, mientras estn 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
esquemticas de las pantallas de tu aplicacin. Muestran
dnde debe colocarse cada elemento y qu relevancia tiene
en relacin con el resto en pantalla. Esta composicin bsica
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 rpidamente. Las herramientas ms especializadas incluyen una librera de widgets listos para utilizar
en una pgina del diseo. La ventaja de utilizar herramientas
digitales es que tienes una versin editable de tus mockups
Experiencia de Usuario & Diseo de Interfaz

29

que puedes transformar en prototipos funcionales. Aunque


tambin puedes usar bocetos para ello, cuando profundices en
el nivel de detalle te ser mucho ms fcil de actualizar una
versin digital del diseo.
Mantener actualizados tus mockups guiar tu desarrollo
de contenidos y diseo visual, y son un excelente punto de
referencia para la discusin de los detalles y pasos a seguir
con tu equipo. Tu librera de patrones de interfaz de usuario
se basar en elementos reutilizables de tus diseos. La
arquitectura de informacin de la aplicacin se estructurar
segn cmo elijas organizar el contenido y la navegacin a su
alrededor del mismo.

Aadir los detalles


Disear para una plataforma y varios tamaos de pantalla
Piensa en estructura y widgets en el contexto de la plataforma
en la que se ejecutar tu aplicacin. Cada plataforma tiene
sus propias convenciones de estilo y mtodos para gestionar
la interaccin. Seguir las prcticas recomendadas har que tu
aplicacin sea ms fcil de utilizar para los usuarios familiarizados con esos dispositivos. Para ms informacin y enlaces
a recursos online ve a los captulos especficos para cada
plataforma en esta gua.
Debido a la naturaleza siempre cambiante del mercado mvil
deberas considerar cmo se ver tu interfaz en diferentes
tamaos de pantalla y densidades de resolucin. Aunque puede
ser demasiado pronto para analizarlo en detalle si no tienes tu
concepto de aplicacin refinado, trabajar la ratio escalabilidadusabilidad durante el wireframing y la fase de diseo visual
puede ahorrarte tiempo de desarrollo y testeo despus. Si
este tema es completamente nuevo para ti, vale la pena que
Experiencia de Usuario & Diseo de Interfaz

30

leas ms acerca de las mejores practicas en Responsive Web


Design (RDW). Los diseadores web llevan tiempo resolviendo
estos problemas. Averigua si la plataforma ofrece directrices
especficas al respecto.
Lenguaje
Tan pronto como comiences a utilizar etiquetas y nombres
significativos en los elementos, comenzars a definir cmo
comunicarte con tus usuarios. Segn sea tu aplicacin, el lenguaje tendr diferentes roles a la hora de guiar a tus usuarios.
Pero incluso si el uso de palabras en tu interfaz es mnimo, no
las abandones a un rol secundario (por ejemplo como placeholders). Tu manera de nombrar es algo que tambin deberas
someter a testeo de usuarios. Una sola palabra errnea puede
llevar a los usuarios a confusin o hacerles creer cosas que
pueden afectar negativamente a la experiencia que quieres
construir.
Diseo visual
A menos que ests construyendo una app que utilice un
sistema no visual de entrada/salida, su interfaz deber basarse
en el uso de grficos. Cuidar los detalles visuales del diseo te
ayudar a mejorar la experiencia de usuario y destacarla de la
gran masa de aplicaciones del mercado.
Hay una serie de principios de diseo grfico que ya
deberas haber aplicado durante el wireframing. Estos incluyen
la jerarquizacin espacial y visual as como la posicin de sus
elementos. Un estilo visual pulido no slo mejora el atractivo
de la interfaz en sentido esttico, reforzar la marca tambin
mejora la funcionalidad y reduce la curva de aprendizaje al
ofrecer una visualizacin intuitiva.

Experiencia de Usuario & Diseo de Interfaz

31

La consistencia de estilo en toda la aplicacin ayuda a los


usuarios a comprender el sentido de tu interfaz y aprender sus
interacciones ms rpido. Por ejemplo, si un botn principal
cambia de color de una pantalla a otra, debers considerar
el impacto de dicho cambio. Se confundirn los usuarios?
Comprendern el sentido de dicho cambio? Si los cambios de
estilo son intencionales, asegrate de que los haces por una
buena razn.
De manera similar al diseo de interfaz e interaccin a
nivel wireframe, algunas decisiones de estilo deben seguir
una guas de estilo especficas de la plataforma. Tu aplicacin
puede verse muy diferente dependiendo de para qu plataforma
fue diseada. Asegrate de que tu diseo sigue las prcticas
recomendadas respecto a uso de fuentes, iconos y convenciones de disposicin de elementos. Como ya hemos mencionado,
lee los captulos de esta gua dedicados a las plataformas que
te interesan para saber ms y acceder a recursos especficos.
El branding en la interfaz puede ser aplicado de manera
no obstructiva para que los usuarios puedan concentrarse en
interactuar con tu aplicacin. Utiliza los colores de fondo, de
control, y tal vez algunas imgenes u opciones de diseo para
conseguir el aspecto deseado. Una pantalla de inicio (si la
utilizas) es el lugar donde mostrar algunos grficos adicionales.
Por ltimo, el icono de la aplicacin es el elemento visual
que dar la primera impresin de tu aplicacin y su identidad,
y el cual se la juzgar. Haz que sea muy atractivo. Si planeas
lanzar en mltiples plataformas, comprueba los requisitos
de diseo cuanto antes para que tu grafismo sea fcilmente
portable.

Experiencia de Usuario & Diseo de Interfaz

32

Prototipado
Un prototipo es la mejor manera de visualizar y evaluar las
interacciones de tu aplicacin, porque es suficientemente
funcional para comunicar tu visin sin tener que aportar mucha
documentacin adicional, por ejemplo imgenes estticas. Tu
prototipo puede tener ya su diseo visual y mostrarse exactamente como lo har despus de la implementacin, o puedes
dejarlo simplificado a nivel wireframe.
No importa el tamao 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 narracin 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 tamaos de pantalla.
No existe la manera perfecta de crear un prototipo. Puedes
usar cualquier tcnica con la que ests cmodo. Desde papel
hasta alguna herramienta especializada, u otra aplicacin
con la que puedas crear una mnima interactividad. Si sabes
programar, usar HTML es una buena opcin. Puedes crear rpidamente prototipos sobre la parte de la aplicacin existente y
trabajar directamente en el cdigo 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 cdigo final y de realizar
diseos con precisin a nivel de pxel. Un prototipo funcional
validado tambin es una referencia til para que los equipos
puedan trabajar sin arriesgarse a desviarse demasiado del plan
director, y tambin es til para obtener feedback de terceros.
Algunas herramientas son gratuitas, y la mayora de las
comerciales ofrecen una versin de prueba o gratuitas para
un nmero limitado de proyectos. A menudo aparecen nuevas
Experiencia de Usuario & Diseo de Interfaz

33

aplicaciones; a continuacin, 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 rpidamente las ideas que no
funcionan. A ms tiempo inviertas en desarrollar tus diseos,
ms difcil ser abandonarlos y comenzar de cero. Es ms difcil
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 bsicas. Durante la bsqueda de usuarios a entrevistar

Experiencia de Usuario & Diseo 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, preprate con
antelacin. Define tus presentaciones, piensa en cmo vas a
explicar la sesin a los usuarios y cmo utilzars su feedback.
Tambin deberas 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 ests probando un prototipo, vale la pena mencionar
a los usuarios que la applicacin no est terminada y que
pueden encontrar elementos sin terminar. Si asumen que quien
dirige la sesin es el autor del diseo pueden tener reparos
en dar un juicio negativo. Asegrales que pueden expresar
sus opiniones con total honestidad. Despus de todo, la nica
razn por la que organizaste la sesin es obtener informacin
independiente. Una vez que las introduccin ha terminado, es
importante que sigas las reglas y no dirijas a los usuarios a
ninguna conclusin. No demasiado (a menos que si no lo haces
no puedas continuar con la sesin) y formula tus preguntas
de manera que no interrumpas su flujo de trabajo. Graba a los
usuarios para registrar el feedback obtenido o asegrate de
tomar suficientes notas.
Cuando recibes feedback, puedes iterar sobre tus diseos y
mejorar las partes incompletas, o avanzar en el desarrollo con
ms confianza. Si ests explorando nuevas reas y el prototipo
an no est listo, puede realizar sesiones de pruebas en otras
aplicaciones ya publicadas. Lo que otros llegan a percibir de
una aplicacin son cosas que pueden sorprendente porque
nunca las hubiras pensado.

Experiencia de Usuario & Diseo de Interfaz

35

Incluso si no puedes probar con un gran nmero de


personas, realizar pruebas con un nmero limitado de usuarios
identificar problemas clave que podran causar problemas
de usabilidad. No tengas miedo de emprender estas sesiones
siempre que tengan sentido para validar la direccin que has
tomado. Una sola opinin no sesgada es mejor que ninguna
opinin en absoluto.

Aprende ms
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 & Diseo de Interfaz

36

Android
El Ecosistema
La plataforma Android ha sido desarrollada por la Open Handset
Alliance, liderada por Google, y ha estado a disposicin del
pblico 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 ms de 1 billn de
dispositivos Android haban sido activados hasta la fecha2
incluyendo wearables, tablets, reproductores multimedia, decodificadores de televisin, telfonos de sobremesa y sistemas
de infotenimiento para automviles. Las Google Glass tambin
incluyen una versin reducida de Android compatible tanto con
aplicaciones web como nativas. Algunos dispositivos noAndroid tambin 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 cdigo abierto Sailfish3 y la consola financiada en
crowdfounding Ouya.
En diciembre de 2014, el nmero 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 coleccin de


aplicaciones preinstaladas y una plataforma de desarrollo de
aplicaciones soportada por un amplio paquete de herramientas.
La plataforma sigue evolucionando rpidamente, con la adicin
de nuevas caractersticas 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 ms ambiciosa versin hasta la fecha. El nuevo kit de
interfaz de usuario, llamado Material Design5 tiene como meta
unificar todas las plataformas, tales como telfonos, wearables
y televisores, con una misma filosofa de diseo. El anterior
framework, Dalvik, ha sido reemplazado con el nuevo Android
Runtime (ART), que aporta funciones tales como una recoleccin de basura (garbage collection o GC) ms inteligente
que llega a multiplicar el rendimiento or 4. El proyecto Volta
mejora la vida de la batera optimizando el comportamiento
de la aplicacin, mientras que otras funciones incluyen control
de privacidad, comparticin de cuentas entre dispositivos, y
extensiones al sistema de notificaciones.
Uno de los problemas ms debatidos cuando se desarrolla
para Android es la fragmentacin del sistema: La multitud
de dispositivos diferentes de diversos fabricantes y el rpido
progreso de la plataforma en s generan incertidumbre sobre
si una aplicacin Android podr ejecutarse o no en cualquiera
situacin. Adems, la adopcin de la ltima versin del sistema
operativo est siendo ms lenta que en otras plataformas. En
cualquier caso, actualmente puedes alcanzar ms 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 slida y una


apariencia consistente en las aplicaciones Android, Google
publica una gua de diseo7. Al introducirnos en la importancia
de los esquemas de color, pautas de diseo y el nuevo diseo
Material, la gua provee una excelente orientacin a la hora de
construir aplicaciones para el ecosistema Android.

Prerrequisitos
El lenguaje de programacin principal para Android est basado
en Java. Pero ten cuidado, slo un subconjunto de las libreras
y paquetes de Java son compatibles y hay muchas APIs
especficas de la plataforma que no funcionarn en Android.
Puedes encontrar respuestas online a la preguntas "Qu y
Por qu?" en la Dev Guide para Android8 y a al "Cmo?" en la
documentacin de referencia9. Adems, Google ha introducido
una seccin en su documentacin 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

prcticas. All es donde puedes aprender conceptos bsicos


como la navegacin y comunicacin entre aplicaciones, as
como funciones ms avanzadas como la descarga inteligente
de bitmaps y la optimizacin de la aplicacin para reducir el
consumo de la batera.
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 integracin con IDEs y de asegurarse
que tu flujo de desarrollo es lo ms cmodo 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 aos de desarrollo, Android Studio 1.013
es por fin la IDE oficial para Android, soporta Gradle y ofrece
muchas funciones especficamente diseadas para desarrollos
en Android.
IDE

soporte a plugin

versin 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

Encontrars ms informacin, as como los necesarios


enlaces de descarga, en la seccin "Tools" de la documentacin
de Android14 .
Desarrollo nativo
El Android NDK15 permite la creacin de componentes nativos
para tu aplicacin al aprovechar tanto JNI para la invocacin
de mtodos 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.

Implementacin
Arquitectura de la aplicacin
Las aplicaciones Android incluyen habitualmente una mezcla
mltiples objetos tipo actividades (Activity), servicios
(Service), BroadcastReceiver y proveedores de datos (Data
Provider), los cuales tienen que ser declarados en el manifiesto
de aplicacin.
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
estn ligadas directamente a una representacin 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 aplicacin
que abstrae de los mecanismos de almacenamiento subyacentes
(por ejemplo, SQLite).
Una aplicacin 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 ejecucin. La
comunicacin entre los componentes se consigue con objetos
Intent o llamadas a procedimientos remotos va (AIDL) Android
Interface Definition Language.
Los Intents empaquetan datos tales como la localizacin del
usuario, o una URL, con una accin, desencadenan acciones en
la plataforma y pueden ser utilizados como un sistema de mensajera en tu aplicacin. Por ejemplo, el Intent para mostrar
una pgina web abrir el navegador web. La fuerza de esta
filosofa de bloques de construccin es que se puede sustituir
cualquier funcionalidad por otra aplicacin, ya que Android
siempre utiliza la aplicacin por defecto para un propsito especfico. Por ejemplo, el Intent para compartir una pgina web
llamada por una aplicacin de lectura de noticias puede abrir
un cliente de correo electrnico o una aplicacin de mensajera
de texto, dependiendo de las aplicaciones instaladas y de las
preferencias de usuario: se puede utilizar cualquier aplicacin
que declare un Intent tipo share como interfaz.
La interfaz de usuario de una aplicacin est separada
del cdigo en archivos XML de layout especficos de Android.
Diferentes diseos pueden ser creados para diferentes tamaos
de pantalla, localizacin por pas y caractersticas del dispositivo, sin tocar el cdigo Java. Con este fin, textos e imgenes
estn organizados en carpetas separadas de recursos. Por
supuesto, tambin puedes definir y disear layouts va cdigo
o hacer use de ambas estrategias para permitir actualizaciones
dinmicas de la interfaz de usuario.
El SDK y los Plug-ins
Para ayudarte en el desarrollo tienes muchas herramientas a tu
disposicin en el SDK, los ms 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 caractersticas de un dispositivo
virtual. Lleva un tiempo arrancarlo, por lo que hazlo slo
una vez por sesin de trabajo y no para cada compilacin.
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 posicin GPS.
Tambin se puede utilizar para monitorizar el consumo
de memoria y terminar procesos. Si esta herramienta
est en ejecucin, tambin 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 anlisis de los registros de mtodo de rastreo,
inspeccionar diseos y probar aplicaciones con los eventos al
azar.
Los plug-ins IDE estn disponibles para ayudar a gestionar
estos archivos. La versin 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
rpido, arrastrando y posicionando elementos de la interfaz en
el editor.
Si te enfrentas a problemas, tales como generacin
de excepciones, asegrate 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 ests utilizando las caractersticas introducidas despus
de Android 2.3, tales como Fragments17 para pantallas grandes,
asegrate de agregar el paquete Android Compatibility de
Google. Est disponible a travs del SDK y AVD Manager y
ayuda a desarrollar para Android 3.0+ sin causar problemas
con el despliegue a Android 1.6 a travs de Android 2.318.
Asegrate tambin de utilizar los paquetes de la versin 4
en tu aplicacin para proveer de mximo soporte a versiones
previas. Tambin hay una versin para Android 2.1 y versiones
superiores, la librera v7 appcompat, que ofrece una manera de
implementar la ActionBar; vase su documentacin online19.
Desarrollar tu aplicacin para Android 3.1+ te permitir
crear widgets flexibles en tamao para la pantalla de inicio,
conectar por USB a muchos dispositivos, por ejemplo cmaras
digitales y gamepads. Las versiones Android 4.X introducen
interesantes novedades, como notificaciones expandibles,
widgets de bloqueo de pantalla y una cmara con deteccin de
rostros. El Material Design UI Toolkit fue introducido con Android 5.0 e incluye nuevos widgets y otros elementos para usar
en telfonos, wearables y otras plataformas. El entorno nativo
Renderscript (introducido en la 3.1) ha cambiado mucho y no
proporciona la capacidad de renderizar grficos, 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 travs de la Play


Store y aade libreras, como por ejemplo la ms reciente de
Google Maps. Si ests interesado en autentificar usuarios,
puede que te interese echar un vistazo a los beneficios que
aporta tener datos reales de usuarios en tu aplicacin con
Google+ Sign. La funcionalidad se gestiona va 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 aplicacin es ejecutarla en
el emulador o en un dispositivo. Es posible depurarla, si es
necesario, a travs de la herramienta ddms.
Todas las versiones del sistema operativo Android estn
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 aplicacin en varios
dispositivos es esencial. La lista de AppBrain21 puede ayudarte
a hacerte una idea de qu dispositivos son los ms populares.
Para automatizar las pruebas, el SDK de Android viene con
algunas herramientas muy tiles22 . Los tests se pueden escribir
con el formato estndar 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
aplicacin 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 automatizacin de pruebas que


permite probar toda la aplicacin. Estas pruebas se pueden
ejecutar tanto en dispositivos virtuales como fsicos.
En la revisin 21 del SDK, Google introdujo finalmente
un framework de automatizacin de pruebas de interfaz ms
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 informacin sobre las vistas. Ejecutar las pruebas
es relativamente fcil: Una vez que hayas escrito tu test, ste
se compila a travs 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 cdigo abierto, como Robotium26,
pueden complementar otros tests automatizados. Robotium
incluso puede ser utilizado para probar archivos binarios
apk si el cdigo fuente de la aplicacin no est disponible.
Roboelectric27 es otra gran herramienta que ejecuta las pruebas
directamente sobre tu IDE en el JVM estndar de tu ordenador.
Tus pruebas automatizadas se pueden ejecutar en servidores
de integracin continua como Jenkins o Hudson. Roboelectric
se ejecuta en una JVM estndar 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 Instrumentacin de Android, y requerirn 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.

Compilacin
Aparte de crear tu aplicacin directamente en el IDE que
prefieras, hay maneras ms cmodas de construir aplicaciones
Android. Gradle29 es actualmente la herramienta de creacin
automatizada con soporte oficial para Android. Tambin 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, vase el
Maven Central Repository31.
El sistema que utiliza Google para publicar libreras para
Gradle se conoce como Android Archive (archivos .aar) y se
puede acceder a l va Android SDK Manager. Tambin puedes
crear tus propias libreras o SDKs utilizando el plugin androidlibrary para Gradle. Una excelente fuente de libreras 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 depuracin o con una de
publicacin. 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 asegrate de no perder tu keystore
o contrasea. Recuerda: puedes utilizar una nica clave para
todas tus aplicaciones o crear una nueva para cada una de
ellas.

Distribucin
Una vez hayas creado tu rompedora aplicacin 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 versin
1.6 en adelante, tambin es compatible con compras desde la
misma aplicacin va Google Wallet, lo que te permite vender
contenido adicional, paquetes de funciones, etctera, dentro
de tu aplicacin utilizando la infraestructura de Android Play33.
Tambin se utiliza por otros portales de aplicaciones
como fuente de metadatos de aplicaciones. Para subir
tu aplicacin a Android Play, el punto de partida es
play.google.com/apps/publish/.
Ests obligado a inscribirte en el servicio a travs de tu
cuenta de Google Checkout y pagar una cuota de inscripcin
de $25 (USD). Una vez aprobado tu registro, puedes cargar

33

developer.android.com/guide/google/play/billing/

Android

49

la aplicacin, aadir imgenes y descripciones, y entonces


publicarla.
Asegrate de que has definido versionName,
versionCode, un icono y una etiqueta en tu
AndroidManifest.xml. Adems, las caractersticas declaradas en el manifiesto (nodos uses-feature) se utilizan para
filtrar aplicaciones para distintos dispositivos.
Una de las novedades ms 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
aplicacin y hacerla pblica a todos los usuarios. An ms,
puedes dirigirlas a pases y dispositivos especficos utilizando
el Developer Console y exportar las estadsticas resultantes
para comprender mejor tu base de usuarios. Utilizando los servicios de localizacin integrados, puedes fcilmente comprar la
capacidad de aadir nuevos idiomas a tu aplicacin (asegrate
de revisar la Localization Checklist34 para obtener informacin
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 mtodos de pago y
pueden dirigirse a grupos especficos de consumidores. Uno de
esas tiendas es la Amazon Appstore, que viene instalada en la
familia de tablets Kindle Fire.

Adaptacin
A medida que la adopcin de Android se incrementa, tambin
lo hace un ecosistema de elementos especficos 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 integracin slida que posibilita
una fantstica experiencia de usuario, pero tambin negativo,
incrementa la fragmentacin del ecosistema. A menudo, las
tiendas de los fabricantes bloquean la descarga de aplicaciones
genricas que utilicen servicios de terceros.
Un ejemplo es el ecosistema de la Kindle Fire de Amazon,
que es bsicamente 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 libreras propias
de Amazon que ofrecen funcionalidades similares. Las razones
tras esto son sencillas los dispositivos Kindle no se comercializan con las libreras 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. Adems, 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, tambin
verifican todas aquellas que se suben a su Appstore.

Android

51

A continuacin, un breve resumen que te ayudar a localizar


los recursos que puedas necesitar:
Fabricante

Documentacin

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 nmero 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
estndar, pero sin software personalizado, que se distribuye
directamente a travs de la Play Store de Google y permite a
los usuarios de los dispositivos ms innovadores y novedosos
(bleeding edge devices) utilizar servicios Google.

Monetizacin
Adems de venderla en alguna de las muchas tiendas de
aplicaciones , hay muchas maneras diferentes de monetizar
una aplicacin Android. Una forma viable es mediante el uso
de la publicidad, que puede ser basada en clics o en nmero
de visitas, y puede proporcionar un ingreso estable. Aparte,
hay diferentes posibilidades para facturar desde la aplicacin,

Android

52

como el servicio propio de facturacin de Google36, que


utiliza la tienda Google Play, el Mobile SDK de PayPal37 o la
Librera Mobile Payments Library de PayPal38. La mayora de
los servicios difieren en las comisiones por transaccin y las
posibilidades que ofrecen, por ejemplo suscripciones, pagos
paralelos o pagos previamente aprobados. Si buscas aadir una
funcionalidad muy atractiva a tu aplicacin, evala implementar el SDK de card.io39 para el escaneado de tarjetas de crdito
con la cmara del mvil.
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 monetizacin.
Asegrate de verificar que el mtodo de pago de tu
eleccin est en armona con los trminos y condiciones de
las diferentes tiendas en las que deseas publicar la aplicacin;
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
Introduccin
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 da con los sistemas operativos mviles competidores: iOS,
Android y Windows Phone 8. Los dispositivos BB10 fueron
introducidos en el mercado en el primer trimestre del 2013
(sin planes de actualizacin 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 fsico como
virtual.
Aunque el sistema operativo es nuevo, su ncleo 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 versin 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 gestin de mviles BlackBerry Enterprise
Server.
La ltima versin 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 tecnologas:

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 documentacin frecuentemente actualizada1. Tambin se publica el eBook gratuito
Learn BlackBerry 10 App Development2 . y, en trminos de
programacin, mucho cdigo online3 y varios proyectos de
ejemplo en GitHub4
Un punto importante de descontento, por el que BlackBerry
ha recibido muchas crticas, es que BB10 ya no soporta la
anterior API de Java. Esto significa que los desarrolladores
Java que escriban cdigo para dispositivos BlackBerry
anteriores a BB10 deben reorientarse a una de las tecnologas
anteriormente mencionadas. Como no todos los desarrolladores
estn dispuestos a hacer esto, hay cierta preocupacin
respecto a que un gran nmero de ellos abandonen el barco"
y se reorienten a las plataformas de la competencia. Adems,
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 va de migracin para las aplicaciones de la


generacin actual, los desarrolladores tendrn que volver a
escribirlas para la nueva plataforma. Esto es necesario porque
el ncleo 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 fcilmente
sus aplicaciones. En cualquier caso, algunas aplicaciones
migradas no tienen especial valor y bien podran desaparecer
masivamente de la tienda de aplicaciones en bloque en vez de
aparecer otras nuevas6.
C Native SDK
El BlackBerry SDK es compatible con estndares abiertos
que permiten a los desarrolladores llevar sus aplicaciones ya
existentes a la plataforma. Para comenzar tienes el sitio web
Native Dev7. Escribir cdigo con el SDK nativo permite que tu
aplicacin est tan cerca del hardware como sea posible y, por
tanto, mejorar el rendimiento y la integracin con BB10. El
BlackBerry 10 SDK incluye todo lo necesario para desarrollar
programas que se ejecutan en BlackBerry OS 10: un compilador,
un enlazador, libreras, y un extenso entorno de desarrollo
integrado (IDE). Est disponible para Windows, Mac y Linux.
Los pasos bsicos 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 opcin.
Cascades ha sido diseado para permitir a los desarrolladores
crear una aplicacin BlackBerry con facilitando la implementacin de la interfaz de usuario. El marco Cascades separa la
lgica de aplicacin del motor de renderizado de la interfaz. En
la aplicacin, 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 aplicacin, 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 caractersticas:
Interfaz de usuario Cascades y APIs de plataforma
Herramientas para desarrollar tu interfaz en C++, QML, o
ambos
Capacidad de beneficiarse de controles bsicos de la
interfaz y crear nuevos
Comunicacin por redes mviles y WiFi
Grabacin y reproduccin de archivos multimedia
Almacenamiento y retorno de datos
Gestin de certificados y herramientas criptogrficas

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 seales en Qt permiten una potente y flexible
comunicacin entre objetos. El framework Cascades incorpora
caractersticas 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, slo tienen que definir la duracin
y el tipo de una animacin, 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 construccin de interfaces de usuario, existe una
herramienta llamada Cascades Builder. Est incluida en el QNX
Momentics IDE y permite a los desarrolladores disear una
interfaz de usuario mediante una interfaz visual. Cuando se
realiza un cambio en el cdigo, se puede ver el efecto inmediato en la vista de diseo. El desarrollador no tiene necesidad
de programar un control, puede simplemente arrastrar y soltar.
Si eres un diseador, el Cascades Exporter11 es para t. Este
plugin de Adobe Photoshop recorta y reescala las imgenes
y las empaqueta en un archivo tmz (en recursos de imagen
comprimidos, recortados y mejorados con metadatos). Estos
archivos de recursos puede ser utilizados fcilmente por un
desarrollador con el QNX Momentics IDE.
Para ms informacin, 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 caractersticas,
permite escribir pginas web regulares y luego compilarlas
como aplicaciones nativas de BlackBerry con facilidad. La
nueva versin de WebWorks, la 2.0, encaja perfectamente
con el entorno Apache Cordova, tambin 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 pgina web estndar se visualice como
una aplicacin nativa BlackBerry. En esta aproximacin debes
utilizar atributos de datos para mejorar el cdigo HTML. Como
alternativa a bbui.js tambin se soporta jQueryMobile con
un tema de BB10, y el SenchaTouch framework15 tambin es
compatible con BB10.
Es bueno saber que BlackBerry ofrece soporte WebGL
acelerado por hardware, y que puedes realizar la depuracin y
perfilado del dispositivo mvil a travs del WebInspector como
una funcin integrada.
Para obtener ms informacin 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 versin 10.3.1 de BB10 ya no soporta Adobe Air.17
Android en Tiempo de Ejecucin (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 aplicacin se ejecute en BlackBerry 10.
Como desarrollador, tendrs que utilizar una de las herramientas siguientes para volver a compilar la aplicacin. Estas
herramientas tambin comprueban cmo es de compatible tu
aplicacin para ser ejecutada en BlackBerry 10, ya que algunas
de las APIs del SDK de Android pueden no ser compatibles, o
pueden serlo slo parcialmente con la plataforma BlackBerry.
Plug-in de recompilacin para Eclipse
La principal ventaja de la utilizacin 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. Tambin
puedes usar este plug-in para firmar tu aplicacin antes de
distribuirla. Si deseas probar la aplicacin sin firmarla, puedes
utilizarlo para crear e instalar un token de depuracin 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
rpidamente a compilar tu aplicacin para Android utilizando
slo tu navegador. Puedes probar la compatibilidad de la aplicacin, volver a compilarla como un archivo BAR compatible
con BlackBerry Tablet OS o BlackBerry 10, y despus firmarlo
para que pueda ser distribuido a travs de la tienda BlackBerry
App World.
Herramientas recompiladoras de lnea de comandos
Una de las principales ventajas de utilizar el BlackBerry
SDK para aplicaciones de Android es que se puede utilizar para
recompilar mltiples aplicaciones Android desde el formato
de archivo APK al formato de archivo BAR. Adems, tambin
puedes utilizar este conjunto de herramientas de lnea de comandos para comprobar la compatibilidad de tus aplicaciones
Android, firmarlas, crear tokens de depuracin y un certificado
de desarrollador.
Si deseas obtener ms informacin acerca de cmo ejecutar
aplicaciones Android en BB10, visita el sitio web18.
BlackBerry App Generator
Si no eres un desarrollador, BlackBerry proporciona una
manera fcil de generar una aplicacin sencilla para BB10 con
el BlackBerry App Generator19. Esa pgina web genera una
aplicacin basada en fuentes de informacin como

18

developer.blackberry.com/android

19

blackberryappgenerator.com/blackberry/
BlackBerry 10

63

RSS feeds
Tumbler
Facebook
YouTube
Flickr

y otras. Genera una aplicacin master-detail que se puede


personalizar con un logotipo y una seleccin de colores. Para
una aplicacin de noticias sencilla este enfoque es totalmente
correcto, pero no esperes obras maestras tipo CNN.

Testeo
BlackBerry contina proporcionando un simulador para telfonos BB10 como una descarga independiente20. Este simulador
permite ejecutar una aplicacin en un PC/Mac/Linux de la
misma manera que se ejecutara en un dispositivo BlackBerry
real. Para asistirte en tus pruebas, el simulador viene con una
aplicacin llamada controller. Esta utilidad te permite simular
cosas tales como el nivel de la batera, la posicin GPS, NFC o
la inclinacin del dispositivo y, por lo tanto, comprobar cmo
reacciona tu aplicacin en escenarios reales.

Firma
Muchas clases y caractersticas de la plataforma de nivel de
seguridad crtico (por ejemplo, la creacin de redes o APIs
de archivo) requieren que la aplicacin est firmada para que
el desarrollador pueda ser identificado. Este ltimo paso en
el desarrollo de una aplicacin para BlackBerry a menudo es
difcil.
20

developer.blackberry.com/devzone/develop/simulator/
BlackBerry 10

64

Si quieres probar tu aplicacin sin firmar en un dispositivo


fsico, es necesario solicitar un archivo llamado token de
depuracin. Esta token permite a un dispositivo especfico
BB10 ejecutar aplicaciones sin firmar. Para realizar este
procedimiento de configuracin necesitas solicitar un archivo
de firma (cliente-PBDT-xxxxx.csj) a travs del BlackBerry Orden
Key Form21. Despus de recibir el archivo por email podrs
instalar un token de depuracin con las herramientas de lnea
de comandos. Despus de realizar esta configuracin, tambin
podrs ejecutar aplicaciones sin firmar en tu dispositivo. Ten
en cuenta que esto requiere ser hecho en cada dispositivo por
separado.
Si quieres publicar tu aplicacin en BlackBerry App World
tambin necesitas una clave de firma, que se solicitan a travs
del BlackBerry Orden Key Form22 . Para ayudarte con este
proceso de configuracin, BlackBerry ofrece una gua paso a
paso en esta pgina 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

Distribucin
Al igual que con todas las versiones anteriores del sistema
operativo de BlackBerry, las aplicaciones para BB10 se
distribuyen a travs 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 participacin en los ingresos del 70%.
La otra opcin es una distribucin corporativa. Esto te
permite lanzar una aplicacin interna en tu organizacin en
lugar de ponerla a disposicin pblica para cualquier usuario,
lo cual es adecuado para aplicaciones B2B. Si deseas obtener
ms informacin acerca de la distribucin 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 mviles? La
Fundacin Mozilla pens que s y desarroll Firefox OS1, un
sistema operativo de cdigo abierto basado en Linux enfocado
a telfonos de gama media. Su primera versin fue publicada
en febrero de 2013.
Seis meses despus se lanz el primer dispositivo Firefox
OS disponible para el mercado de masas, el ZTE Open, que
se comercializa al precio de 80 dlares 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 Japn el primer dispositivo basado
en Firefox 2.02, publicitado como el primer telfono de gama
alta con Firefox OS.
Las aplicaciones Firefox estn 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
fcil para un desarrollador web comenzar a escribir aplicaciones
nativas para se sistema. En ese sentido, necesitars conocer
la API de JavaScript que provee Firefox OS y aprender cmo 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 bsicamente en tres componentes


principales:
Gonk: El kernel de bajo nivel de Linux y la capa de
abstraccin de hardware (HAL). En teora, un comercializador de hardware slo necesita portar el Gonk a su hardware
para hacerlo compatible con Firefox OS.
Gecko: El runtime de aplicacin. Gecko parsea, ejecuta
y renderiza HTML, JavaScript and CSS. Todos los accesos
al hardware necesarios para proveer a la aplicacin de
funcionalidad son gestionados por este runtime. Incluye
un paquete de red, paquete grfico, motor de diseo,
mquina 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 estndar. Se
comunica con el sistema operativo a travs de las Open
Web APIs.

Desarrollo
Hay dos maneras de crear una aplicacin para Firefox OS:
Aplicaciones alojadas y aplicaciones empaquetadas. En
ambos casos es necesario escribir el cdigo en HTML, CSS y
JavaScript. Las aplicaciones alojadas son, bsicamente, un
sitio web. Son fcilmente actualizables, pero a menudo tienen
acceso limitado a la web API y necesitan conexin 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 aplicacin.
Al contrario que las webapps estndares, las aplicaciones
en Firefox OS necesitan un manifiesto4 . Se trata de metadatos
para tu aplicacin que indican su nombre, descripcin, iconos e
informacin adicional.
ste es el contenido mnimo que debe tener un manifiesto:
{
"name":"Hola mundo",
"description":"Una app ms...",
"launch_path":"/index.html",
"icons":{
"128":"icon.png"
},
"developer":{
"name":"Tu nombre",
"url": "http://..."
},
"default_locale":"en"
}

La WebAPI de Firefox5 ofrece acceso a: vibracin, geolocalizacin, estado de la batera, alarma, IndexedDB, sensor de
proximidad, sensor de luz ambiente y un archivo. Utilizando la
API puedes, por ejemplo, acceder al estado de la batera simplemente realizando la llamada navigator.battery.level
en JavaScript.
Si necesitas ms funcionalidades de las que la WebAPI
ofrece, puedes usar Activities. Mozila usa el objeto MozActivity,
similar a cmo Android utiliza Intents: se le preguntar al
usuario qu aplicacin 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 continuacin, un ejemplo de cmo crear un SMS:


var sms = new MozActivity({
name: "new",
data: {
type: "websms/sms",
number: "+46777888999"
}
});

Y otro de cmo acceder a la galera de imgenes:


var pick = new MozActivity({
name: "pick",
data: {
type:
}
});

Simulacin 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 cdigo y proporciona ms asistentes de GUI, tales
como el editor de manifiesto. An as, es muy recomendable no
confiar ciegamente en el simulador: por ejemplo, dispone de
mucha ms 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

Distribucin
Mozilla ha creado una AppStore global llamada Marketplace8.
Tu aplicacin ser revisada conforme a las directrices de
Mozilla9. Una vez est publicada, obtendrs un 70% de los
beneficios que genere.

Aprende ms
Tu recurso principal para conocer ms acerca de cmo desarrollar para Firefox OS ser la red Mozilla Developer10. Una breve
introduccin, que incluye tutoriales en vdeo acerca de como
comenzar est disponible en11. Andr Fiedler tambin ofrece
informacin esclarecedora para los no-iniciados en su presentacin 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 informacin 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 ms 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 ao anterior1. En enero
de 2015, Apple anunci que 1,4 millones de aplicaciones
estn disponibles en iOS y que la facturacin de aplicaciones
aument otro 50 por ciento en un ao: El total de ingresos
por aplicaciones iOS en 2014 suma 10 mil millones de dlares,
lo que significa que los desarrolladores iOS han ganado un
acumulado de 25 mil millones de dlares utilizando la Apple
AppStore2 .
Una pregunta habitual es por dnde empezar para convertirse en un desarrollador iOS. En este captulo mostrar
lo que se requiere para configurar un entorno de desarrollo y
algunas de las diferentes opciones disponibles para escribir
aplicaciones. Tambin dar sugerencias sobre recursos para
ayudar a desarrollar tus habilidades en el menor tiempo posible.
El captulo 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 Mvil


El 9 de enero del 2007, Steve Jobs present una nueva
categora de producto para la entonces empresa de ordenadores
y dispositivos musicales. Seis aos despus, el New York Times
inform de lo que no se haba sabido durante tal anuncio:
el da antes de la demostracin Jobs an no poda realizarla
de inicio a fin en un iPhone (slo existan alrededor de 100),
"rechazaba llamadas al azar, perda la conexin 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 poda ejecutarlo. En noviembre del 2010,
con el lanzamiento de la cuarta generacin del sistema
operativo, Apple cambi el nombre a iOS para coincidir con el
lanzamiento del primer iPad. Esta versin fue nombrada iOS4
y desde entonces se ha lanzado una nueva versin cada ao,
culminando en la versin 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 integracin con dispositivos iOS y Mac en
Yosemite permite a los usuarios iniciar tareas, como la creacin
de correos electrnicos, en un dispositivo y acabarlas en otro
a travs de Handoff. Algunos de los nuevos entornos son
HealthKit que permite a los usuarios gestionar la informacin
relacionada con su salud, HomeKit para la comunicacin 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 aplicacin 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
Adems de vender ms de 800 millones de dispositivos iOS,
un plus a favor de Apple es la alta tasa de adopcin de cada
versin de iOS poco despus de su lanzamiento. Esto permite
a los desarrolladores centrarse en la versin ms 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
despus del lanzamiento de iOS 8, Apple anunci que haba
sido adoptado por el 48% de todos los dispositivos iOS5, con
un 46% en iOS7, dejando slo un 6 % de los dispositivos con
una versin anterior de iOS. Esto contrasta con la versin de
KitKat, el sistema operativo de Android, que necesit ms de
un ao para alcanzar el 34% de los dispositivos Android6.
Dispositivos Ejecutando iOS
En lugar de enumerar todos los dispositivos iOS que Apple ha
creado, aqu estn los dispositivos actuales que soportan iOS
7 y 8, ya que son en los que un nuevo desarrollador debera
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 generacin, pantalla de 4
iPad - segunda a cuarta generaciones, Air, Air 2
iPad Mini - primera generacin, Mini 2, Mini 3
Apple TV (SDK slo disponible para desarrolladores de
terceros)
Apple Watch
Encontrars una lista detallada de los dispositivos iOS, sus
capacidades y las versiones de iOS compatibles en Wikipedia7.
Fundamentos de las Aplicaciones iOS
Como la mayora de los sistemas operativos, la arquitectura
iOS se define por capas de tecnologas para permitir que
tu aplicacin se ejecute en un dispositivo sin comunicarse
directamente a nivel de
hardware (ver figura).
Estas tecnologas se
uch
pueden pensar en capas o
a To
Coco
interfaces que estn 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 comn en trminos de entornos, herramientas
de desarrollo, y patrones de diseo.
Apple potenci y ampli el entorno principal para el
desarrollo de aplicaciones de OSX, Cocoa, y ha aadido soporte
para las caractersticas nicas de iOS como los gestos tctiles,
bautizndolo como Cocoa Touch. En Cocoa Touch se incluyen
entornos para construir interfaces, sensores como el acelermetro y la gestin de redes y datos.
La App Store
El mtodo principal para el despliegue de aplicaciones es
la App Store. Cada aplicacin presentada es revisado por el
equipo de Apple para garantizar que se cumplen los requisitos
y normas de la compaa. 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 cdigo est firmado.
Apple es muy estricta respecto a cmo las aplicaciones de
terceros se ejecutan en iOS y utiliza la tcnica de Sandbox
para garantizar la seguridad de las mismas y evitar que cdigo
malicioso o con errores comprometa el sistema operativo, otras
aplicaciones o el dispositivo. Piensa en un Sandbox como una
barrera virtual alrededor de la aplicacin que define a qu
los recursos puede acceder la aplicacin. Por ejemplo, una
aplicacin no tiene acceso a los directorios de archivos o recursos del sistema de otra aplicacin que no sean accesible va
entornos del SDK. Apple ha dado ms control al usuario para
conceder acceso a sus datos (es decir, contactos, calendarios,
fotos) y localizacin 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 mviles se clasifican comnmente como "nativa" "mobile web" o "hbrida". En general, una aplicacin iOS
nativa se construye utilizando la plataforma de Apple, mientras
que una aplicacin hbrida utiliza una plataforma de terceros
como Xamarin, Appcelerator o Phone Gap. Estas plataformas
tratan de hacer posible el desarrollo para mltiples plataformas
mviles utilizando un nico lenguaje y conjunto de herramientas. Aplicaciones web mviles suelen utilizar estndares HTML5
para crear algo que aparente ser una aplicacin nativa, pero
ejecutable en el navegador web del dispositivo.
Junto con el SDK para desarrollar en iOS, Apple tambin
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 versin 3 de Xcode soport el primer iPhone SDK en 2008, y
la versin ms reciente es Xcode 6, lanzado con iOS 8 en septiembre del 2014. Xcode es un entorno de desarrollo, pruebas
de rendimiento y herramientas de medicin utilizados durante
todo el ciclo de vida de desarrollo de aplicaciones. Interface
Builder es una herramienta de diseo visual utilizada para
disear y estructurar vistas de la aplicacin sin necesidad de
escribir cdigo y se integra con Xcode. Tambin 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 fsicos.
iOS

79

Interface Builder
Una discusin acalorada entre los desarrolladores iOS es si es
mejor utilizar el Interface Builder para disear visualmente
el flujo de interfaz de usuario y la aplicacin o llevar a cabo
todo de forma manual con el cdigo. En el pasado, esto poda
ser una preferencia personal, pero con nuevos dispositivos
y tamaos de pantalla como el Apple Watch y iPhone 6,
Interface Builder resulta cada vez ms necesario. Una de las
principales diferencias entre iOS y Android era precisamente
no tener que desarrollar para muchos tipos de dispositivos y
tamaos de pantalla. Sin embargo, esta frontera es cada vez
ms borrosa con iOS8 soportando cinco tamaos 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 tamaos de pantalla. Con cada
nueva versin de Xcode, Interface Builder tambin 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 orgenes en el sistema operativo
NeXTSTEP, desarrollado en la dcada de 1980, de donde se
derivan OSX e iOS. Es un lenguaje de programacin orientado
a objetos que agrega mensajera al lenguaje de programacin
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 ms modernos


como Java o C#. Han habido mejoras incrementales en los
ltimos aos, incluyendo la notacin de puntos de los objetos,
bloques, literales y gestin de la memoria a travs 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 conclusin de que
es necesario un lenguaje ms 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 bsica de un nuevo
lenguaje de programacin cuya existencia slo unas pocas
personas conocan. Se convirti en un foco importante para el
grupo de herramientas para desarrolladores de Apple en julio
de 2013 y, casi un ao despus, Apple anunci en la World
Wide Developer Conference (WWDC) un nuevo lenguaje de
programacin para iOS y OSX llamado Swift. Lattner admite
que Swift est influenciado por otros lenguajes como C #, Ruby,
Haskell, Python y muchos otros9
La razn de que Apple considerara necesario crear Swift fue
que la sintaxis de ese lenguaje moderno es ms concisa y fcil
de aprender para los nuevos desarrolladores de iOS, incluyendo caractersticas 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 estn 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


Adems de proporcionar las herramientas para desarrollar
aplicaciones iOS, Xcode tambin 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 aplicacin
utilizando un depurador. El instrumento de automatizacin se
utiliza para automatizar las pruebas de interfaz de usuario de
tu aplicacin iOS a travs de scripts de prueba escritos por el
desarrollador. Estos scripts se ejecutan fuera de la aplicacin
y simulan la interaccin 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 aadirn 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
Despus de crear una cuenta de desarrollador gratuita en
developer.apple.com, recibirs autorizacin para descargar
Xcode, cdigo de ejemplo, videos y documentacin. Los requisitos para que todas las herramientas Xcode son un sistema
operativo Mac X 10.8 (Mountain Lion) y el SDK de iOS. Esta
configuracin permitir la creacin 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 dlares al ao, lo que tambin
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
tambin 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 guas de referencia y de
programacin completas para aprender a desarrollar aplicaciones iOS y una referencia de clases de todas las clases en
entornos pblicos. La pgina web de la biblioteca est organizada por tipos de recursos, Temas, Estructuras y ofrece
un buscador. Un documento importante para leer antes de
disear tu primera aplicacin es el iOS Human Interface
Guidelines10. Ofrece recomendaciones para desarrolladores,
aprobadas por Apple, sobre el diseo de aplicaciones para
asegurar una experiencia de usuario positiva. La violacin
de estas recomendaciones sera, con toda probabilidad,

10

developer.apple.com/library/ios/documentation/UserExperience/Conceptual/
MobileHIG

11

causa de que tu aplicacin fuera rechazado por la App


Store durante su revisin para publicacin.
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 ms interesantes y complejos para que todos
puedan aprender - y que todos podamos hacer aplicaciones
increbles." El sitio se ha expandido y ofrecer libros de
programacin y tutoriales en vdeo (con una suscripcin
de pago). Suscrbete a su podcast semanal para las ltimas
noticias relevantes para desarrolladores y entrevistas con
lderes de la comunidad de desarrolladores iOS.
iOS.devtools.me es una pgina 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 categoras (es decir, diseo,
grficos, depuracin...), por popularidad, y por novedad.
Tambin se proporciona un boletn semanal de los ltimos
conteidos en el sitio.
iOSDevWeekly.com es una revisin semanal de los mejores
recursos online de desarrollo iOS. David Verwer opera el
sitio y ofrece un boletn electrnico 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 ests listo para
comenzar a aprender caractersticas 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
informacin sobre el desarrollo en iOS a raz de su experiencia como consultor. Tambin es activo en la comunidad
de cdigo abierto, creando herramientas y libreras 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 cdigo abierto.
Formacin con Vdeos Online
Como miembro del Programa para Desarrolladores de Apple,
tienes acceso gratuito a todos los vdeos de la World Wide
Developer Conference, cdigo fuente y presentaciones, disponibles para descargar y transmitir a travs del sitio web o la
aplicacin WWDC iOS de los ltimos aos. Por lo general, Apple
publica los videos el da despus de la presentacin, cuando
antes se necesitaban semanas para para poder acceder tras de
la conferencia anual.
Lynda.com actualmente ofrece ms de 30 cursos en vdeo
va subscripcin sobre la iniciacin al desarrollo iOS, incluidos
cursos para iOS8. El cdigo fuente de los proyectos est
disponible para descargar en funcin del nivel de suscripcin
elegido. Tambin tienen una aplicacin gratuita en la App
Store para ver vdeos en dispositivos iOS.
Un recurso gratuito popular para la formacin de vdeo lo
ofrece la iTunes University como curso semestre, impartido por
la Universidad de Stanford, como iniciacin 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 vdeos se ven


a travs de iTunes o la aplicacin iTunesU en dispositivos iOS
Por ltimo, YouTube tiene un buen nmero 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 ms expertos desarrolladores de iOS estn
activos en Twitter y aportan una gran comprensin sobre las
ltimas tendencias y debates sobre el desarrollo de aplicaciones, adems 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 cdigo abierto
@NatashaTheRobot - autor de la newsletter semanal sobre
Swift "This Week in Swift"13 y contribuidor a la corriente
de cdigo 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 captulo sea
de utilidad en la bsqueda de un punto de partida. Decir que
las cosas cambian rpidamente es un eufemismo con todos
los nuevos dispositivos, los entornos y los servicios que se
han lanzado en los ltimos aos; pero no te dejes intimidar
por la velocidad a la que la tecnologa se mueve dentro del
ecosistema de Apple. La mayor parte de los conceptos bsicos
en el desarrollo de una aplicacin estndar se aplican ahora
igual que como lo hicieron en las primeras versiones de iOS.
Por suerte, hay un sinnmero de recursos disponibles para
empezar y hacer crecer tus habilidades de desarrollo en iOS, y
la mayora de ellos son gratuitos.
Cosas a considerar al crear tu aplicacin iOS "Hola Mundo",
y ms all:
Comenzar con Objective-C o lenguaje Swift?
Tiene ms sentido utilizar Interface Builder para disear
la interfaz o es mejor hacerlo en cdigo?
Aunque el uso servicios de back-end como CloudKit facilita
el desarrollo, me estoy enclaustrando demasiado en la
arquitectura de Apple? Podran eso hacer que una versin
en Android no puediera acceder a ese mismo back-end?
Cules 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 da con las ltimas versiones
de iOS?
Cmo es el entorno actual para ser un desarrollador indie
para iOS a tiempo completo?
Las respuestas a estas preguntas estn ms all del alcance
de este captulo, pero los recursos referidos pueden ayudarte
a esquivar las dificultades en el desarrollo en iOS y ayudarte a
avanzar ms rpido 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
mviles ms antigua que an sigue estando ampliamente
utilizada. J2ME est diseada para funcionar principalmente
en telfonos de gama media, dominando este segmento
del mercado. De todas maneras, esos telfonos se estn
abandonando progresivamente en favor de smartphones con
especificaciones bsicas que ofrecen mejor hardware, APIs y
opciones de monetizacin con un coste similar. Como consecuencia, la popularidad de J2ME ha cado significativamente
en los ltimos aos. Entonces, por qu querras desarrollar
para J2ME? Sobre todo por una razn: el alcance de mercado. A
pesar de que el 72% de todos los telfonos mviles producidos
en el tercer trimestre del 2014 eran smartphones1, la mayora
de los telfonos mviles 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 podra ser una
buena eleccin, especialmente si te diriges a mercados como
algunos pases de frica o la India.
Sin embargo, si su modelo de negocio se basa en las ventas
directas de tu aplicacin, o si tu aplicacin tiene que hacer uso
de las funciones y hardware ms avanzados, las plataformas
para smartphones son la mejor opcin.

1 counterpointresearch.com/marketmonitor2014q3

Java ME (J2ME)

90

Prerrequisitos
Para desarrollar una aplicacin Java ME, necesitars:
El Java SDK2 y un IDE de tu eleccin, por ejemplo Eclipse
Pulsar para Desarrolladores Mviles3, 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 especfico.
Dependiendo de tu configuracin, puedes necesitar un
ofuscador como ProGuard8. Para desarrollos profesionales
considera utilizar una herramientas como Maven9 o Ant10.
Quizs te interese echarle un vistazo a J2ME Polish11, el
framework de cdigo abierto para desarrollar tu aplicacin
para varios dispositivos.
Completar la instalacin y las instrucciones de configuracin
va ms all del alcance de esta gua, consulta la documentacin de las respectivas herramientas.
Tambin puedes descargar y leer los JavaDocs para las
tecnologas y APIs ms 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

mayora de ellos desde www.jcp.org. Para APIs especficas


del fabricante, la documentacin suele estar disponible en la
pgina web del vendedor, (por ejemplo, la de Nokia Asha12).

Implementacin
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 fciles
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 diseados hace una dcada, el conjunto predeterminado
de las capacidades que ofrecen es rudimentario segn los
estndares actuales.
Los fabricantes pueden complementar estas rudimentarias
capacidades mediante la implementacin 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 Ejecucin
Las aplicaciones J2ME son llamados MIDlets. El ciclo de vida
de un MIDlet es muy simple: slo se puede iniciar, pausar y
destruir. En la mayora de dispositivos un MIDlet se pausa
automticamente cuando se minimiza, no se puede ejecutar
en segundo plano. Los MIDlets tambin se pueden ejecutar
aisladamente unos de otros y estn muy limitados en su interaccin con el sistema operativo subyacente. Estas capacidades
estn disponibles slamente a traves de JSRs opcionales (por
ejemplo, JSR 75) y APIs especficas de cada proveedor.
Creando Interfaces de Usuario
Puedes crear la interfaz de usuario de tu aplicacin de varias
formas:
1. Componente LCDUI de alto nivel: utilizas componentes
estndares de la interfaz, tales como formularios y listas
2. Componentes LCDUI de bajo nivel: controlas manualmente
cada pxel de tu interfaz utilizando funciones grficas de
bajo nivel
3. SVG: dibujas la interfaz en SVG y usas las APIs de JSR
22616 o JSR 28717
Adems, algunos fabricantes ofrecen extensiones adicionales
de interfaz de usuario. Por ejemplo, la ltima serie de telfonos
de Nokia (Nokia Asha) utiliza su propio paradigma de interfaz18.
Tambin 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 diseo 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 resolucin de pantalla para Java ME vara desde los
176x208/220 hasta los 360x640, siendo la ms popular
240x320. Gestionar tantas resoluciones diferentes puede ser
un reto, pero utilizando las herramientas mencionadas puedes
crear interfaces de usuario que escalen automticamente. Crear
UIs personalizadas para cada resolucin es posible, pero no
recomendable: consume gran cantidad de tiempo, es propenso
a errores y elevado en costes.
El material grfico debe estar optimizado siempre. Una
herramienta gratuita excelente es PNGGauntlet22 .

Testeado
Debido a la fragmentacin de los dispositivos, probar las
aplicaciones es vital. Ponlas a prueba en una combinacin
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 automtico
Hay varios entornos de pruebas unitarias para Java ME,
incluyendo J2MEUnit25, MoMEUnit26 y CLDC Unit27; herramientas avanzadas como JInjector28 aportan control sobre el cdigo
y validacin 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 estndar. En las siguientes secciones
describimos diferentes estrategias para portar tus aplicaciones
a diferentes dispositivos y plataformas Java ME.
Mnimo Comn Denominador
Puedes prevenir muchos problemas de portabilidad si limitas la
funcionalidad de tu aplicacin al mnimo comn denominador.
Esto normalmente implica CLDC 1.0 y MIDP 1.0, o CLDC 1.1 y
MIDP 2.0 si slo vas a publicar tu aplicacin en los pases/
regiones ms desarrollados.
Aunque sta aproximacin 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 debers 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 fragmentacin, adaptando de forma automtica
tu aplicacin a diferentes dispositivos y plataformas. Para
conseguir esto, ofrecen libreras cliente en tiempo de ejecucin
y herramientas en tiempo de compilacin (tales como cross
compilers) muy fiables.
Los buenos entornos para portar te permiten usar cdigo
especfico de plataformas y dispositivos en tus proyectos. En
otras palabras: un buen entorno no oculta la fragmentacin de
dispositivos, sino que la hace ms 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 tambin es posible
con la herramienta de cdigo abierto MoSync SDK30.
Para obtener ms informacin acerca del desarrollo multiplataforma y las herramientas disponibles, consulta el captulo
"Hacia Multiplataforma".

Firmado
El estndar de Java para dispositivos mviles diferencia entre
las aplicaciones que han sido firmadas y las que no. Algunas
funciones de los telfonos estn disponibles slo para las
aplicaciones de confianza.
Las aplicaciones firmadas por el fabricante de un dispositivo
o un oeprador de telefona disfrutan del nivel ms alto de seguridad y pueden acceder a todas las APIs de Java disponibles
en el telfono.

29

http://j2mepolish.org j2mepolish.org

30

http://mosync.com mosync.com
Java ME (J2ME)

96

Las aplicaciones firmadas por JavaVerified31, Verisign32 o


Thawte33 estn en el nivel ms bajo de seguridad, y aquellas
no firmadas estn en el nivel ms bajo.
Qu funcionalidades quedan afectadas y qu ocurre si la
aplicacin no est firmada depende principalmente de su
implementacin; ms an, no todos los telfonos tienen todos
los certificados raz necesarios. El resultado es un buen lo, as
que considera firmar tu aplicacin slo cuando sea necesario.
En algunos casos una tienda de aplicaciones puede ofrecerse a
firmar por ti, como es el caso de Nokia Store.
Otra opcin es considerar el uso de un proveedor de
servicios de certificacin y pruebas, dejando la parte compleja
para ellos. Intertek34 es probablemente el mayor proveedor de
este tipo.

Distribucin
Las tiendas de aplicaciones son probablemente la forma ms
eficiente de distribuir tus aplicaciones. Algunas de las tiendas
ms eficaces son:
Mobile Rated35 es un proveedor de aplicaciones no
dependiente de las operadoras.
GetJar36 es uno de los distribuidores ms antiguos de
aplicaciones mviles, y no slo 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 migracin del contenido
comenz en Enero.
Las operadoras tambin participan, tales como Orange38 y
O239.
Se puede encontrar una lista de las tiendas de aplicaciones
disponibles (no slo las que venden aplicaciones J2ME) en el
WIP App Store Catalogue40. Vase tambin el captulo especial
sobre tiendas de aplicaciones de esta gua para obtener ms
informacin.

Aprende Ms
Si quieres aprender ms sobre el desarrollo en Java ME, a
continuacin tienes algunos recursos que te pueden ayudar.
Online
Como Java ME es una de las plataformas mviles ms antiguas
que todava se utilizan, es fcil 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 aos se han llegado a escribir un buen
nmero 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 aos.

Java ME (J2ME)

99

Tizen
El Ecosistema
Tizen es un sistema operativo de cdigo abierto basado en
Linux y diseado para ser ejecutado en smartphones, netbooks,
smartwatches, sistemas de infotenimiento en vehculos (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 tambin basados en Linux.
Samsung tambin aprovech Tizen para fusionar en l los
restos del abandonado bada OS, aportando un entorno para
aplicaciones nativas. Tizen, como marca de la Fundacin Linux,
fue anunciado por la Asociacin Tizen en Diciembre del 2011,
y la versin 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 mvil 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 cmara 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 ao ms 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 utilizarn Tizen.

Tizen

101

Desarrollo
El principal objetivo de Tizen es ser un sistema operativo
estndar para aplicaciones escritas en HTML5, utilizado por
el navegador web de Tizen, actualmente considerado la mejor
implementacin de HTML5 en un dispositivo mvil. Tizen tambin es compatible con aplicaciones nativas en C++, permitindote sacarle el mximo partido al hardware de los dispositivos.
Ambos caminos de desarrollo estn soportados por una gran
variedad de frameworks y libreras populares, como JQuery, que
suponen un buen punto de inicio para desarrollar tu primera
aplicacin Tizen.
Los desarrolladores de aplicaciones web pueden utilizar una
lista completa de funcionaldiades HTML5, APIs de dispositivos
Tizen y libreras (como JQuery y JQuery Mobile) para crear
aplicaciones atractivas. Si ya has creado web apps con para
bada, podrs usar la mayor parte del cdigo 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 reconocern las
bases de ste SDK: el SDK de Samsung bada. Tambin tienes un
editor de cdigo, diseador de interfaces y un emulador, todo
listo para usar. Para las aplicaciones web tambin puedes usar
el XDK de Intel, si lo prefieres.
Cambios en la versin 2.3
Despus de casi un ao 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 construan aplicaciones en un marco de C ++ llamado OSP que ya fue utilizado
por Samsung para su bada smartphones. Esto haca que fuera
fcil para los desarrolladores de bada portar sus aplicaciones
Tizen

102

a Tizen. En la versin 2.3 OSP ha desaparecido y los desarrolladores tienen que utilizar EFL para aplicaciones nativas. Hay
rumores de que pronto se lanzar una librera 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 versin 2.3 es el uso de UTA (Tizen Advanced
UI) en vez de jQuery (que todava se puede utilizar se desea)
y la posibilidad de que crear aplicaciones para smartphones y
wearables con un solo SDK.

Testeando tu aplicacin
Las mejoras pruebas son aquellas que realizan en un dispositivo. En el momento de escribir estas lneas, tu nica
opcin es conseguir uno de los pocos dispositivos de pruebas
para Tizen de Samsung, el RD-PQ o el RD-210, pero es difcil
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 telfonos Tizen en
el mercado de masas. El simulador ofrece una aproximacin
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
ms cerca de la experiencia real con el dispositivo y puede ser
usado para testear aplicaciones nativas. Es una mquina virtual
basada en QEMU y ejecutando una imagen de una instalacin
Tizen real.

Tizen

103

Para aquellos casos en los que un dispositivo real sea


necesario, puedes usar el Samsung Remote Test Lab1. Los
laboratorios estn situados por todo el mundo y te dan la
posibilidad de conectar de manera remota a dispositivos desde
tu Tizen SDK.

Distribucin
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 abrindolos en el explorador de archivos del
dispositivo. El punto principal de distribucin de aplicaciones
ser la TizenStore2 .En contraste respecto a la Apple Appstore,
Google Play Store y Microsoft Windows Phone Market, no
necesitars realizar ningn pago para convertirte en desarrollador registrado en la Seller Office3. Todas las aplicaciones propuestas para venta sern revisadas de acuerdo a las directrices
de la Tizen Store. Normalmente, la certificacin lleva entre 2 y
3 das, dependiendo de la complejidad de la aplicacin.

Aprende Ms
Como desarrollador, tu primera parada debera ser developer.
tizen.org. Ese sitio aloja toda la documentacin, herramientas
y servicios de soporte para el desarrollo en Tizen. Tambin
podrs 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 an mayor,
junto con una tienda de aplicaciones, las API para aplicaciones
y herramientas universales universales. Con Windows 10 este
modelo no slo se extiende a telfonos, tabletas y PCs, sino
que tambin ser capaz de incluir televisores a travs de la
Xbox Uno y dispositivos incrustados. Windows 10 ya est
disponible como versin preliminar para desarrolladores y
saldr a la venta a mediados de 2015.

El Ecosistema
Microsoft cambi el ecosistema en el ao 2014 al comprar la
divisin Devices and Services de Nokia, incluyendo la lnea
de telfonos Lumia. Microsoft tambin elimin los costes de
licencia asociados con la produccin de telfonos y pequeas
tabletas de Windows. Como resultado, se ha anunciado una
nueva gama de dispositivos que sern lanzados al mercado
por los comercializadores regionales. Es an una incgnita
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 despus de Android en algunos pases, entre ellos Italia
y Argentina1. Windows tambin logr reducir la brecha en
las aplicaciones; para agosto de 2014, haba ms 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 tecnologas
pueden ser utilizadas en una misma aplicacin. Adems,
puedes crear aplicaciones HTML5 y JavaScript utilizando las
correspondientes WinRT JavaScript APIs, aunque el desarrollo
web no estn incluido en este captulo. Por ltimo pero no
menos importante, puedes crear aplicaciones Windows Phone
sencillas sin programar utilizando Windows Phone App Studio4 o
la aplicacin 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 mdulo de tu aplicacin.
Si quieres utilizar DirectX con C# debers usar SharpDX.org,
anxframework.codeplex.com o una librera para juegos basadas
en las mismas, por ejemplo monogame.codeplex.com.
Aunque el escenario ms habitual ser emplear XAML
para aplicaciones y DirectX para juegos, tambin puedes
crear juegos en XAML y aplicaciones DirectX, dependiendo de
tus necesidades, as como incluir Direct3D en tu aplicacin
3 visualstudio.com
4 apps.windowsstore.com
5 microsoft.com/projectsiena

Windows

107

XAML; podras utilizarlo para mostrar un modelo en 3D en una


aplicacin XAML, o crear atractivos mens con Silverlight en un
juego creado en DirectX.
Histricamente, las aplicaciones para Windows Phone
estaban creadas con Silverlight, un modelo de aplicaciones muy
similar a la moderna aproximacin XAML. Aunque las aplicaciones basadas en WinRT son el futuro, Silverlight an ofrece
mayores opciones de integracin con Windows Phone 8.1.
Paradigma de Diseo de Metro
Microsoft ha liderado el paradigma de diseo "flat", que
tambin ha influenciado fuertemente a Android e iOS. Su
caracterstica ms obvia es su interfaz nica y fcil de usar,
que se centra en tipografa 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 atencin. Tambin debes abstenerte de utilizar
todos los pxeles disponibles, y tener en cuenta que los
espacios en blanco dan equilibrio y nfasis al contenido.
Alive in motion aade profundidad a un diseo 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 diseo 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 diseo debido a problemas legales, los nombres
alternativos como 'Modern UI' no han conseguido sustituirlo.
Debers aceptar los modernos principios de diseo Metro en tu
aplicacin, sobre todo cuando portes aplicaciones ya existentes. Los diseadores encontrarn inspiracin e informacin
en design.windows.com as como en design.windows.com.
Un aspecto importante de la experiencia de usuario son los
live tiles, pequeos widgets que residen en la pantalla de
inicio. Puedes actualizarlos mediante programacin o incluso
remotamente mediante notificaciones push.

Integrarse en la Plataforma
La plataforma Windows Phone ofrece numerosas funcionalidades, incluida la pantalla de bloqueo, la cartera mvil, y la
ubicacin. En el hardware se incluyen sensores, Bluetooth,
y la deteccin de proximidad; y las aplicaciones pueden
utilizar extensiones para incrustar la aplicacin en la experiencia de Windows Phone. Obtendrs ms informacin en
msdn.microsoft.com/en-us/library/windows/apps/hh202969.
Las aplicaciones soportan las 'live tiles', mostrando
informacin de manera arbitraria que puede ser actualizada
va 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 cmara, llamadas 'lenses'7 o integrar la her-

7 msdn.microsoft.com/library/windowsphone/develop/jj206990

Windows

109

ramienta de bsqueda8. Podrs encontrar informacin detallada


en la documentacin de integracin9.
En las aplicaciones universales hay contratos10 que ofrecen
funcionalidades similares: puedes gestionar extensiones de
archivo especficas, 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 pgina debe haber un modelo de vista que
incluya los datos de esa pgina. La vista en s slo 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 aplicacin. Tambin puedes considerar el
uso del espacio gratuito en nube OneDrive y la integracin
con otros servicios de Windows Live17 para tu aplicacin. Hay
disponibles tambin muchos servicios de terceros18.
Multitarea y Ciclo de Vida de la Aplicacin
Windows tiene una capacidad limitada de multitarea que
suspende las aplicaciones en segundo plano y permite el
cambio rpido entre aplicaciones. Los nicos procesos que
pueden ejecutarse en segundo plano, despus de que una
aplicacin se haya abandonado, son la reproduccin de audio,
el seguimiento de la ubicacin y la transferencia de archivos.
Las aplicaciones tambin pueden programar la ejecucin de
cdigo arbitrario en segundo plano en un intervalo (cdigo 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 telfono 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 automticamente si el sistema operativo determina


que los recursos son necesarios en otro lugar.
Para crear la apariencia de una aplicacin que nunca se
cerr, Windows tiene un ciclo de vida de aplicaciones bien
documentado19.

Testeo y Analticas
Microsoft ofrece una excelente revisin del testeo de una
aplicacin Windows Phone 820 incluyendo tests a lo largo del
procese de desarrollo. Las pruebas unitarias estn integradas
en Visual Studio, simplemente creando un proyecto nuevo de
prueba unitaria y enlazndolo a los proyectos que te gustara
testear. MSDN incluye buena documentacin 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 analticas en tiempo de ejecucin. Flurry23 y
Google Analytics24 proporcionan herramientas de anlisis y servicios compatibles con Windows. Los desarrolladores tambin
pueden utilizar el servicio de Microsoft Application Insights
service25. Tambin hay disponibles slidas 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

Distribucin y Monetizacin
Distribuye tus aplicaciones a travs de Windows Phone Store.
Aunque el contenido de la aplicacin es revisado y restringido
de una manera similar a la App Store de Apple, Microsoft proporciona directrices ms claras para la solicitud de publicacin,
disponibles en el Dev Center26. Aunque las herramientas de
desarrollo se proporcionan de forma gratuita, se requiere
una cuenta de pago para implementar una aplicacin 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 ao para empresas. Esas tarifas
no se aplican a los estudiantes miembros del DreamSpark27.
Windows Store tambin ofrece una distribucin de betas por
tiempo limitado y ofrece un hub corporativo para empresas28.
Puedes utilizar el Windows Phone Store Test Kit29 para probar
la aplicacin en local antes de enviarla para su publicacin.
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 aplicacin supera los $25.000
(USD) en ventas. La Windows Store est disponible en ms de
200 pases y regiones y ms 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 aplicacin universal,


puedes elegir si slo 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 aplicacin est en 'modo
de prueba' o no, y en consecuencia limitar su uso. Microsoft
recomienda especficamente evitar la limitacin por tiempo en
las versiones de prueba (por ejemplo, una versin de prueba
de treinta minutos) y, en cambio, sugiere limitar las funciones
disponibles31.
Para la monetizacin basada en anuncios hay varias
opciones. Microsoft tiene su propio Microsoft Advertising Ad
Control32 (actualmente disponible en 18 pases), mientras
que Nokia33, Smaato34, Inneractive35, AdDuplex36 y Google37
ofrecen soluciones alternativas de publicidad. Tambin puedes
usar el servicio de Ad Mediation38 para seleccionar diferentes
proveedores de publicidad segn del precio mximo estipulado.
Para obtener ms informacin acerca de la monetizacin,
consulta el captulo sobre el tema en esta gua.

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 Ms
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 coleccin de recursos para
desarrolladores y diseadores, visita windowsphonegeek.com y
reddit.com/r/wpdev.
Tambin puedes extender componentes y comportamientos con varias herramientas tanto comerciales como de cdigo abierto. Algunas populares son
telerik.com, coding4fun.codeplex.com, cimbalino.org,
mvvmlight.codeplex.com y github.com/MvvmCross/MvvmCross.
Para la inspeccin del rbol visual, bindings y propiedades
de las interfaces de usuario basados en XAML en tiempo de
ejecucin, est disponible xamlspy.com.
Microsoft provee una serie de videos para los recin iniciado
en el desarrollo de aplicaciones Windows Phone 8.139
Asimismo, encontrars cdigo 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 visin global de estrategia, diseo y desarrollo de aplicaciones para Windows.
Si ests portando una aplicacin desde iOS
o Android, puedes encontrar ms 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 situacin que tenemos en el mundo mvil. Hay
plataformas ms que suficientes para elegir: Android, BlackBerry 10, Firefox OS, iOS, Tizen y Windows estn, o probablemente
estarn, entre algunas de las plataformas smartphone y tablets
ms importante, mientras Brew MP y Java ME dominan en el
mbito de los telfonos de gama media (plataformas listadas
no por importancia, sino por orden alfabtico).
La mayora de los promotores de aplicaciones, citando cierta
famosa letra de una cancin de Queen, le dirn al desarrollador: "Lo quiero todo, lo quiero todo, lo quiero todo... y lo
quiero ahora!", as que la eleccin puede muy bien estar entre
invertir en mltiples equipos paralelos de desarrollo, o adoptar
una estrategia multiplataforma.

Diferencias Clave Entre Plataformas


Mviles
Si deseas hacer disponible tu aplicacin a travs de diferentes
plataformas, tienes que superar algunos obstculos. Ciertos
retos son ms fciles de superar que otros:
Lenguajes de Programacin
A estas alturas ya te habrs dado cuenta de que las plataformas
mviles publican sus propios SDK, loque te permite desarrollar
aplicaciones en los lenguajes de programacin soportados por
las plataformas.
Sin embargo, estos lenguajes tienden a pertenecer a alguna
de las pocas familias de lenguajes raz. La tabla siguiente

Hacia Multiplataforma

117

ofrece una descripcin 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

Soporte nativo en la plataforma, ya sea el idioma primario o uno especfico


para la creacin de aplicaciones

Se admite como opcin en la plataforma, se puede utilizar como alternativa


al lenguaje nativo, pero no proporciona el mismo nivel de acceso a
caractersticas de la plataforma

Los frameworks multiplataforma pueden solventar las


barreras de lenguaje de diferentes maneras:
Tecnologas Web: Este enfoque se basa en que la
mayora de las plataformas ofrecen soporte directo a las
tecnologas web a travs de webviews integradas en las
aplicaciones nativas. Junto con HTML y CSS, esta aproximacin tambin admite JavaScript.
Hacia Multiplataforma

118

Interpretacin: El entorno ofrece un motor para cada


plataforma que interpreta un lenguaje especfico o un
framework comn. Por ejemplo, una opcin popular para el
desarrollo de juegos es Lua scripting.
Compilacin Cruzada: Es el santo grial de los frameworks
multiplataforma, pero tambin la solucin tcnica ms
compleja. Permite escribir una aplicacin en un lenguaje
y transcribirla al lenguaje nativo de cada plataforma,
obteniendo velocidad de ejecucin nativa.
La mayora de los frameworks tambin proporcionan un
conjunto de APIs multiplataforma que permiten acceder de un
modo comn a determinadas funciones del dispositivo o plataforma, como por ejemplo a las capacidades de geolocalizacin.
Para funciones tales como mensajera SMS tambin puedes usar
APIs de red que son independientes del dispositivo1.
Versiones de SO
Las plataformas evolucionan y, tarde o temprano, ofrecern
caractersticas especficas de versin que desears aprovechar.
Esto aade otra capa de complejidad a tu aplicacin y tambin
un desafo para las herramientas multiplataforma: a veces se
quedan atrs cuando una nueva versin del sistema operativo
es publicada.
Interfaz de Usuario y UX
Un obstculo difcil 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 fcil 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 slo estn disponibles en una nica plataforma y que
podran mejorar drsticamente la experiencia de usuario. Tambin ignorar las diferencias respecto a la filosofa de diseo
de las plataformas: si bien muchas plataformas se esfuerza
nen conseguir un diseo 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
"autnticamente digital", en la que el contenido se enfatiza
sin marcos. Otro desafo clave con una interfaz de usuario
multiplataforma es que puede comportarse de manera diferente
a lo que estn acostumbrados los usuarios de la interfaz de
usuario nativa, resultando en que la aplicacin 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, deberas
usar unos de aspecto no nativo o, simplemente, limitarte a
usar los autnticos.
Al dirigirte a los consumidores finales directamente (B2C), a
menudo tienes que tener mucho ms en cuenta la experiencia
de usuario especfica de plataforma que en aquellos casos en
que el target es usuarios de negocio (B2B). En cualquier caso,
debes tener en cuenta que la personalizacin y la adaptacin
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 ms desafiante de una estrategia multiplataforma.

Hacia Multiplataforma

120

Soporte a la Integracin en Pantalla de Inicio


La integracin de tu aplicacin en las pantallas de inicio de
los dispositivos vara mucho entre las plataformas. En iOS slo
se puede aadir una etiqueta de identificacin con un nmero
al icono de tu aplicacin, en Windows Phone puedes crear live
tiles que aaden informacin estructurada, mientras que en
Android y Symbian se puede aadir un widget completo que
muestre datos arbitrarios y emplee imgenes.
Utilizar la integracin de tu aplicacin en este sentido
podra mejorar drsticamente su interaccin con los usuarios.
Soporte Multitarea
La multitarea permite a servicios en segundo plano y mltiples
aplicaciones funcionar al mismo tiempo, y es otra de las
caractersticas que se gestionan de manera diferente segn
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 automticamente por el sistema operativo cuando
los recursos disminuyen. En iOS y Windows Phone hay una
seleccin limitada de tareas en segundo plano que pueden
seguir funcionando despus de salir de la aplicacin. As que,
si los servicios en segundo plano pueden mejorar la operativa
de tu aplicacin, debes evaluar las estrategias multiplataforma
cuidadosamente para asegurarte de permitir el acceso ms
completo a las capacidades del telfono en este sentido.
Consumo de Batera y Rendimiento
En estrecha relacin con la multitarea est el consumo que
hace tu aplicacin de la batera.
Mientras que la potencia de CPU se duplica aproximadamente cada dos aos (la Ley de Moore dice que el nmero
Hacia Multiplataforma

121

de transistores se duplica cada 18 meses), la capacidad de


la batera, en contraste, se duplica slo una vez cada siete
aos. Esta es la razn por la que los smartphones pasan tanto
tiempo conectados a su cargador. Cuanto ms cerca ests de la
plataforma en una capa de abstraccin multiplataforma, mejor
puedes controlar el consumo de la batera y el rendimiento de
tu aplicacin. Como regla general, cuanto ms tiempo necesita
tu aplicacin para arrancar y funcionar, menor abstraccin
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 superrpido.
Servicios Push
Los servicios push son una estupenda manera de aparentar que
tu aplicacin est activa, incluso cuando no est en funcionamiento. En una aplicacin 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 tamao
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 envo de datos a travs de varias
plataformas.

2 urbanairship.com/

Hacia Multiplataforma

122

Compra desde Aplicacin


Los mecanismos de compra desde aplicaciones permiten vender
bienes o servicios dentro de tu aplicacin. No hace falta decir
que esto funciona de forma diferente en distintas plataformas.
Vase el captulo de monetizacin para ms detalle.
Publicidad en Aplicacin
Existen diferentes opciones para la visualizacin de anuncios
en aplicaciones mviles, siendo algunas soluciones de terceros
independientes del comercializador. Los servicios de publicidad
especficos de plataforma, sin embargo, ofrecen mayores ingresos y una mejor experiencia de usuario. Una vez ms, estos
servicios funcionan de manera diferente segn las plataforma.
El captulo de monetizacin en esta gua proporciona ms
informacin sobre este tema.

Estrategias Multiplataforma
En esta seccin 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 integracin y experiencia de usuario en cada sistema.
Una va fcil de inicio es comenzar con una plataforma y
luego progresar hacia plataformas adicionales una vez que tu
aplicacin se ha defendido en el mundo real.

Hacia Multiplataforma

123

Las libreras 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

Comparticin de Recursos
Cuando mantienes varios equipos para diferentes plataformas
puedes ahorrar mucho esfuerzo si compartes algunas estructuras de la aplicacin:
Concepto y recursos: Esto se hace habitualmente de
forma automtica: compartir las ideas y los conceptos de
la aplicacin, el flujo de interfaz de usuario, input y output y los recursos grficos de la aplicacin (pero debes ser
consciente de la necesidad de dar soporte a las estructuras
especficas de interfaz de usuario de cada plataforma).
Estructuras de datos y algoritmos: V un paso ms all
compartiendo estructuras de datos y algoritmos entre
plataformas.
Comparticin de cdigo del modelo de negocio:
Utilizando compiladores de multiplataforma tambin
puedes compartir el modelo de negocio entre las plataformas. Alternativamente, puedes utilizar un intrprete o
una mquina virtual y un lenguaje comn en un grupo de
plataformas.

Hacia Multiplataforma

124

Abstraccin completa: Algunas herramientas multiplataforma te permiten abstraerte completamente del modelo
de negocio, las vistas y el control de tu aplicacin para
diferentes plataformas.
Reproductores y Mquinas Virtuales
Los reproductores suelen proporcionar un conjunto comn de
APIs sobre distintas plataformas. Ejemplos famosos incluyen
Flash, Java ME y Lua. Este enfoque hace que el desarrollo sea
muy fcil. Te vuelves dependiente, sin embargo, del proveedor
de la plataforma para incorporar nuevas caractersticas, por lo
que el reto aqu se da cuando las funciones estn disponibles
en una nica plataforma. A menudo los reproductores tienden
a utilizar una aproximacin de mnimo comn denominador
respecto a las funciones ofertadas para mantener la uniformidad entre las implementaciones para varias plataformas.
Generadores de cdigo como Applause3 llevan el concepto de
reproductor un paso ms all, a menudo son especficos del
dominio y permiten generar aplicaciones a partir de datos.
Tambin suelen carecer de flexibilidad en comparacin con las
soluciones programables.
Compilacin Cruzada
La compilacin cruzada permite la programacin en un
lenguaje que es transformado en el lenguaje especfico de una
plataforma diferente. En trminos de rendimiento a menudo
es la mejor solucin de multiplataforma, aunque puede haber
diferencias en comparacin con las aplicaciones nativas. Esto
puede darse, por ejemplo, cuando ciertas construcciones de
programacin no pueden ser traducidas de manera ptima
desde el cdigo fuente al lenguaje de destino.
3 applause.github.com

Hacia Multiplataforma

125

Hay tres enfoques habituales para la compilacin cruzada:


traduccin directa del cdigo fuente, de forma indirecta mediante la traduccin del cdigo fuente en un lenguaje intermedio
abstracto, y recopilacin directa en el formato binario de una
plataforma. El enfoque indirecto tpicamente produce cdigo
menos legible. Este es un problema potencial cuando se desea
continuar con el desarrollo en la plataforma de destino usando
el cdigo fuente traducido como punto de partida.
Aplicaciones Web (Hbridas)
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 tecnologas tienen limitaciones cuando se trata
de aspectos como la integracin en plataforma o rendimiento.
Lee el captulo Tecnologas Web para aprender ms acerca del
desarrollo web mvil.
Solucin 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 caractersticas de


hardware y elementos nativos de interfaz de usuario, por lo que
en nuestra opinin no cuentan como soluciones multiplataHacia Multiplataforma

126

forma reales; estas soluciones, por lo tanto, no aparecen en


la tabla al final de este captulo.
El desarrollo web hbrido implica insertar una webview
dentro de una aplicacin nativa. Esta aproximacin te permite
acceder a las funciones nativas desde los componentes web de
tus aplicaciones y tambin utilizar cdigo nativo para mejorar
el rendimiento o aspectos crticos de la experiencia de usuario
de tu aplicacin. Las aplicaciones hbridas permiten reutilizar
elementos de desarrollo web en las plataformas que hayas
elegido (un buen ejemplo de entorno hbrido es PhoneGap).
ANSI C
Mientras que el HTML y la programacin web se crean a partir
de un nivel de abstraccin muy elevado, tambin puedes elegir
el camino opuesto utilizando ANSI C. Puedes ejecutar cdigo
ANSI C en todas las plataformas importantes, como Android,
BlackBerry 10, iOS y Windows 8/Windows Phone. El principal
problema con esta opcin es que no puedes acceder a las APIs
especficas 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 libreras 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 difcil ofrecer una visin completa. Puedes llamarlo
fragmentacin, nosotros lo llamamos competencia. Una palabra
de advertencia: no sabemos todas las opciones, si tienes una
solucin propia que est disponible pblicamente, por favor
hznoslo saber a travs de mobiledevguide@enough.de. Un
Hacia Multiplataforma

127

framework debe soportar al menos dos plataformas mviles


para ser listado aqu.
A continuacin, algunas preguntas que debes hacer al
evaluar herramientas multiplataformas. No todas ellas sern
relevantes para t, as que sopesa las opciones adecuadamente.
En primer lugar, ten una visin detallada de tu idea de
aplicacin, el contenido, su pblico objetivo y las plataformas
de destino. Tambin 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
tambin ha publicado un informe sobre varias herramientas
multiplataforma4 .
Cmo funciona la herramienta multiplataforma? Qu
lenguajes de programacin y APIs puedo usar?
Puedo acceder a funciones especficas de la plataforma?
En caso afirmativo, cules?
Puedo usar componentes nativos de la interfaz de
usuario? En caso afirmativo, cules?
Puedo usar una versin especfica de la plataforma como
base de mi desarrollo? Cmo es el cdigo fuente traducido/generado?
Es posible la integracin con la pantalla de inicio?
Puedo controlar la multitarea? Hay algn servicio en
segundo plano?
Cmo funciona la solucin con servicios push?
Cmo puedo usar la compra desde aplicacin y la
publicidad en aplicacin?
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.
Solucin

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
mviles

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

Solucin

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

Solucin

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 estn 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 ms atractivo
para stos que para las aplicaciones.

Hacia Multiplataforma

131

Solucin

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

Solucin

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 Mviles &


Tecnologas Web
El desarrollo contnuo de tecnologas web unido al incremento
dispositivos conectados a Internet promete un gran futuro para
aquellos deseosos de un incremento en la audiencia a travs de
webs mviles. El trfico global de Internet mvil est creciendo
rpidamente y ya ha superado el 30% del total1. El tiempo
invertido en navegar por Internet con dispositivos (mviles,
tablets, ordenadores de sobremesa y televisores) vara en
diferentes puntos del planeta; mientras que los usuarios en
China dedican un 16% de su tiempo a navegar desde dispositivos mviles, en EE.UU. es un 27% y en India un 70%. Muchas
regiones donde el trfico en Internet va mvil ya ha superado
a los ordenadores de sobremesa son mercados en desarrollo o
emergentes. Mientras que el uso de smartphones crece alrededor del planeta, an hay una gran oportunidad para captar a
los usuarios de telfonos de gama media. Segn Nielsen slo 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 telfono de gama media, de los cuales un
9,5% pueden navegar por Internet3. Esto quiere decir que con
un site bsico para mviles podras alcanzar a 85 millones de
usuarios ms.
El uso ms obvio de las tecnologas web es construir sitios
web mviles, y se es el tema de este captulo. Vale la pena
destacar que las tecnologas web tambin 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 Mviles & Tecnologas Web

135

intensiva en el desarrollo de aplicaciones web e hbridas,


soluciones multiplataforma e incluso aplicaciones nativas
(Firefox y Tizen). Para ms informacin sobre el desarrollo
multiplataforma y en nuevo sistema operativo Firefox y Tizen
consulta los captulos al respecto en esta gua.
Una gran ventaja de las tecnologas web es que ofrecen la
ruta ms fcil hacia el desarrollo mvil. Tecnologas web como
HTML, CSS y JavaScript ya estn plenamente desarrolladas; sin
embargo, siguen y seguirn siendo las principales bases de
desarrollo de sitios mviles. Adems, son sin duda ms fciles
de aprender que algunos de los complejos lenguajes necesarios
para el desarrollo de aplicaciones nativas. Los sitios web para
mviles y las aplicaciones web hacen los contenidos accesibles
en casi cualquier plataforma con un menor esfuerzo en
comparacin con el desarrollo nativo para varias plataformas.
Esto significa, directamente, que los sitios web para mviles
tienen un alcance ms amplio. Por consiguiente, el desarrollo
web mvil no slo ahorra tiempo y costes de desarrollo, sino
que adems proporciona una alternativa ajustada en costes y
tiempo tambin en lo que se refiere a mantenimiento. Y ser
independiente de las tiendas de aplicaciones te permite ofrecer
cualquier contenido que quieras rpidamente y sin necesidad
de suscribir las polticas de un tienda de aplicaciones.
No obstante, existen deficiencias. Las tecnologas web
luchan por igualar el nivel de integracin en plataforma y el
acceso directo a funciones de hardware que ofrece el desarrollo de aplicaciones nativas. An ms, el rendimiento de las
tecnologas 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 comparacin a las
disponibles para desarrollo de aplicaciones nativas.

Sitios para Mviles & Tecnologas Web

136

La monetizacin de sitios mviles puede resultar difcil,


ya que los usuarios esperan tener acceso a las webs de forma
gratuita. La herramienta ms comn para su monetizacin es
la integracin de publicidad. Las soluciones de pago para los
sitios mviles se encuentran todava en sus primeras etapas y
tienden a ser bastante complejas de implementar. Los actuales
instrumentos de monetizacin de las tiendas de aplicaciones
ofrecen, por el contrario, una fcil instalacin y un alto nivel
de seguridad para el usuario final.
Si la monetizacin es uno de los requisitos clave, una
estrategia hbrida o de aplicacin web podra resultar una
buena opcin de compromiso. En este caso, el desafo clave
es combinar las capacidades nicas de tecnologas nativas
y web para crear un producto verdaderamente fcil de usar.
En el captulo sobre el tema multiplataforma de este libro
encontrars una lista de los frameworks disponibles para crear
aplicaciones hbridas.
Por principio, los usuarios no deberan sufrir la frustracin
y la decepcin de ser redirigidos a un sitio web que nunca
termina de cargarse, exige una elevada transmisin de datos o
simplemente no funciona. Por el contrario, en el peor escenario
posible el usuario debera ser redirigido a un sitio bsico,
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 hbitos de navegacin y sus planes de datos.

Sitios para Mviles & Tecnologas Web

137

Desde la perspectiva de la experiencia de usuario, Google


ofrece las 10 directrices ms importantes para que pequeas y
medianas empresas consigan conversiones4:
S tctil - disea tu sitio de manera que incluso unas
manos grandes puedan interactuar con l
Disea para visibilidad - asegrate de que tu contenido
puede ser ledo si el usuario extiende su brazo completamente
Simplifica la navegacin - navegacin, jerarqua y scrolling vertical claros facilitan el acceso a la informacin
Hazlo accesible - idealmente, tu sitio mvil debera
funcionar en cualquier dispositivo y en ambas orientaciones, vertical y horizontal
Hazlo fcilmente convertible - destaca la informacin
que te ayudar a conseguir conversiones
Hazlo local - incluye funcionalidades que ayuden a la
gente a encontrarte y contactarte
Redirecciona a sites versin mvil - da a los usuarios
la oportunidad de utilizar el site desktop original, pero
tambin facilita volver al site mvil
Mantenlo gil - ayuda a los usuarios de mviles, disea tu
sitio para que cargue rpido y muestra el copy de manera
que sea fcil hacer una lectura superficial
Hazlo cmodo - ofrece el mayor nmero de funcionalidades de la versin completa como sea posible
Aprende, escucha e itera - los buenos sitios mviles
estn 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 Mviles & Tecnologas Web

138

bsqueda mvil 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 da de las novedades
respecto a cmo optimizar tu sitio mvil.

HTML5
La quinta versin del estndar HTML promete la reproduccin
de caractersticas anteriormente slo disponibles con ayuda de
tecnologa propietaria. HTML5 es uno de los factores clave que
hacen que los desarrolladores sopesen el desarrollo de sitios
mviles y aplicaciones web en lugar de aplicaciones nativas.
El look-and-feel similar al de aplicaciones compiladas con un
nico cdigo base para una serie de dispositivos populares, la
capacidad de acceder a hardware de dispositivos tales como
la cmara y el micrfono, el almacenamiento de datos en
los dispositivos para utilizar sitios mviles sin conexin y la
optimizacin de la pgina web segn en el tamao 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. Slo el 60% de los usuarios
de Internet tienen navegadores que soporten ms del 50% de
las caractersticas actuales de HTML56. El ex-CTO de Facebook
Brent Taylor describe la situacin de la siguiente manera:
Hay una desenfrenada fragmentacin de la tecnologa en los
navegadores mviles, por lo que los desarrolladores no saben
qu parte de HTML5 pueden utilizar. HTML5 es promovido como
un estndar nico, pero viene en diferentes versiones para
cada dispositivo mvil. Cuestiones tales como la aceleracin
5 developers.google.com/webmasters/smartphone-sites
6 gs.statcounter.com/

Sitios para Mviles & Tecnologas Web

139

de hardware y la gestin de derechos digitales se implementan


de manera inconsistente. Eso hace que sea difcil para los
desarrolladores escribir software que funcione en muchas
plataformas diferentes y llegue a un pblico amplio.
Sitios web lderes como LinkedIn han cambiado sus
aplicaciones web por un paquete de aplicaciones nativas. Kiran
Prasad, el director de ingeniera mvil 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 debera por el ecosistema: 'There
are tools, but they are at the beginning. People are just
figuring out the basics.'7.
Para ms informacin acerca de la compatibilidad con
navegadores, visita el site HTML5Test online8. Dicho website
ofrece tanto una introduccin como un anlisis profundo a las
caractersticas de HTML5 segn su soporte por los diferentes
navegadores web. Facebook tambin ha desarrollado
ringmark9, que pone a prueba los navegadores web en
3 anillos, o niveles de soporte de caractersticas de
HTML5, lo cual ayuda a los desarrolladores a comprobar
rpidamente el nivel de soporte de mltipes navegadores
web mviles (y desktop).
Resumiendo: Casi todo el mundo en el negocio mvil
est de acuerdo en que HTML5 tendr xito a largo plazo y,
especialmente, el ltimo ao se ha visto una rpida adopcin
del HTML5. ABI Research estima que los dispositivos mviles
compatibles con HTML5 existentes en el mundo sern 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 Mviles & Tecnologas Web

140

mentarn gradualmente el soporte a HTML5 y los navegadores


web incrementarn la velocidad de su adopcin. Las plataformas de cdigo abierto, tales como Firefox OS, Sailfish y Ubuntu
deberan favorecer dicha adopcin. El informe Developer
Economics 201411 ya identifica HTML5 como la plataforma ms
popular (47%), seguida por Java (42%).

La Fragmentacin Requiere Adaptacin


El mayor reto del desarrollo web mvil es la fragmentacin. En
teora, todos los dispositivos con conexin a Internet pueden
acceder a cualquier sitio mvil a travs de un navegador. La
realidad, sin embargo, es que los desarrolladores necesitan
atender al creciente nmero de navegadores y dispositivos con
diferentes niveles de capacidades de software y hardware para
adaptar y optimizar el contenido web mvil.
En trminos generales, existen dos enfoques para optimizar
el contenido para dispositivos mviles: adaptacin del lado del
cliente o del lado del servidor:
La adaptacin del lado cliente hace uso de una combinacin de CSS y JavaScript ejecutndose en el dispositivo para ofrecer una experiencia mobile-friendly.
La adaptacin en el lado del servidor utiliza al
servidor para que ejecute lgica antes de que se
suministre el contenido al cliente.
La siguiente seccin ofrece una revisin de tcnicas tanto
del lado cliente como del lado servidor para hacer los sitios
webs accesibles a la mayora de dispositivos actuales con
acceso a Internet, as como a aquellos futuros.
11

DeveloperEconomics.com
Sitios para Mviles & Tecnologas Web

141

Adaptacin del Lado Cliente


Diseo Web Adaptativo (Responsive)
El diseo web adaptativo ha sido un trmino de moda entre
vendedores y desarrolladores web por igual. En su formato ms
simple, consiste en una rejilla flexible, imgenes flexibles y CSS
media queries para comportarse adaptativamente a una serie
de resoluciones de pantalla o tipos de dispositivos.
En solitario, sto slo 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 tcnica para
producir sitios web complejos para navegadores desktop o
mviles.
Pros
Una adaptacin completa en el lado cliente asegura que no
haya impacto en la infraestructura existente.
Ajuste automtico de contenido y diseo.
Contras
El mismo contenido disponible en el sitio web estar
disponible tambin en la versin mvil (visible o no).
El peso del sitio tendr un impacto significativo en
trminos de rendimiento en los dispositivos mviles.
Es una aproximacin general ms que una optimizacin
real a un entorno mvil.

Sitios para Mviles & Tecnologas Web

142

Mejoras Progresivas
Las mejoras progresivas tienen la capacidad de responder a
toda la gama de dispositivos mviles. Se enva una sola pgina
HTML a todos los dispositivos. Se utiliza cdigo JavaScript de
manera adicional para construir progresivamente la funcionalidad a un nivel ptimo para el dispositivo en particular. Ya que
es una solucin exclusiva mvil, el principal inconveniente es
el rendimiento. La construccin progresiva conlleva tiempo de
ejecucin y vara de acuerdo con el dispositivo y la red. Como
solucin de desktop y mvil, su principal inconveniente es que
un nico documento HTML se enva a todos los dispositivos.
Un entorno muy conocido que hace uso de la mejora progresiva
es jQuery Mobile12 .
Pros
Una adaptacin completa en el lado cliente asegura que no
haya impacto en la infraestructura existente.
Ajuste automtico de contenido, funcionalidad y diseo.
Contras
Prdida de control, pues la deteccin es gestionada por el
navegador.
La deteccin de navegador dista mucho de ser perfecta.
La deteccin 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 Mviles & Tecnologas Web

143

Adaptacin del Lado Servidor


Bases de Datos de Dispositivos
Las bases de datos de dispositivos detectan a cada dispositivo
que accede a la pgina web y devuelven una lista de las capacidades del dispositivo al servidor. Esta informacin se utiliza
entonces para servir un sitio mvil acorde con las capacidades
del dispositivo. La adaptacin del lado del servidor es una
de las soluciones ms 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 mayora slo estn disponibles bajo licencia comercial.
Pros
La solucin ms habitual (Google, Facebook, Amazon y
similares).
Mximo control.
Es posible la optimizacin segn dispositivo (por ejemplo
iPhone, Samsung Galaxy y similares).
Contras
Los Repositorios de Descripcin de Dispositivos (en ingls
Device Description Repositories) estn orientados a
hardware.
Aparte de los datos, es necesario un mecanismo de deteccin (un simple User-Agent no es suficiente).

13

wurfl.sourceforge.net/

14

deviceatlas.com/
Sitios para Mviles & Tecnologas Web

144

Adaptacin Hbrida - RESS


Realmente lo mejor de ambos mundos, la combinacin de la
adaptacin en cliente y servidor asegura un alto rendimiento
gracias a la adaptacin del lado del servidor y garantiza que
las capacidades obtenidas se pueden utilizar para enriquecer la
experiencia mvil para las visitas siguientes. Esta aproximacin
se conoce como RESS (responsive web design with server-side
components). Naturalmente es costosa y, por tanto, ms
comn en organizaciones de gran tamao.
Las soluciones hbridas de adaptacin estn disponibles
comercialmente de compaas como Sevenval15 o Netbiscuits16,
o como soluciones en la nube respaldadas por la comunidad,
por ejemplo FITML17.
Mejor Input de Datos
Con pequeas teclados, a menudo en pantalla, introducir texto
puede resultar engorroso y lento, especialmente si el usuario
tiene que introducir nmeros, direcciones de correo electrnico
o texto similar, etctera. Afortunadamente, los desarrolladores
pueden especificar el tipo esperado de datos y los smartphones
mostrarn entonces el teclado ms 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 mviles ms complejos. Ntese que la localizacin y red
utilizadas ya han tenido un efecto drstico en el rendimiento
15

www.sevenval.com

16

www.netbiscuits.com

17

www.fitml.com
Sitios para Mviles & Tecnologas 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 tamaos de
imgenes 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
ms importantes. Reducir en lo posible elementos tales como
los archivos JavaScript y CSS te ayuda a reducir el tiempo
global de carga. Mltiples archivos del mismo tipo pueden ser
comprimidos en uno y los espacios vacos pueden ser eliminados. El cdigo se acorta, pero se comporta de la misma manera.
Todo esto puede resultar en un menor nmero 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 pgina o espacio en blanco. Una experiencia sin
contratiempos es primordial para cualquier experiencia mvil, y
esto incluye el viaje desde el site hasta la carga de contenidos
en el site, y todas aquellas animaciones que los acompaen.
Reducir Llamadas HTTP
Imgenes inline, scripts y estilo, y utiliza la cach de aplicaciones. Cuando sea posible, reduce el nmero de llamadas,
tamao de archivos y contenido. Beneficios clave son que
los scripts se transmiten en una sola llamada por pgina, el
trfico HTTP se minimiza y los scripts bsicos se almacenan en

Sitios para Mviles & Tecnologas Web

146

la cache de la aplicacin. La implementacin no afecta el


refresco y los scripts an pueden alojar en la cache del CDN.
Para ms detalles y recomendaciones sobre rendimiento
de webs mviles estudia la presentacin de Roland Guelle en
Slideshare18.

Testear Tecnologas Web


Se puede probar cmo las tecnologas web funcionan en varios
telfonos mviles de mltiples maneras. La ms simple
es probar el sitio o aplicacin web en una variedad de
navegadores en dispositivos mviles. Estos deberan incluir
una combinacin de los navegadores mviles ms populares,
por ejemplo aquellos basados en datos pblicos disponibles
online19. El conjunto de dispositivos se puede refinar mediante el anlisis de datos de los registros web existentes, y
otras herramientas. Adems, las pruebas en varios factores
de forma ayuda a descubrir problemas de diseo y formato.
En cuanto a las pruebas automatizadas, WebDriver20 es
el entorno predominante. Existen dos enfoques complementarios:
1. Testeo automtico 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 mvil.
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 Mviles & Tecnologas Web

147

WebViews incrustadas se ejecutan en la plataforma de


destino. Es probable encontrar en ellas muchos errores
de comportamiento. Sin embargo, la configuracin tiene
mucho que ver y algunas plataformas no estn soportadas.
Se puede engaar a los servidores web para que traten al
navegador como si accediera mediante una gran variedad
de navegadores, incluyendo navegadores mviles no
disponibles con la WebView incrustada, por ejemplo el
telfono Nokia Asha 201. An as, ni el comportamiento
resultante ni el renderizado son realistas, as que muchos
errores permanecern indetectados, mientras que ser darn
falsos positivos que no se darn en los dispositivos reales.

Aprende Ms
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, artculos, etc.) :
www.html5rocks.com/en/
Breaking the Mobile Web (Max Firtman, el autor de
mltiples libros acerca de programacin web mvil, ofrece
noticias actualizadas en su blog dedicado a mviles):
mobilexweb.com/
Mobi Thinking (el recurso de DotMobi para vendedores,
con anlisis y opiniones de expertos en marketing mvil):
mobithinking.com/
Testing (Mobile) Web Apps:
docs.webplatform.org/wiki/tutorials/Testing_web_apps
Sitios para Mviles & Tecnologas Web

148

Investiga qu funcionalidades funcionan en todas las reas


Web: caniuse.com y beta.theexpressiveweb.com
WHATWG (la pgina de la comunidad HTML):
www.whatwg.org/
Word Wide Web Consortium (la organizacin que define los
estndares 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 Mviles & Tecnologas Web

149

Aplicaciones Empresariales
Los responsables de decisiones corporativas ven actualmente
las aplicaciones empresariales mviles como un factor estratgico, una necesidad, ms que como una mera entrada en una
hoja de clculo de contabilidad. Las aplicaciones empresariales
internas son capaces de reducir la latencia de la transferencia
de informacin dentro de una organizacin, incrementando la
agilidad del trabajador al hacer disponibles datos de carcter
competitivo en cualquier momento y en cualquier lugar. Las
aplicaciones tambin 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,
gestin de inventario o cadena de suministro, pero tambin de
marketing B2C.
Puede parecer una obviedad decirlo, pero el riesgo ms
importante en este momento es no tener una estrategia mvil
corporativa. Las empresas estn tomando el enfoque Mvil
para Todos en contraste a limitar su uso a la alta direccin,
como ocurra en el pasado. Para conseguir esto, el enfoque
tradicional de TIC de compra y distribucin de dispositivos en
la estructura de gestin 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 adopcin temprana en la empresa de una estrategia mvil
Aplicaciones Empresariales

151

bien pensada y ejecutada es clave para asegurarse de que los


datos estn protegidos en todo momento.
Desde el punto de vista del desarrollador, el sector
empresarial tiene mucho que ofrecer: En comparacin con los
desarrolladores de aplicaciones B2C tradicionales, aquellos que
crean aplicaciones empresariales tienen el doble de probabilidades de estar ganando ms de 5.000 dlares americanos por
aplicacin al mes y casi 3 veces ms probabilidades de ganar
ms de 25.000 segn el informe Developer Economics1.
Puntos Clave de las Aplicaciones Mviles para Definir
Iniciativas Empresariales
Reduccin de costes comparados con los sistemas
existentes
Racionalizacin de los procesos de negocio
Ventaja competitiva con el acceso directo a datos
actualizados de manera inmediata
Incremento de la satisfaccin y efectividad del empleado
Rpida respuesta en comparacin con procesos existentes

Estrategia Empresarial
Hoy en da, muchas empresas tienen un Chief Mobile Officer
(CMOO) o han ampliado el alcance de sus CIOs. El trabajo del
CMOO es coordinar las tendencias mviles y sus directrices,
y hacer de puente entre el negocio y TIC. Dependiendo del
tamao y el enfoque de la empresa, su trabajo es tambin
construir un equipo interno de desarrollo de software mvil
o coordinar la cooperacin 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 mvil ofrece lo que


los empleados/usuarios quieren, que sea tcnicamente factible
y que todo se ajuste a la estrategia global de la empresa,
el director podra considerar la creacin de un Consejo de
Innovacin Mvil (MIC, en ingls Mobile Innovation Council)
o Centro de Excelencia (COE, en ingls Center of Excellence)
que deben incluir a miembros clave tales como: representantes
capacitados del equipo de desarrollo de aplicaciones mviles,
las partes interesadas en tema mvil en la empresa y, lo ms
importante, los usuarios finales de varios departamentos con
experiencia en los procesos de negocio ms relevantes.
Los tpicos en los que el CMOO/CIO debe centrarse, en
sincrona con el MIC/COE incluyen:
Estrategia: Visin y direccin de la estrategia mvil global
y las aplicaciones.
Polticas de gobernanza: Bring Your Own Device (BYOD)
versus Chose Your Own Device (CYOD), que bsicamente es
la diferencia entre una poltica de Gestin de Aplicaciones
Mviles (MAM, del ingls Mobile Application Management)
y una de Gestin de Dispositivos y Seguridad Mviles
(CYOD, del ingls Mobile Device Management & Security).
Especificaciones de las aplicaciones.
Libro de ruta de las aplicaciones.
Planificacin presupuestaria.
Visto bueno: aprobacin de las aplicaciones para produccin.
Despliegue de aplicaciones: feedback temprano de demos y
prototipos, testeo y despliegue masivo.
Incentivos: Promocionar la adopcin de entornos mviles.

Aplicaciones Empresariales

153

En cuanto a la adopcin comercial, el desarrollo de aplicaciones corporativas es muy popular actualmente, pero uno
de los principales obstculos 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 comn ahora, pero tienes que estar preparado para dar
razones de peso en base a las que una empresa debera adoptar
una estrategia mvil.
Puntos Clave en los Casos de Negocio para Aplicaciones
Mviles Empresariales
Crear un Plan de Visin para nuevas aplicaciones mviles,
y cmo ayudarn y darn forma a tu empresa.
Crear un Manifiesto de Definicin de Aplicacin (ADS,
del ingls Application Definition Statement) para cada
aplicacin, especificando propsito y audiencia objetivo.
Crear un Presupuesto para dispositivos.
Crear un plan para una Infraestructura de Aplicaciones,
Gestin 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 ests ofreciendo un sistema a tus clientes pero an no ha
sido adaptado a mviles, tienes varias decisiones que tomar.
Es crtico que comprendas en profundidad el impacto de aadir
una oferta mvil a su sistema antes de comenzar a implementar la solucin elegida. Algunas de las razones ms habituales
Aplicaciones Empresariales

154

para movilizar tu producto pueden ser por ejemplo utilizar el


equipamiento de estos dispositivos, como la cmara o el GPPS,
o simplemente ganar la capacidad de recabar informacin
sobre la marcha, sin necesidad de conexin a Internet. Debes
asegurarte de que te adaptas al mundo mvil por las razones
correctas, pues la consiguiente soporte, mantenimiento y
desarrollo de una oferta mvil se convertir en una nueva lnea
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 asegrate de
que son suficientemente fuertes como para dar el siguiente
paso en el proceso.
Comprende las diferencias entre mvil y sobremesa. No
copies el sistema pre-existente; por ejemplo, en vez
de utilizar un formulario para capturar la informacin,
deberas grabar audio y subirlo a tu sistema, permitiendo
a los usuarios tomar notas rpidamente sin la necesidad de
escribir en un dispositivo de tamao reducido.
No intentes implementar todas la funcionalidades de tu
sistema, slo integra las ms relevantes y en una manera
que encaje con la filosofa mvil.
Asegrate de que conoces qu dispositivos utilizarn tus
clientes y qu funcionalidades son las que ms interesa
movilizar.
Ten bien definida tu estrategia de pruebas en mviles,
la cual debe cubrir pruebas multiplataforma y variados
dispositivos y sistemas operativos.

Aplicaciones Empresariales

155

Gestin de Dispositivos y Aplicaciones


en la Empresa
Al desarrollar una aplicacin 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: Gestin de Dispositivos Mviles (MDM, del ingls
Mobile Device Management y Gestin de Aplicaciones Mviles
(MAM, del ingls 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, llevndose 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, llevndose consigo su
dispositivo, la organizacin puede deshabilitar las aplicaciones
empresariales y limpiar cualquier contenido descargado en el
dispositivo sin afectar a los datos personales, como fotografas
y aplicaciones de consumo compradas por el empleado. La
mayora 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 travs de


estas dos soluciones de gestin, incluyendo:

Monitorizacin de dispositivo
Control de licencias
Distribucin va solucin interna Over-The-Air (OTA)
Inventariado de software
Control de recursos
Control remoto
Gestin de la conexin
Soporte y distribucin de aplicaciones

Las medidas de seguridad incluyen:

Proteccin de contraseas
Encriptacin de datos en el dispositivo
Encriptacin 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 Mviles (MADP)
Por lo general, un elemento clave de las aplicaciones empresariales es la sincronizacin de datos. Los dispositivos mviles
tienen que recibir informacin 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 poltica de confidencialidad. En cualquier caso,
la sincronizacin 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 ms preciados. An ms,


una aplicacin integrada en toda la empresa debe ser multiplataforma. Para compensar las deficiencias de los SDK nativos
as como de las soluciones multiplataforma ms comunes en
este aspecto, es posible que desees considerar la evaluacin
de soluciones tipo Plataformas de Desarrollo de Aplicaciones
Mviles (MADP). Las MADP son entornos mviles que proporcionan el middleware y las herramientas para desarrollar,
probar, implementar y administrar aplicaciones empresariales
que se ejecutan en mltiples plataformas mviles con distintas
fuentes de datos en el back-end. Su objetivo es simplificar el
desarrollo y reducir sus costes, en entornos donde las habilidades tcnicas se deben mantener para mltiples plataformas,
herramientas y complejidades, como la sincronizacin de datos
y autenticacin.
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 estn asegurados contra ataques, de modo
que no haya fugas de datos y stos no se vean comprometidos
o robados. Dado que los dispositivos mviles son una extensin
de la infraestructura TIC de una empresa, todas las aplicaciones
empresariales deben ser diseados 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 polticas de seguridad, as
que debes estar preparado para responder a preguntas acerca
de la seguridad de tu aplicacin, como el cifrado de datos,
la comunicacin en red y en cmo lidias con dispositivos
jailbreakeados o rooteados.
Muchos proveedores de EMM consolidan la seguridad
en aplicaciones utilizando tcnicas tales como inyeccin
de cdigo 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 da en cuanto al voluble panorama de la seguridad mvil 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, asegrate de
que est encriptado.
Cuando comuniques con un servicio web, usa siempre
https.
Adems de lo anterior, asegrate de que realizas verificaciones de puntos finales tanto en la aplicacin como en el
servicio web, para confirmar que tanto el servidor como el
dispositivo son vlidos.
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 aplicacin en el
dispositivo.
No permitas que la aplicacin se ejecute en dispositivos
jailbreakeados o rooteados.
Ten un mtodo para deshabilitar la aplicacin si sta
detecta que ha sido comprometida.
Asegrate de que el uso de encriptacin es conforme a
normativas de exportacin y legislacin relevantes para la
regin donde la aplicacin es utilizada.

Aplicaciones Empresariales

161

Videojuegos para Mviles


La Economa de los Juegos para Mviles
Antes de comenzar a hablar sobre el desarrollo de juegos para
mviles deberamos tratar de entender qu est impulsando ese
mercado. El auge de los videojuegos mviles desde los primeros
das de Java (tcnicamente J2ME) sigue siendo asombroso. La
firma de investigacin del mercado de videojuegos, Newzoo
elev recientemente sus estimaciones del mercado de los
juegos de mvil global, prediciendo que superara los 25 mil
millones de dlares en el 2014 y alcanzando ms de 40 mil
millones para el ao 20171. Segn 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 mayora de esos ingresos centrados en los 10 juegos
lderes, en su mayora F2P (free-to-play), es decir, total o
parcialmente gratuitos. Algunos de estos juegos han dominado
los rankings durante los ltimos dos aos. Juegos como Clash
of Clans, Candy Crush y The Simpsons Tapped Out han generado
miles de millones y han puesto los juegos mviles en el mismo
nivel que los del mercado de videoconsolas.
Es importante saber que para iOS y Android la gran mayora
de los ingresos de los juegos para mviles provienen de juegos
F2P. Tambin vale la pena sealar 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 Mviles

163

en iOS proviene de juegos de alta calidad, casi el doble que en


Android3.
Hacer que los juegos funcionen en mltiples plataformas es
cada vez ms fcil. Alrededor del 54% de todos los juegos mviles estn diseados 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 rpidamente. Consulta el captulo Multiplataforma
de esta gua para obtener ms informacin sobre los entornos
disponibles.
Muchos desarrolladores creen que sern el prximo desarrollador indie que se haga rico. Esto ocurre con juegos tales
como Flappy Bird, que ganan un increble nmero de usuarios,
pero estos casos estn ms cerca de ser premios de lotera que
ejemplos a seguir. En cambio, es importante que los desarrolladores se den cuenta de que el mercado de juegos para mviles
se ha convertido en un espacio sofisticado con muchas facetas
y desafos. Antes de empezar a crear tu juego, necesitas
prestar atencin para comprener la naturaleza del mercado y
el pblico. Una parte esencial de esto es que se ha convertido
en un mercado enormemente competitivo, con un gran nmero
de pequeos equipos productores de grandes volmenes de
contenido gastndose mucho dinero en desarrollo y publicidad
para conservar su posicin.

3 venturebeat.com/2014/04/25/apple-vs-google-a-world-view-on-the-mobile-

gaming-war
Videojuegos para Mviles

164

Gratuitos vs. De Pago


En trminos de econmicos, 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 explicacin 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 opcin. Podemos
buscar volumen (crear un producto bsico) 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 todava 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 fcil 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 frmula que aparente ser muy simple: tomar una
simple mecnica de juego y ofrecer un nuevo contexto social
con el fin de que sea infinitamente repetible; a continuacin,
agregar una forma de friccin 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 friccin, pero hacer que cada objetivo se
convierta en el detonante de uno nuevo, tambin fuera de su
alcance.
Por supuesto esto no es tan fcil y este tipo de frmula
es algo que puede convertirse rpidamente en 'bastante poco
Videojuegos para Mviles

165

divertido' y generar una gran cantidad de abandonos. Incluso


si el desarrollador aade un barril lleno de anlisis de datos
para averiguar dnde estn abandonando los jugadores o para
encontrar la mejor manera de que paguen ms, al final el juego
muere inevitablemente. Peor que eso, cuanto ms juegos son
percibidos con esa rgida aplicacin de un modelo de negocio
ms all del disfrute del mismo juego, ms jugadores rechazan
ese tipo de juegos. Si percibes que el juego no es ms que
un intento de abrirte la cartera, crees que estars muy
enganchado como jugador?
Lo que hace que esos juegos funcionen es que comprenden
a las personas y cmo 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 ms posible el deleite que sienten los jugadores jugadores y
su compromiso a largo plazo, dndoles una razn para querer
gastar dinero. Tenemos que construir 'valor de ciclo de vida'
(lifetime value), no slo 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 empaado
la naturaleza del diseo de videojuegos, llegando incluso a
cuestionarse acerca de la moralidad de estos diseos centrados
en la monetizacin. Comprender qu modelo seguir, gratuito
o de pago, es una cuestin esencial para cualquier desarrollador de juegos mviles, pero no se trata tanto del modelo de
negocio que nos gustara seguir como de la mejor manera de
involucrar al jugador con el contenido que estamos creando
para deleitarle.

Videojuegos para Mviles

166

La tica de Monetizar Juegos


Gran parte de la atencin de la industria mvil en el 2014 se
ha centrado en las cuestiones morales y ticas detrs de las
aplicaciones de pago frente al F2P. Un juego F2P bien hecho
saca el valor del jugador gratuito no slo en trminos de su
potencial viral, sino tambin en trminos de creacin de una
marca y condiciones que animan a los jugadores a pagar. Sin
embargo, los F2P no tienen una gran reputacin, especialmente
entre los padres preocupados por las compras dentro de la
aplicacin y por algunos diseadores de juegos. Ha habido
una serie de escndalos notables, en especial con nios
comprando accidentally miles de dlares en compras dentro
de la aplicacin. Este argumento ha empaado la imagen
de la industria de los juegos en su conjunto y ha atrado la
atencin de los reguladores legales, incluida la UE, que han
publicado directrices sobre la venta de las compras in-app
para nios. Sin embargo, hasta la fecha la regulacin parece
haber sido comprensiva y lgica. Con toda razn, han pedido
a diseadores y jdistribuidores que comunican qu se vende y
cmo se accede a ello, en particular en el caso de un pblico
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 estn impuestas por la
legislacin vigente.
Otra cuestin planteada en contra del F2P es que, como
mnimo, la mitad de los ingresos proviene del 0,15% de los
jugadores. Segn la empresa de testeo de aplicaciones Swrve4,
slo 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 Mviles

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 descargarn un juego como capricho,
pero quizs nunca lleguen jugarlo, y muchos juegos tienen
diferentes perfiles de gasto. Algunos juegos tendrn niveles
de conversin altos, mientras que otros tendrn un tiempo de
conversin ms tardo, y cada juego es diferente. Aunque estos
nmeros tan extremos sean ciertos, sera eso algo necesariamente negativo? Un solo jugador pagando 5.000 dlares 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 manipulacin o la
adiccin. Los diseadores de juegos F2P suelen hablar de
condicionamiento operante, y en particular de un experimento
conocido como 'caja de solucin de problemas' o 'skinner box'.
Estas cajas, que llevan el nombre del psiclogo que las cre,
permite a animales obtener alimentos pulsando un botn. El
experimento demostr que la variacin de la velocidad a la que
el botn liberaba la comida afectaba al comportamiento de los
animales. La premisa es que en los juegos de los diseadores
encuentran la manera de recompensar a los jugadores y que
ste es un mtodo 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 estmulos o utilizamos alimentos (u otras necesidades de
bajo nivel) como motivacin. Como diseadores, hay mtodos
mucho ms potentes para retener a un jugador que dar
recompensas a corto plazo. Podemos contar historias. Podemos
deleitarnos con estmulos visuales y sonoros. Podemos crear
juegos que se convierten en experiencias sociales compartidas.
Todos ellos tienen un efecto estimulante sobre los usuarios
Videojuegos para Mviles

168

mucho mayor que cualquier ejercicio de condicionamiento


operante. En el corto plazo es posible (pero no deberamos)
manipular los jugadores, especialmente las personas vulnerables como los nios, pero si lo haces esa manipulacin
no durar mucho tiempo y, en el largo plazo, reducir nuestro
valor del ciclo de vida. A nivel comercial, es mucho ms eficaz
hacer buenos juegos.
La adiccin 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 preocupacin. Cualquier juego
recompensa a los jugadores con una liberacin de dopamina
cuando tienen xito, lo cual crea una respuesta fisiolgica no
muy diferente al consumo de drogas o el ejercicio fsico. Sabemos que en el caso de los juegos de azar esta clase de qumica
del cuerpo puede crear adiccin, que como es una compulsin
que anula el comportamiento racional. Sin embargo, los juegos
de azar ofrecen un estmulo muy diferente al resto de juegos.
Con los juegos de azar el estmulo 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
mecnica y eso reduce la potencia del estmulo con el tiempo.
Aunque la adiccin a los videojuegos es un problema reconocido, es algo que pertenece al mbito de la adiccin conductual,
donde una actividad normal se convierte en compulsiva. Este
tema an est en investigacin y no est incluido en el Manual
diagnstico y estadstico de los trastornos mentales, en su
quinta edicin (DSM-5).

Videojuegos para Mviles

169

Hacer un Buen Juego


La creacin de experiencias agradables para nuestro pblico
objetivo requerir de nuestra mxima creatividad, tal vez ms.
Los jugadores esperan que creemos diversin y les mostremos
nuevas ideas de contenido, y tambin 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 Tringulo 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 diversin 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 ningn
valor en el mundo real. Llegamos a ser totalmente absorbidos
en la mecnica y la narrativa de la experiencia. Curiosamente,
el desafo y la frustracin 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 diseadores de


juegos conocen, el Flujo de Csikszentmihalyi6.
Tenemos que apreciar que lo que es divertido en el espacio
mvil es diferente de otras plataformas e incluso pueden
parecer contradictorios. Necesitamos juegos que sean simples
y accesibles, pero con suficiente profundidad, propsito y
progresin como para retener la atencin del jugador. Si nos
fijamos en lo que ha sido un xito y en lo que no, vemos que
un juego mvil tiene que darnos un xito significativo en
menos de un minuto, pero que nos mantendr jugando durante
cientos de das. El juego tiene que evitar que recorramos todo
el contenido en una sola sesin, pero tambin conseguir que
juguemos docenas de veces al da. Necesitamos un juego que
sea familiar, pero que tambin destaque lo suficiente como
para ser destacado por las tiendas de aplicaciones. Nuestro
juego tiene que ser agradable (y, a menudo gratis), pero
an as crear nuevas razones para que los jugadores quieran,
es ms, necesiten gastar dinero. Y la lista de las aparentes
contradicciones contina.
Hay juegos desarrollados a partir de mecnicas emergentes,
bloques de construccin que se combinan creando resultados
sorprendentes o estratgicos, como Chess o Clash of Clans.
Luego estn los construidos con una serie de puntos de
decisin 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
diseador. Tenemos que decidir hasta qu punto el juego se
6 scienceandvalues.wordpress.com/2010/02/26/csikszentmihalyis-

flow-pleasure-and-creativity
Videojuegos para Mviles

171

ver afectado por la habilidad y cunto 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 economa de
recursos. En el F2P tambin 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 ms importantes que debes
hacerte es por qu deben elegir tu juego. Seamos sinceros:
la mayora de los videojuegos mviles comienzan como una
distraccin, incluso si al final nos pasamos ms tiempo con
nuestros telfonos que con nuestras consolas. As que por
qu habran 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 diseo clsico y del
marketing de productos te ayudar a tomar buenas decisiones
al respecto.
Enganchando al Jugador Mvil
Cuando desarrollamos juegos para mviles estamos creando
una experiencia para entretener a los jugadores en un tipo
especfico de dispositivo. Tablets y telfonos satisfacen necesidades diferentes y requieren una atencin especfica y detalla
respecto a las necesidades de uso que cubren. El telfono
suele estar centrado en 'el siguiente minuto', es decir lo ms
inmediato, lo que obtenemos cuando esperamos que suceda
algo o necesitamos entretenernos. Cmo usan los jugadores
sus dispositivos tablet? Se trata ms bien de un perodo de
descanso o relajacin ms largo. Qu implica eso para el juego
que queremos hacer?
La produccin de nuestro juego es la combinacin de una
visin nica, una narrativa convincente y una experiencia ha
sido diseado para afectar a las emociones de los jugadores.
Videojuegos para Mviles

172

Todo esto tiene que encajar con la forma en que se consume el


juego y en el mvil tendremos que comprender las restricciones
inherentes a estos dispositivos. El tamao limitado de la pantalla, los controles de pantalla tctil, acelermetros, duracin
de la batera, 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 interactan con el dispositivo. Los telfonos
mviles estn (en su mayora) conectados a Internet y son el
dispositivo ms influyente, ya que siempre los llevamos.
Como ejemplo, piensa en la forma en que implementamos
los controles. Las pantallas tctiles permiten una amplia gama
de movimientos en un plano 2D, pero despus de un corto
tiempo nuestra piel se calienta y pierde capacitancia, por lo
que los controles sern menos fiables. Si simplemente tratamos
de emular un sistema de joystick (como muchos juegos hacen)
que pronto tendrs 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
mvil. En cambio, debemos disear la mecnica de juego con
controles que hagan el contacto cmodo o que comprendan
los lmites de los mtodos disponibles, y hacerlos parte de la
experiencia. MiniGore es un gran ejemplo, donde la dificultad
del juego se ha mejorado gracias a la mecnica twinstick,
que lo hace progresivamente ms difcil de controlar. Por
otro lado, Hayday de Supercell demostr cmo lo tctil poda
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 satisfaccin inmediata de los jugadores no
reemplaza la capacidad de enganchar a ms largo plazo. Sin
embargo, refuerza la necesidad de simplicidad en el juego, tan
Videojuegos para Mviles

173

necesaria en las plataformas mviles, pero la simplicidad en s


no podr seguir sosteniendo el nivel de inters en jugar. Para
mantener a la gente jugando, necesitamos crear un contexto
que nos d una razn para repetir la mecnica de juego. Algo
que nos d un sentido de propsito y progresin, que llame
la atencin despus de que la sesin de juego ha terminado,
animando a volver a jugar. Conviene que esa mecnica inicial
sea agradable incluso tras de miles de obras de juego.
Juegos como CSR y Candy Crush introdujeron este mtodo
de diseo de juegos en el mercado mvil. Encontraron maneras
de encadenar una serie de procesos mecnicos para mantener
la jugabilidad a travs de miles de sesiones, a la vez que daban
la sensacin de que las metas se conseguan mgicamente.
Construyen un compromiso a largo plazo manteniendo a los
jugadores involucrados en su juego mientras la experiencia
sea suficientemente significativa. Conseguir que los jugadores
estn ms tiempo jugando tiene un impacto directo en su disposicin 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 dlares
americanos, pero para los que estuvieron ms de 10 horas se
eleva a 15,15.
Disear el Camino del Jugador
Comprender la importancia del vnculo a largo plazo con
el jugador ha tenido un impacto profundo en el diseo de
videojuegos. La idea de un juego como mecnica o historia se
transforma cuando se comprende que no slo es el personaje
heroico el que se embarca en un viaje, sino que nuestro
jugador tambin lo hace.
7 www.gamesindustry.biz/articles/2014-10-14-mobile-spending-driven-by-35-

44-year-olds
Videojuegos para Mviles

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 debera
comprarlo comprarlo, lo que va a perderse si no lo hacen. Si el
juego es gratuito, tambin tienes que crear expectativas, pero
tambin debes mostrar al jugador por qu la publicidad es es
un mal menor, o si hay compras en la aplicacin por qu vale
la pena realizarlas. Este es un arte delicado. Debes ser claro y
transparente, y an as comunicar por qu el juego es digno de
su tiempo e inversin.
Una vez que el jugador ha tomado la decisin de instalar el
juego tenemos que facilitarle su uso. Haz el icono y nombre del
juego inmediatamente reconocibles e, idealmente, retadores;
es decir, una razn para iniciarlo. En esta etapa no queremos
que tome decisiones acerca de qu personajes utilizar o qu
niveles elegir - que no saben todava. No le hagas seguirte en
Facebook o configurar una cuenta antes de jugar, mustrale de
qu trata el juego. Luego sorprndele. Podemos comprar esto a
"La Apertura Bond", los primeros 5 minutos de cada pelcula 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
ms que eso, asegura que nunca queramos levantarnos del
asiento. Es esta doble funcin de mostrar, no explicar, lo que
establece las expectativas para el resto de la pelcula, algo que
tambin se aplica a los videojuegos. Como es un juego, ms
que mostrar o explicar queremos 'hacer'. El jugador tiene que

Videojuegos para Mviles

175

aprender acerca de los juegos mediante la accin, y disfrutar


de sus logros rpidamente.
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 cmo se percibe el xito
en el mismo. Debemos saber que habr retos y progresin,
as como un sentido de propsito. Esto significa que tenemos
que vernos fracasar y an 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 tcnica que puede
ayudar es el concepto del melodrama. Hay dos cosas que estn
sucediendo aqu. En primer lugar, estamos aceptando que
tenemos que dar a nuestra audiencia una interrupcin natural
en la experiencia de juego, y eso es importante. No sugerimos
evitar que los jugadores continen, pero darles la opcin de
detenerse es til para construir el compromiso, siempre y
cuando se les da una razn para volver. Esa razn para volver
podra ser esperar a tener ms combustible, que las plantas
crezcan, que un vehculo est reparado o incluso que otro
jugador visite la ciudad. La clave es crear la sensacin de que
si no vuelve se estarn 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 sabrs que
estn verdaderamente "comprometidos".
Una vez que los jugadores estn verdaderamente comprometidos, otros factores se vuelven importantes si quieres
mantener su inters. Necesitas mover el juego hacia adelante,
con necesidades cambiantes. Por ejemplo en la forma de contenido o de extensiones de juego. Tambin podra ser a travs
Videojuegos para Mviles

176

de juego social. Esto significa la creacin de una comunidad,


los lazos de unin y el sentido de pertenencia mediante el
establecimiento de reglas compartidas. Cuando diseamos
juegos tenemos que pensar en cmo las reglas que utilizamos
para entretener y crear un compromiso tambin proporcionan
los medios para que las personas se identifiquen con nuestro
juego y lo expresen. Los factores sociales son increblemente
importantes y pueden tener un impacto notable, no slo en
trminos de participacin sino tambin en los ingresos. Si la
compra dentro de la aplicacin no slo ayuda a a sacarle ms
partido al juego, sino que tambin hace ganar prestigio ante
otros jugadores, los jugadores sern ms propenso a hacerlo.
Cabe destacar que las comunidades sociales ayudan a
crear una mayor profundidad de compromiso que algunos
han denominado 'Whales' pero y tambin podemos definir
como "autnticos 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 sern 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 autntico fan. Es importante no
confundir estos jugadores con las personas que son adictas. En
la adiccin los individuos tienen una compulsin que abruma
su comportamiento de otra manera racional. En la prctica, la
mayora de los autnticos fans son personas racionales que han
hecho del juego su principal aficin. 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 Mviles

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
perodo 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 televisin de todos los tiempos es que
hizo algo extrao con la narrativa de un misterioso asesinato:
el espectador ve quin lo hizo. Dnde est el atractivo de
una serie sobre asesinatos si se sabe quines los cometen? La
clave del espectculo estaba en esperar a que Colombo estas
famosas palabras: "Slo una cosa ms!", cosa que siempre
ocurra en los ltimos minutos del programa. El detective habla
por cuarta o quinta vez con el asesino sobre alguna extraa
y aparentemente aleatoria evidencia del crimen. Entonces le
suelta esa frase y el espectador sabe que entonces procedera
aclarar todo lo referente al asesinato, no slo quin hizo, sino
por qu y cmo Colombo lo haba 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 habrs puesto tu diseo
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 vas de comunicacin que podamos
y por lo general estas requieren inversin. Todava es posible
tener xito sin tener que gastar dinero en publicidad, pero
pero implica tener el boleto ganador en una lotera mundial.
Videojuegos para Mviles

178

Esta circunstancia se aplica tanto a juegos como a cualquier


otro tipo de aplicacin mvil. Encontrars algunos consejos de
cmo comercializar tu software en el captulo sobre monetizacin de este libro, y puede que te interesen las siguientes
estrategias especficas para videojuegos.
Hacerse notar por la prensa puede ayudar, especialmente
si participas en competiciones tales como Pocket Gamers Big
Indie Pitch8 o Indie Awards at Casual Connect9. Tambin puede
ayudarte atraer la atencin de los usuarios de YouTube.
Gastar dinero en publicidad puede ayudar, pero es importante ser consciente de que ests compitiendo con mucha
gente y algunos productores relevantes que buscan grandes
audiencias. Es importante recordar lo que ests tratando de
lograr al crear un anuncio. Hay dos motivaciones: el crear
presencia de producto y la accin directa (es decir, la descarga
del juego). Es posible, adems, 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 increble, ya que
ningn otro medio tiene ese tipo de experiencia sin friccin.
Otra de las peculiaridades a tener en cuenta es que cuanto
mayor sea el alcance (rango de jugadores) que buscas, ms
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 licitacin y los resultados se calcular sobre la base
del coste por instalacin (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 vdeo est creciendo y permite al
8 www.pocketgamer.biz/events
9 indieprize.org

Videojuegos para Mviles

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 estn
permitidos por Apple.
Los eventos regulares y de comunicacin con la comunidad
nos permiten mantener y hacer crecer nuestra audiencia.
Sobre la base de autnticas experiencias sociales, tales como
la grabacin de vdeos del juego y el intercambio de datos de
la comunidad (puntuaciones ms altas, etc.), los jugadores
pueden ayudarte a llegar a sus amigos y a otros jugadores
potenciales a travs de Facebook, Twitter, YouTube y Everyplay.
Al final, a pesar de todas las diferencias en los detalles,
el mundo mvil es como cualquier otra plataforma. Tenemos
que adquirir, retener y rentabilizar nuestra audiencia. Eso slo
sucede si entretenemos a los jugadores en una manera coherente con sus dispositivos. Los mviles son, probablemente,
los dispositivos ms sociales y ms integrados de la historia
humana. Los juegos para mviles est creciendo a pesar de
las dificultades, y las lecciones aprendidas afectarn todos los
aspectos del desarrollo de videojuegos.

10

unityads.unity3d.com

Desarrollo Mvil y el
Internet de las Cosas
Hace aos, dos gigantes -la industria mvil y la Internet
industrial (tambin conocida como m2m, telemetra integradas
e industriales)- vivan vidas separadas. Cada una facturando
un billn de dlares hasta la fecha y, sin embargo, con muy
poco conocimiento compartido en temas relacionados con
cmo proporcionar, en ltima instancia, servicios end-to-end
en un mbito que los involucraba a ambos. Algunos dicen que
es debido a que las compaas de mviles no tienen tradicin
en trabajar con tecnologa de terceros, siendo sus formatos
o protocolos a medida de aplicaciones industriales. Otros
dicen que es ms bien porque los desarrolladores de hardware
que crean servicios para el Internet de las Cosas (IoT, de sus
siglas en ingls) no conocen o no prestan inters en aprender
programacin Java para Android o el lenguaje Objective-C,
utilizado para crear aplicaciones nativas para iOS.
Por suerte las tornas estn cambiando, y muchos sistemas
de hardware tradicionalmente cerrados estn abriendo APIs y
cdigo, publicndolo incluso GitHub1. Migrar hacia estndares
ms abiertos y exponer interfaces personalizadas a las
tecnologas basadas en IP resulta prometedor. La necesidad de
comunicar los telfonos con objetos conectados es cada vez
ms comn, y muchos dispositivos de hardware se encuentran
cada vez ms desfasados, o incluso intiles, si no incluyen
una aplicacin. La funcionalidad de un sistema tambin se
incrementa con el tiempo tras la adquisicin de un producto de
hardware mediante la actualizacin de firmware, las aplica1 github.com/

Desarrollo Mvil 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 fsico, gracias a la arquitectura de software dinmica
y la actualizacin 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 mvil


Los primeros usos de dispositivos mviles mostraban el
equivalente a ventanas que indicaban lo que esos dispositivos
estaban haciendo. Actualmente, tanto los dispositivos mviles
como las aplicaciones pueden controlar dispositivos IoT de
forma remota, e incluso actuar como un sensor; donde, por
ejemplo, la posicin GPS de un usuario es esencial para muchos
tipos de localizacin 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, visualizacin, almacenamiento,
operatividad tanto remota como sin conexin, y sistema de
autenticacin.
Ejemplos de integracin de IoT con aplicaciones mviles:

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 ms ejemplos de diferentes mbitos, como la salud, las
infraestructuras urbanas, la monitorizacin del medioambiente
o la industria tradicional.
Desarrollo Mvil y el Internet de las Cosas

183

Herramientas del oficio


Desde el punto de vista del desarrollador, la aparicin y
popularidad de la creciente gama de herramientas y kits de
desarrollo de terceros es ms un punto de inters genuino
que una mera moda pasajera. En el momento de escribir estas
lneas, el IoT mvil es prcticamente una carrera entre dos
caballos llamados iOS y las liberas para desarrollo nativo de
Android SDK. Las APIs REST, por supuesto, se pueden generar
para la mayora de aplicaciones mviles.
El contexto puede ser clave
Cada segmento de mercado del IoT; de los wearables a la
automatizacin de bienes races, desde aplicaciones mdicas
a un control de vigilancia, tiene sus propios desafos; por
ejemplo, el uso sin conectividad, los grandes volmenes de
datos, la necesidad de encriptacin, la interaccin 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 implementacin.
Puede que te preguntes, con razn, qu hace que una
aplicacin sea IoT? Aparentemente no parece muy diferente
de cualquier aplicacin cliente a una base de datos, as que
cul es el factor diferencial? El diablo est en los detalles,
como siempre. Digamos que ests auditando el consumo de
energa en una casa y hay un gadget conectado a la caja de
fusibles, el cual se comunica regularmente con un servicio a
travs de una interfaz RESTful va HTTP, y t accedes a una
pgina web plagada de grficos a travs de tu tablet. Pero
entonces tu cliente quiere leer los datos histricos cuando est
desconectado, o leer una etiqueta NFC, o quizs enviar un SMS
recordatorio amistoso cuando la sauna tenga la temperatura
adecuada, o... por qu no,escanear algunos iBeacons con el
Desarrollo Mvil y el Internet de las Cosas

184

Bluetooth en modo baja energa. De repente, tu proyecto ha


escalado ms all de la seguridad del contenedor web, por no
hablar del presupuesto de tus proyectos web. Por tanto, una
solucin nativa, o a veces una mezcla hbrida de web y nativo,
es el camino a seguir.
Hbridos para prototipado rpido
Como ingeniero de software, hay una buena razn para
considerar herramientas hbridas para el desarrollo y creacin
de prototipos, especialmente cuando tienes un presupuesto
ajustado o tienes prisa. Las tecnologas web son intrnsecamente ms fciles de asimilar para el desarrollador principiante
y permiten un desarrollo ms rpido para crear una UX decente,
y porque se puede escoger entre libreras potentes de terceros
en cada categora para ayudarte a implementar tu aplicacin.
No todas ellas estn directamente relacionados con las tecnologas clave del IoT, pero incluso dentro del mundo industrial
de Internet vemos una creciente coleccin de relevantes extras
a las capacidades estndar de las tecnologas web accesibles
desde un navegador mvil o un componente WebView.
Una de las tecnologas de base ms populares para los
hbridos es el proyecto Apache Cordova, hermano de su versin
comercial Phonegap2 . Varios SDKs hbridos comerciales usan
Crdova 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 especficamente
para cada sistema operativo objetivo) pueden ser combinados
con libertad con el objetivo de crear un proyecto de Xcode
para iOS o una aplicacin Android para publicar en tiendas
de aplicaciones. Tambin existen herramientas y libreras
disponibles fuera de la familia Crdova, algunos unos pocos se
2 phonegap.com

Desarrollo Mvil 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
aparicin de exticos protocolos de comunicacin para un
programador mvil, con nombres como XMPP3, MQTT4 y COAP5.
Las aplicaciones de telfonos 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 tecnologas
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 mayora de los formatos de
mensajera son incompatibles. Para poder hacer TCP de bajo
nivel, conexiones UDP, etc., es necesario introducir otras
tecnologas 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 mviles para TLS (Transport Layer
Security) tambin 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 Mvil y el Internet de las Cosas

186

seguridad del dispositivo IoT, salvndonos de muchas de las incertidumbres que enfrentan los servicios web y APIs expuestos
al pblico Internet.
Como resultado, una segunda ola de aplicaciones est
llegando, en la que las aplicaciones IoT se comunican directamente va radio de corto alcance utilizando protocolos de bajo
nivel basados en IP para los datos del sensor, y mensajes de
telemetra con mnima 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 vdeo 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 Mvil y el Internet de las Cosas

187

Sigue adelante y prospera


Para finalizar este captulo, 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
mvil
Evothings Studio: www.evothings.com, herramientas de
prototipado rpido para IoT para Android e iOS
IFTTT: ifttt.com, empresa cloud que conecta eventos de
mltples servicios online
Intel IoT, and the Intel XDK: software.intel.com/en-us/iot,
herramientas de aplicaciones para microcontroladores y
aplicaciones mviles
Parse: parse.com/products, empresa enfocada al back-end
con una gran cantidad de cdigo cliente y libreras
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 Mvil y el Internet de las Cosas

188

Programando Smartwatches
Despus del trabajo pionero de Metawatch, Pebble y muchas
ms 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 tambin sac Apple Watch. 2015 podra muy
bien ser el ao del smartwatch.

Los Ecosistemas
Pebble, Android Wear, Apple Watch y Samsung Tizen podran
considerarse las mayores plataformas. Tambin hay relojes independientes Android y toda una gama de trackers de empresas
como Nike, quijada, Fitbit, Misfit, Razer y Microsoft. La mayora
de estos dispositivos tienen un historial psimo respecto a la
vida de la batera, por lo que empresas como Martian, Withings
o Cogito aplican mejoras inteligentes a relojes tradicionales. En
lugar de tener tiempos de vida de das, estos relojes aguantan
seis meses o ms con una sola batera.
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
certificacin 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
mviles de Samsung, y Apple Watch, como era de esperar,
requiere un dispositivo iOS para funcionar correctamente.

Programando Smartwatches

191

De cara a interaccin, hay que diferenciar entre aplicaciones


independientes que se ejecutan en el reloj y aplicaciones que
se ejecutan en el telfono pero muestran el contenido en el
reloj. Muchos smartwatches resultan ser bastante limitados
cuando se desconectan del telfono, pero con es posible aadir
una tarjeta SIM y realizar llamadas utilizando directamente el
reloj.
Ser interesante ver cmo reaccionarn los primeros
consumidores sin esperiencia con gadgets a estas nuevas opciones. Aunque es bastante seguro que este sector tendr que
evolucionar ms tener adopcin masiva, tambin parece que
los smartwatches han llegado para quedarse. Hagamos una prediccin para la prxima versin de esta gua: los componentes
especficos de los smartwatches se integrarn en los captulos
de la plataforma pertinentes. Ahora que ya soportas telfonos
y tablets, y posiblemente ordenadores, puedes seguir adelante
y aadir otro factor de forma a tus planes de desarrollo... y ya
que ests en ello, no te olvides de televisores y coches!

Diseo de UX para Smartwatches


Sea cual sea la plataforma que elijas, presta atencin a la
experiencia de usuario de sus aplicaciones para smartwatches.
Como tienes poco espacio necesitas mostrar tus intenciones
muy claramente y sin informacin superflua. No importunes
a tus usuarios con demasiadas notificaciones o exigiendo
una entrada precisa de datos. Algunos dispositivos admiten
interacciones tctiles, pero otros slo utilizan los botones
del reloj. Toques y otros gestos pueden ser difciles de hacer
correctamente en una esfera del reloj diminuto, especialmente
cuando el usuario est desplazndose.

Programando Smartwatches

192

Evala qu notificaciones pueden ser tiles para el usuario,


y si sera prctica permitirle elegir el sistema de notificacin,
por ejemplo la vibracin en un meeting.
Pebble ofrece una excelente qua UX como parte de sus
mejores prcticas de diseo1. La gua incluye navegacin y
pautas de diseo e interaccin.
Este artculo en profundidad de Nielsen Norman Group2
combina un anlisis del Samsung Galaxy Gear con
recomendaciones de diseo para aplicaciones mviles.
Jonathan Kohl ha escrito un exahustivo artculo sobre el
diseo 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
captulo el nico dispositivo compatible con l son slo
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 necesitars una aplicacin
para Android que contenga la aplicacin, pudiendo elegir
diferentes niveles de integracin para soportar smartwatches:
Sin integracin: slo las notificaciones se mostraran en un
smartwatch conectado. Ten presente que esto podra 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 visualizacin e interaccin en el smartwatch,
y aadirles pginas, visualizaciones a pantalla completa y
acciones especficas del smartwatch.
Control de voz: instrucciones de voz para interactuar con
la aplicacin 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 telfono (naturalmente,
necesitaras un reloj con GPS). Puedes utilizar la mayora
de las APIs de Android, slo unas pocas libreras no
estn 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 necesitars un dispositivo real para pulir la
experiencia de usuario. Para desarrollos en Android en general
por favor consulta el captulo Android. Puedes mantenerte al
da de las novedades en Android Wear unindote 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 tamaos 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 versin 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: informacin de slo 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
ms emblemticos 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 ms fcil de desarrollar
aplicaciones smartwatch independientes para Tizen es incrustar
una aplicacin Tizen HTML5 dentro de tu aplicacin Android.
Para la comunicacin entre tu aplicacin en el telfono y tu
aplicacin Tizen tienes que utilizar el SAP SP (Samsung Accessory Protocol Service Profile, un nombre que slo una madre
puede amar, por cierto) - bsicamente un protocolo byte-array
basado en que requiere su propia serializacin. Para el desarrollo general en Tizen, consulta el captulo al respecto.

5 developer.samsung.com/galaxy#rich-notification

Programando Smartwatches

195

Para mantenerte al da 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 captulo,
existen dos ediciones distintas del reloj Pebble: el original y
el de acero. Respecto a hardware, ambos cuentan con una notctil-pero-muy-eficiente pantalla e-Paper con una resolucin
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 estn 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 tambin puedes utilizar Javascript para el
desarrollo de aplicaciones que se ejecutan en el telfono. Una
versin inicial pero no oficial de emulador est disponible en
GitHub7. Con aplicaciones en segundo plano, el acceso a los
sensores y opciones de comunicacin 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 opcin es tener
acceso a los datos en la nube para poder crear tus propias
estadsticas, pero algunos dispositivos tambin son compatibles con aplicaciones independientes. Estos son los trackers
ms populares, junto con las pginas 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

Analticas Mviles
Las analticas mviles 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 aplicacin en el mundo real, cuando los usuarios estn
utilizndola. Las tiendas de aplicaciones proporcionan algunos
datos clave e incluso informacin sobre los bloqueos de
nuestra aplicacin, pero podemos aprender mucho diseando
e implementando analticas mviles, y cubriremos los aspectos
esenciales de este captulo.
Los datos de las analticas mviles pueden ayudar en
muchos aspectos de nuestro trabajo, incluyendo negocio y
operaciones, y tambin podemos aprender formas de mejorar
el desarrollo y testeo del software. Entre toda esa emocin de
desarrollar, necesitamos recordar proteger la privacidad del
usuario y respetar sus preferencias y expectativas. Los efectos
de las analticas pueden molestar a los usuarios al consumir
recursos valiosos o abusar de la informacin confidencial del
usuario y su uso de la aplicacin.

Para qu molestarse?
Las analticas mviles pueden aadir valor a tu organizacin y
tu aplicacin, e incluso a los usuarios de la misma, si se utiliza
la informacin inteligentemente para mejorar lo que haces. Los
datos capturados se pueden utilizar para orientar tu trabajo y
reducir las ineficiencias. Estars bien acompaado: Ms de la

Analticas Mviles

199

mitad de las aplicaciones mviles ms populares ya incluyen


analticas1.
Hay una increble riqueza en la galaxia mvil, donde tu
software se puede utilizar en muchos dispositivos extraos que
presentan diferencias significativas en su comportamiento.
Investigadores han descubierto que la descarga de la batera
puede variar en un rango de 3x cuando se utilizaba su
aplicacin en dispositivos con especificaciones de hardware
similares, e incluso terminaron aadiendo cdigo personalizado
para reducir el brillo de la pantalla mientras que la aplicacin
se ejecutaba en Kindle Fire para mejorar la vida de la batera
en un 40%. Tambin descubrieron que los usuarios que
utilizaban un teclado usaban su aplicacin durante mucho ms
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 publicacin est ms 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 mviles
pueden ayudar a recopilar informacin equivalente y ms datos
especficos de la aplicacin sobre cmo se est utilizando la
aplicacin. Estos datos pueden ayudar a mejorar los aspectos
DevOp de la aplicacin, proporcionando informacin oportuna
y relevante para ayudar a mejorar el funcionamiento de la
aplicacin. Tambin 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
Analticas Mviles

200

Ponindote En Marcha
Como mnimo, 20 empresas ofrecen un festn de soluciones
para analticas mviles con mltiples sabores, desde el trazado
de campaas hasta la mejora de calidad del software. Muchas
adems incluyen funcionalidades extra, por ejemplo informe
de cadas o el trazado de usuarios y beneficios. Casi la mitad
ofrecen implementaciones de cdigo abierto para sus libreras,
quizs para alejar el temor respecto al comportamiento de las
mismas.2
Muchos de los proveedores de soluciones de analticas para
mviles incluyen un apartado 'Getting Started' donde se aprende cmo 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 aplicacin.
Examina muchas de las soluciones potenciales antes de
decidirte por una. Lee la documentacin y cdigo de ejemplo
para ver cmo de fcil es implementarla en tu aplicacin, y
revisa las licencias de usa, incluidos los trminos deprivacidad.
Elige entonces al menos una para experimentar con ella
implementando analticas mviles en tu aplicacin. Integrando
su cdigo aprenders mucho ms acerca de los que puedes
conseguir, y tambin acerca de las analticas mviles en la
prctica.
Por ltimo, lee sobre qu utilizan otras aplicaciones y por
qu tomaron esa opcin, 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

Analticas Mviles

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 mviles la
considera su solucin de analticas principal."5
Probablemente desees consistencia en el informe de
analticas 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
solucin comn que soporte todas las plataformas en las que
deseas construir tu aplicacin.
Dos proveedores son especialmente destacables: Segment.io6 abstrae un amplio abanico de mtricas, y tienen
publicado su cdigo con licencia de cdigo 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
analticas. Count.ly7 ofrece implementaciones de cdigo abierto
tanto va su servidor como a travs de libreras 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/

Analticas Mviles

202

Decidir Qu Medir
Qu te gustara a medir, comprender, acerca de cmo se est
utilizando la aplicacin? Algunas sugerencias:
Eventos clave de uso: Por ejemplo, de cundo se usa
la opcin de bsqueda o se abre una red social desde tu
aplicacin.
Eventos centrados en el negocio: Cualquier interaccin
generada por el usuario que suponga un beneficio para
t. Con qu frecuencia tus usuarios compran la versin
premium de tu aplicacin y otros tems ofrecidos en su
interior? Cundo cancelan pedidos o descartan un carrito
de compra antes de realizar el pago?
Eventos centrados en la aplicacin: Rendimiento, usabilidad, fiabilidad, y otros datos en torno al comportamiento
de la aplicacin.
Una vez definidas las principales reas de inters tendrs
que disear las mtricas de anlisis, por ejemplo, cules
elementos de los datos deberan ser reportados.

Definir Cmo Medir


Crea nombres significativos para tus eventos de interaccin,
para que puedas recordar fcil y correctamente lo que miden.
Para cada evento que desees grabar, debes decidir cules son
los elementos que necesitan ser incluidos. Considera cmo
sern utilizados los datos una vez que se hayan obtenido; por
ejemplo, esboza informes y diagramas estndar y mapea cmo
los diversos datos sern procesados para generar cada informe
o grfico.

Analticas Mviles

203

Asimismo, recuerda abordar temas sobre globalizacin,


tales como la fecha y hora de cada elemento. La aplicacin
detectar el momento de un evento de acuerdo a la ubicacin
del dispositivo, su configuracin o utilizando un tiempo global
como el UTC8?
Algunas de las soluciones de analtica mvil grabarn y
reportarn automticamente los elementos de datos al servidor.
Vale la pena comprobar cules son estos elementos, cmo y
cundo se presentan, y cmo estn formateados. Entonces
podrs decidir si deseas utilizar y confiar en estos elementos
reportados automticamente.
Las etiquetas personalizadas de eventos enriquecen aquellos
predefinidos, y muchas de las soluciones de analtica mvil
proporcionan medios para que tu aplicacin los genere. Es
posible que necesites formatear los mensajes de eventos
personalizados. Si es as, pon atencin a la codificacin de
los elementos y los separadores, es posible, por ejemplo, que
deban pasar por codificacin URL9 cuando se envan mensajes
como REST10.
Tambin puede que desees considerar la frecuencia con
que la aplicacin debe informar sobre eventos para minimizar
el riesgo de saturar la capacidad disponible del sistema de
analticas, lo que podra afectar a la fiabilidad y exactitud de
los datos suministrados. Localytics tiene algunos ejemplos de
integracin interesantes11. Un mtodo para reducir el volumen
de datos procesados es el samping. Adn 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
Analticas Mviles

204

Adaptando tu Cdigo
Puede que tengas que declarar capacidades adicionales necesarias para que los anlisis mviles funcionen correctamente
cuando se integran con tu aplicacin.
Para Android, a stos se les conoce como permisos.
Probablemente las analticas necesitarn permisos de Internet
de modo que los eventos puedan ser enviados online, y
permisos centrados en la localizacin en el caso de que la
solucin registre la ubicacin del telfono. Si tu aplicacin 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 caractersticas de dispositivo requiere la aplicacin. Se implementa como un diccionario donde los
elementos se especifican utilizando claves, que incluyen WiFi,
servicios de localizacin y GPS.
En Windows Phone 7 y 8, se utilizan capacidades para
decidir lo que la aplicacin utiliza. Localytics tiene online una
gua de arranque rpido12 que incluye un ejemplo de
configuracin 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 aplicacin enva un
evento de analticas y la informacin es procesada y puesta a
tu disposicin. El retardo, o latencia, vara entre muy cerca de
'tiempo real' y varias horas. T, y tus promotores, debis decidir
12

www.localytics.com/docs/windows-phone-7-integration/

13

msdn.microsoft.com/en-us/library/windows/apps/jj553431.aspx
Analticas Mviles

205

cunto tiempo podis permitiros retrasar el conocimiento sobre


acontecimientos en tiempo real.
Algunas soluciones de anlisis proporcionan una API para
acceder a los datos. Esto te permite realizar tener un mayor
campo de visin 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 mltiples soluciones
de anlisis en su aplicacin y cruzar despus los resultados.
Sin embargo, dos resultados contradictorios no se reconcilian fcilmente, as que puede ser necesario el uso de tres
bloques de resultados para diagnosticar las diferencias por
triangulacin14 . Si has decidido trabajar con KISSmetrics, echa
un vistazo a su artculo sobre maneras de evaluar tus mtricas
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 implementacin
de alas analticas. Algunas de los ms comunes incluyen:
Resultados sin calibrar: confiar ciegamente los datos
pueden conducir a una vorgine de problemas. Los
resultados puede ser inexacto y engaoso, causando
problemas derivados al ser utilizados para gestionar tu
negocio y trabajo. Una buena prctica es poner a prueba
la aplicacin de anlisis desde el principio, empezando
sin usuarios, y probando despus uno individual antes de

14

en.wikipedia.org/wiki/Triangulation_(social_science)
Analticas Mviles

206

probar con ms usuarios. Mira la latencia, la precisin y la


fiabilidad de los datos capturados.
Traicionar la confianza: los usuarios creen implcitamente que las aplicaciones se comporatarn bien en sus
dispositivos mviles. Sin embargo, las aplicaciones pueden
romper accidentalmente o deliberadamente esa confianza,
por ejemplo mediante el seguimiento de los usuarios, la
grabacin y luego el uso de datos sensibles, etc. Trata de
no esconderte detrs de licencias de uso que poca gente
lee y menos an entienden. En su lugar, asegrate de que
tu aplicacin y las libreras de analticas que utilices se
comportan de forma adecuada y "haz lo que quisieras que
hicieran otros, y no husmees donde no debes."
Regalar el tesoro: asegrate de que tienes derechos
suficientes y acceso a los datos que se obtienen de las
analticas. Es especialmente relevante cuando se utilizan
las bibliotecas y servicios de terceros.
Tenga presente que algunos proveedores de soluciones
analticas pueden utilizar los datos reportados por su aplicacin y proporcionarlos y venderlos a otros. Ellos pueden
controlar la vida de los datos, lo que significa que podran
hacer que sean inaccesible para ti. Adems, podrn conservarlos y usarlos mucho despus de que hayas jubilado tu
aplicacin. Si hay informacin de identificacin personal en
los datos, puede haber implicaciones legales y de privacidad
adicionales. As que vale la pena considerar cmo la utilizarn
terceros y cmo se compartirn los datos comunicados a travs
de tu software y las APIs.

Analticas Mviles

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
aplicacin est diseada para registrar y compartir informacin
acerca de cmo la aplicacin se est utilizando, a ser posible
en los trminos 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 aplicacin. Si es as, faciltale
al usuario el control sobre los ajustes;
adems, 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 analticas.

Analticas Mviles

208

Los proveedores de libreras 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 informacin personal
que permita la identificacin en sus trminos de servicio15.
Otros proveen de ejemplos, incluidos fragmentos de cdigo,
que demuestran cmo grabar datos de identificacin personal.
Por ejemplo, KISSmetrics provee el siguiente cdigo16:
] identify:@"name@email.com"];, y Mixpanel ofrece un
ejemplo de cmo actualizar el registro de analticas personales
de un usuario17.
Hay varios lugares para aprender ms sobre privacidad y
la tica de trabajar con datos relativos a los usuarios, por
ejemplo:
El post en el blog de Jeff Northrop sobre analticas
mviles18
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
Analticas Mviles

209

Aprende Ms
Esperamos que este captulo haya despertado tu curiosidad por
saber ms acerca de las analticas mviles. A continuacin,
algunos lugares para comenzar tu investigacin:
Capturing Mobile Experience in the Wild: A Tale of
Two Apps20, un estudio de la Universidad de Wisconsin
destacando la importancia de las analticas centradas en
las aplicaciones, basado en datos de 1milln de usuarios
recogidos durante 3 aos.
The Beginner's Guide To App Analytics21, disponible en
descarga gratuita.
The Mobile Developer's Guide to the Parallel Universe22,
libro hermano sta gua, centrado en las analticas mviles
desde la perspectiva del marketing.
TNW ofrece un buen artculo introductorio23 desde la
perspectiva de un desarrollador.
Upsight24 ofrece un gran abanico de documentos,
webinars y otros recursos sobre las analticas mviles.

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
Analticas Mviles

210

Application
Security

Seguridad de la Aplicacin
Los lectores de esta gua saben cmo de extendidos estn
los smartphones y cmo de tiles pueden ser las aplicaciones
mviles. Los dispositivos mviles, adems, son tambin mucho
ms personales que lo que jams lo han sido los ordenadores.
La gente se despierta con sus telfonos, permanecen cerca de
ellos todo el da, 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 cercana
y confianza. Por ejemplo, tu telfono puede ser tratado como
un eslabn en el proceso de autenticacin para acceder a tu
cuenta bancaria, o tu tableta puede tener acceso directo a
las pelculas online que has comprado. Tu dispositivo podra
incluso contener una cartera con dinero real para realizar pagos
con NFC o monedas virtuales como Bitcoins.
Las aplicaciones mviles estn atrayendo la atencin de
hackers y ladrones cuyos intereses se extienden mucho ms all
de conseguir gratis una aplicacin de 99 cntimos. En Q3 2014
Kaspersky Lab detect 74,489 programas mviles maliciosos1.
Los datos histricos de la red y las defensas de punto final
(como antivirus) no son suficientes. Incorporar medidas de
seguridad en una aplicacin mvil es un tema crtico.
La arquitectura de las aplicaciones mviles sigue evolucionando. Algunas aplicaciones son slo nativas, y requieren de
bases de cdigo muy diferentes para cada sistema operativo
mvil. Otras son webviews, poco ms que la URL de un sitio
web envuelta en un icono. Algunas son hbridas, una combinacin de funcionalidad de aplicacin nativa con webviews. La
mayora de aplicaciones mviles necesitan conectarse con los
1 securelist.com/analysis/quarterly-malware-reports/67637/it-threat-

evolution-q3-2014
Seguridad de la Aplicacin

212

servicios de back-end utilizando tecnologas web para buscar


o actualizar informacin. Al igual que las aplicaciones web, la
seguridad para aplicaciones clsica necesita ser aplicada a las
aplicaciones mviles. La entrada de datos debe ser validada por
tamao, tipologa y valores permitidos. El manejo de errores
debe proporcionar mensajes de error tiles para los usuarios
a la vez que evitar el filtrado de informacin sensible. Las
pruebas de penetracin en aplicaciones son necesarias para
asegurarse que los controles de identificacin, autenticacin
y autorizacin 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 contraseas u otra informacin sensible. La configuracin SSL debe ser probada.
Los usuarios desean utilizar sus aplicaciones de forma segura y no quieren sorpresas desagradables. Su dispositivo mvil
puede exponerlos a mayores vulnerabilidades, por ejemplo,
su ubicacin podra ser rastreada, potencialmente, utilizando
el GPS incorporado, la cmara y el micrfono podran ser
utilizados para capturar informacin que preferiran mantener
privada, y as sucesivamente. Las aplicaciones tambin pueden
ser escritas para acceder a informacin confidencial, como por
ejemplo los contactos, o hacer llamadas telefnicas de manera
encubierta y enviar mensajes SMS a nmeros de tarificacin
adicional.
El desarrollador de la aplicacin puede estar preocupado
por su reputacin, prdida 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 aplicacin. Pueden
sus datos mantenerse separados y protegidos de todo aquello
que el usuario ha instalado?
Seguridad de la Aplicacin

213

Posibles Amenazas
En algunas plataformas (iOS y Android en particular), desactivar la verificacin de firmas es una prctica bastante comn.
Necesitas considerar si es relevante o no el que alguien pueda
modificar tu cdigo y ejecutarlo en un dispositivo jailbreakeado o ruteado. Un punto obviamente clave sera la eliminacin
de una verificacin de licencia, lo que podra dar lugar a que
tu aplicacin sea robada y usada de forma gratuita. Menos
evidente, pero ms grave, es la amenaza de insercin de cdigo
malintencionado (malware) que puede robar informacin de los
usuarios, o inyectar contenido ilcito, y destruir la reputacin
de tu marca.
La ingeniera inversa sobre tu aplicacin puede dar a
hackers el acceso a una gran cantidad de datos sensibles, tales
como las claves de cifrado para pelculas protegidas con DRM,
el protocolo secreto para hablar con tu servidor de juegos
online, o la manera de acceder al crdito almacenados en el
telfono para tu sistema de pago mvil. Slo se requiere un
hacker y un telfono jailbreakeado para explotar cualquiera de
estas amenazas.
Si tu aplicacin 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 fsico al dispositivo). Y, si ests implementando un
estndar DRM, tendrs que seguir las reglas de robustez que
hacen obligatorias las medidas de auto-proteccin.

Seguridad de la Aplicacin

214

Protegiendo tu Aplicacin
Escondiendo el Plano de tu Cdigo
Algunas plataformas mviles se programan utilizando cdigo
administrado (Java o NET.), integrado por los cdigos de
bytes ejecutados por una mquina virtual, en lugar de hacerlo
directamente en la CPU. Los formatos binarios para estas
plataformas incluyen metadatos que establecen la jerarqua de
clases y dan el nombre y tipo de cada clase, variable, mtodo
y parmetro. Los metadatos ayudan a la mquina virtual a
implementar algunas de las caractersticas del lenguaje (por
ejemplo, la reflexin). Sin embargo, los metadatos tambin son
muy tiles para un hacker que est tratando de realizar ingeniera inversa del cdigo. Hay programas de descompilacin,
de libre acceso, que regeneran el cdigo fuente a partir de los
cdigos de bytes, y hacen ingeniera inversa fcilmente.
La plataforma Android tiene la opcin de usar la Interfaz
Nativa Java (JNI, del ingls Java Native Interface) para acceder a funciones escritas en C y compilar en cdigo nativo. Es
mucho ms difcil que el cdigo nativo sea objeto de ingeniera
inversa en comparacin con Java, por lo que se recomienda
para cualquier parte de la aplicacin donde la seguridad es de
suma importancia.
"gcc" es el compilador utilizado normalmente para generar
cdigo nativo para Android, mientras que su gemelo "clang" se
utiliza para iOS. La configuracin predeterminada para estos
compiladores prepara cada funcin para ser exportada desde un
objeto compartido, y la agrega a la tabla de smbolos dinmicos en el binario. La tabla dinmica de smbolos es diferente
a la tabla de smbolos utilizada para la depuracin y es mucho
ms difcil de desmantelar despus de la compilacin. El
volcado de los smbolos dinmicos puede dar a un hacker un
ndice muy til de cada funcin en el cdigo nativo. El uso
Seguridad de la Aplicacin

215

correcto del conmutador del compilador -f visibility2 es


una manera fcil de hacer que sea ms complicado comprender
el cdigo.
El cdigo compilado en Objective-C contiene el cdigo
mquina y una gran cantidad de metadatos que pueden proveer
a un atacante de informacin sobre nombres y la estructura de
llamada de la aplicacin. En la actualidad, existen herramientas
y scripts para leer estos metadatos y guiar a los hackers, pero
no hay herramientas para ocultarlos. La manera ms comn de
construir una interfaz grfica para iOS es el uso de Objective-C,
pero el mtodo ms seguro consiste en minimizar su uso y
cambiar a C o C++ para todo lo que no sea la interfaz grfica de
usuario.
Escondiendo el Control de Flujo
Incluso si todos los nombres estn ocultos, un buen hacker
todava puede averiguar cmo funciona el software. Hay herramientas comerciales de proteccin de cdigo administrado que
pueden ocultar deliberadamente el camino a travs del cdigo
recodificando las operaciones y rompiendo los bloques de
instrucciones, lo que hace la decompilacin mucho ms difcil.
Con una buena herramienta de proteccin bien ubicada, un
intento de decompilar un binario protegido terminar o bien en
un fallo de decompilador o en un cdigo fuente no vlido.
Decompilar cdigo nativo es mucho ms difcil, pero se
puede conseguir. Incluso sin una herramienta, no se necesita
mucha prctica para ser capaz de seguir el control de flujo
en el cdigo ensamblador generado por un compilador. Las
aplicaciones con un fuerte requisito de seguridad necesitarn
una herramienta de ofuscacin para el cdigo nativo, as como
para el cdigo administrado.
2 gcc.gnu.org/wiki/Visibility

Seguridad de la Aplicacin

216

Protegiendo las Comunicaciones de Red


Las comunicaciones de red tambin 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 trfico de red.
Protege todas las comunicaciones propietarias utilizando
HTTPS. An as, los ataques MATE, especialmente a travs de
redes WiFi, pueden desvelar datos sensibles. Una manera de
incrementar la seguridad en la transmisin es usar encriptacin
asimtrica entre el servidor y la aplicacin mvil (utilizando
pares de claves pblicas y privadas) para asegurar la seguridad
de punto a punto. Para datos y aplicaciones especialmente
relevantes, cabe instalar servidores VPN (del ingls Virtual
Private Network) y tambin sus correspondientes clientes en
los dispositivos mviles. Las redes VPN ofrecen generalmente
mayor fiabilidad en cuanto autenticacin y transporte de datos
respecto a HTTPS.
Protegerse contra la Manipulacin de Datos (Tampering)
Puedes proteger el cdigo base an ms detectando los
intentos de manipulacin en la aplicacin y respondiendo a
esos ataques. El cdigo criptogrfico siempre debe utilizar
algoritmos de cifrado estndar 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 ejecucin? Esto podra resultar en que el
atacante tenga acceso a contenido valioso. Incluso si utilizas
criptografa de clave pblica y slo se expone una parte del
par de claves, todava tienes que considerar lo que ocurrira
si un atacante intercambiara esa clave por la otra mitad que
ya conoca. Se necesita una tcnica para detectar cundo el
cdigo ha sido manipulado. Hay herramientas disponibles
que encriptan/desencriptan cdigo sobre la marcha, ejecutan
Seguridad de la Aplicacin

217

las sumas de verificacin contra el cdigo para detectar su


manipulacin, y reaccionan cuando el cdigo ha cambiado.
Las comunicaciones entre la aplicacin mvil 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 conexin WiFi que inspeccionar
el trfico encriptado. Los atacantes pueden entonces manipular
los datos en trnsito, con fines de lucro o entretenimiento. As
que, si se estn enviando datos realmente sensibles a travs de
HTTPS, considera encriptar/desencriptar datos en la aplicacin
mvil y en el servidor, de modo que los sniffers de red slo
puedan ver datos cifrados.
Protegiendo Algoritmos Criptogrficos
Una herramienta activa contra la manipulacin puede ayudar
a detectar o prevenir algunos ataques a claves criptogrficas,
pero no permitir que las claves permanezcan siempre ocultas.
La criptografa de caja blanca tiene por objeto aplicar los
algoritmos de cifrado estndar de manera que las claves
permanecen ocultas. Algunas versiones de criptografa de caja
blanca utilizan complejos enfoques matemticos para obtener
los mismos resultados numricos de una manera que es difcil
de deducir por ingeniera inversa. Otras insertan claves en
tablas de consulta y mquinas de estados que es difcil que
sean objeto de ingeniera inversa. La criptografa de caja
blanca sin duda ser necesaria si vas a escribir cdigo DRM o
necesitas almacenamiento de datos de alta seguridad.

Seguridad de la Aplicacin

218

Mejores Prcticas
No Almacenes Secretos o Informacin Privada
Minimiza la cantidad de informacin sensible almacenada en el
dispositivo. No almacenes las credenciales o claves de cifrado,
a menos que se utilice un almacenamiento seguro protegido
por una contrasea compleja. En su lugar, guarda los tokens
de autenticacin 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 informacin de ubicacin, o registrar
informacin personalmente identificable de los mismos.
Algunos pases tienen leyes que restringen la informacin
de seguimiento que se puede recopilar, as que asegrate de
comprobar las leyes al respecto de los pases en los que ser
utilizada tu aplicacin.
No imprimas seguimientos de pila ni diagnsticos de
sistema que un havker pueda aprovechar para penetrar a mayor
profundidad.
No Confes en el Dispositivo
Cuando diseas una aplicacin, supn que el dispositivo ser
propiedad de un atacante tratando de abusar de la aplicacin.
Realiza el mismo ciclo de desarrollo de software seguro en
la creacin de aplicaciones mviles que emplearas con los
servicios de backend. No confes ni siquiera en las bases de
datos que creas para tus aplicaciones mviles, un hacker puede
cambiar su esquema. No confes en el sistema operativo para
obtener proteccin, la mayora de esas protecciones pueden
ser anuladas de manera trivial por un jailbreak al dispositivo.
Seguridad de la Aplicacin

219

No confes en que los almacenes nativos de claves mantendrn


los datos protegidos, se puede irrumpir en algunos almacenes
de claves por fuerza bruta, a menos que el usuario proteja el
dispositivo con una contrasea 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 creacin
de la aplicacin, en el archivo AndroidManifest.xml. stos son
mostrados al usuario cuando opta por instalar la aplicacin en
su dispositivo.
Cada permiso aumenta el potencial de que tu aplicacin
haga cosas nefastas, y eso puede disuadir a algunos usuarios
incluso de descargar la aplicacin. As que intenta minimizar
el nmero de permisos o de caractersticas que tu aplicacin
necesita.

Herramientas
Proteccin
El renombrado de cdigo bsico de Java puede ser realizado
mediante Proguard3, una herramienta de cdigo abierto, y
GuardIT de Arxan4 .
Dos comercializadores de herramientas de proteccin de
cdigo 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 Aplicacin

220

La mayora de vendedores de herramientas de proteccin


de cdigo nativo y libreras criptogrficas de caja blanca son
Arxan e Irdeto7.
Las tcnicas para proteger Android frente a manipulacin
de datos estn documentadas en androidcracking.blogspot.com.
EnsureIT de Arxan te permite insertar cdigo adicional en
tiempo de compilacin para detectar depuradores, usar sumas
de validacin para detectar cambios y permitir al cdigo ser
desencriptado o reparado sobre la marcha.
Sniffing
Una herramienta web proxy estndar es Paros8, y una herramienta estndar de sniffing de red disponible en las plataformas habituales es Wireshark9.
De-Compiling
Vase 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 Aplicacin

221

Aprende Ms
A continuacin, algunos recursos y referencias tiles que
pueden ayudarte:
Apple ofrece una gua general de seguridad de software11.
Tambin incluye mltiples enlaces a temas ms detallados
de su plataforma.
Hay cursos comerciales de entrenamiento disponibles para
iOS y Android, y el Lancelot Institute12 ofrece cursos de
programacin 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 cmo de fcil es robar cdigo y datos de
dispositivos iOS.
Investigadores acadmicos han demostrado cunta
informacin puede ser obtenida de aplicaciones pblicas
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 Aplicacin

222

Extensas guas y herramientas de testeo gratuitas de


aplicaciones son ofrecidas por OWASP18, incluyendo el
OWASP Mobile Security Project19.
AT&T ofrece una herramienta de cdigo 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 mviles, pero
estn expuestas a mucha gente que quisiera aprovecharse de
tal confianza. El nivel adecuado de seguridad de una aplicacin
es algo que debe considerarse para cada caso en particular. Al
final, tu aplicacin va a estar ah fuera, sola ante el peligro,
y tendr que defenderse de los piratas informticos y otras
amenazas maliciosas, donde quiera que vaya.
Invierte tiempo en aprender acerca de las caractersticas y
capacidades de seguridad de las plataformas mviles que tienes
como objetivo. Usa tcnicas como el modelado de amenazas
para identificar los peligros potenciales relacionados con su
aplicacin. Realiza revisiones del cdigo y elimina mtodos no
esenciales de registro y depuracin. Considera cmo un hacker
podra analizar tu cdigo y, a continuacin, utiliza tcnicas
similares contra la aplicacin en un ambiente seguro para
descubrir vulnerabilidades y mitigarlas antes de publicar tu
aplicacin.

18

www.owasp.org

19

www.owasp.org/index.php/OWASP_Mobile_Security_Project

20

developer.att.com/application-resource-optimizer
Seguridad de la Aplicacin

223

Accesibilidad
En diciembre de 2014, la Organizacin Mundial de la Salud
(OMS) declar en su pgina web que ms del 15% de la
poblacin mundial tiene algn tipo de discapacidad1 y las tasas
de discapacidad estn aumentando debido al envejecimiento
de la poblacin y el aumento de las condiciones de salud
crnicas, entre otras causas. Esto significa que alrededor de mil
millones de usuarios potenciales podran tener dificultades para
la utilizacin de tu aplicacin en caso de que no sea accesible.
Ha habido un gran aumento en el uso de telfonos inteligentes y tablets en la poblacin 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
habran tenido que comprar costosos complementos. La
encuesta WebAIM Screen Reader2 muestra que ha habido un
aumento sorprendente en el uso de telfonos inteligentes por
personas ciegas que usan lectores de pantalla. Las personas
mayores pueden no haber utilizado un ordenador en el trabajo
pero, sin embargo, estn descubriendo que pueden llegar a
acomodarse a dispositivos de pantalla tctil ms rpidamente
que a un teclado y un ratn tradicionales. A medida que
nuestra poblacin envejece, tambin lo hacen los niveles de
discapacidad y esto significa que ms y ms personas tendrn
dificultades para acceder a los servicios de la manera tradicional. Proporcionar una solucin digital accesible alternativa
garantizar que las personas con discapacidad puedan seguir
siendo independientes. Tambin 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 estn llevando a cabo en una
aplicacin tan rpida y fcilmente 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 sera ser imposible. Por ejemplo, si no son capaces de
salir de la casa para hacer sus compras o gestionar su cuentas
bancarias, la prestacin de servicios en lnea 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 aplicacin accesible:
Implementacin la accesibilidad puede mejorar la usabilidad general: Por ejemplo, asegurar que cada elemento de
botn y forma tiene una etiqueta adecuada, que es til
para todos, no slo los que tienen discapacidades ya que
todos los usuarios sabrn cmo interactuar con l.
Simplemente, es un buen negocio: Por ejemplo, las
personas con discapacidad tienen capacidad de gasto y
Accesibilidad

226

si encuentran una aplicacin accesible que funciona para


ellos no slo lo usarn, tambin la comunicarn a otros.
En escenarios donde las soluciones accesibles son
legalmente obligatorias, tu aplicacin puede ser la nica
opcin para que un negocio pueda operar: Por ejemplo,
tu aplicacin puede ser capaz de aprovechar sectores
del mercado financiados por el gobierno tales como la
educacin, donde legislacin como la Section 508 of the
Rehabilitation Act en los EE.UU. puede exigir una solucin
accesible.
El acceso a los bienes y servicios para todos es ley en
muchos pases: 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 travs de un medio electrnico
como los sitios web y aplicaciones. Los organismos pblicos tambin tienen el deber de anticipacin para asegurar
que sus servicios sean accesibles, por lo que no pueden
considerar la accesibilidad como una ocurrencia tarda.
La organizacin para la que est siendo desarrollada la
aplicacin puede tener un programa de responsabilidad
social corporativa: Por ejemplo, la accesibilidad en webs
y aplicaciones aporta la inclusin social de las personas
con discapacidad, que es un aspecto fundamental de la
responsabilidad social corporativa.
Las plataformas mviles de Apple, Google y Microsoft
aprovechan sus APIs de accesibilidad para las pruebas
automatizadas de la interfaz de usuario: La creacin de
una aplicacin accesible puede hacer tus pruebas automatizadas ms fciles.

227

Qu Funciones de Accesibilidad?
Como muchos de tus usuarios potenciales pueden tener una
discapacidad, esto puede hacer que sea ms difcil para ellos
usar un telfono mvil y sus aplicaciones. Las discapacidades
podran incluir varios niveles de la vista o audicin, discapacidades mentales o dificultades de aprendizaje, discapacidades
fsicas, problemas de destreza, y as sucesivamente.
Muchos de estos usuarios confan en el software de terceros
fabricantes para ayudarles a utilizar su dispositivo. A este
software se le suele conocer como tecnologa de asistencia, e
incluye diversas utilidades en funcin del tipo de discapacidad.
Tradicionalmente este tipo de software o los servicios pblicos
han tenido que ser 'aadidos' a un dispositivo principal, a
menudo a un alto precio, con el fin de hacerlos accesibles o
ms fciles de usar para una persona con una discapacidad.
Algunos telfonos inteligentes y tablets proporcionan
ahora suficientes capacidades para que algunos usuarios con
discapacidad puedan utilizar los dispositivos sin necesidad de
pagar por tecnologa de asistencia adicional. Lo que se ofrece
depende de la plataforma y la versin del sistema operativo.
Sin embargo estas funcionalidades pueden necesitar de una
aplicacin para poder ser ejecutadas.
Usuarios con visin parcial - Alguien que es parcialmente
ciego se beneficia de ser capaz de cambiar el tamao
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 trminos
en su configuracin. Adems del universal 'pellizca para
ampliar' , iOS, Android, Blackberry y Windows Phone
ofrecen una funcin de ampliacin o zoom, que ampla una
seccin de la pantalla y mantiene este nivel de aumento
Accesibilidad

228

cuando se mueve por todo el telfono. Tiene gestos nicos


asociados con ella.
Usuarios ciegos - Alguien que es ciego tiene que tener la
informacin en la pantalla y la navegacin por la pantalla
se le debe indicar con una locucin 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 rpidamente 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 telfono. Blackberry
ofrece un lector de pantalla con funcionalidad limitada en
unos pocos dispositivos.
Usuarios con prdida auditiva - Una persona con una
discapacidad auditiva a menudo har uso de un telfono
inteligente compatible con audfonos que ofrezca funciones como hace iOS 'parpadeos LED de alerta' o 'cancelacin
de ruido'. Tambin hay opciones de configuracin en iOS y
Android para cambiar los subttulos y la ayuda en pantalla.
Hacer uso de la vibracin para las alertas tambin es til.
Un nmero de telfonos tambin proporcionan soporte a
la escucha y dispositivos TTY. Un dispositivo TTY permite
a las personas con prdida auditiva o con limitaciones del
habla escribir mensajes a cualquier otra persona que tiene
un telfono de texto, usando una lnea telefnica.
Usuarios con discapacidades fsicas - Si un usuario tiene
un impedimento motor puede estar usando un producto de
hardware para acceder al telfono, como un interruptor ya
que algunos dispositivos lo permiten. Alternativamente,

229

podra 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 configuracin que utilizara 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 aplicacin con la
tecnologa de asistencia. A medida que estas caractersticas
estn integradas en el sistema operativo y se pueden activar
en la configuracin, es importante que, como desarrollador,
tengas en cuenta que se pueden usar con tu aplicacin y
asegurarte de testearlo.
Como los lectores de pantalla y la ampliacin de la pantalla
en el sistema operativo hacen uso de sus propios gestos, los
gestos en la aplicacin pueden verse afectadas cuando los
lectores de pantalla o de ampliacin estn 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. Segn 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
magnificacin 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 aplicacin y
que cualquier rediseo puede realizarse sin impacto para los
usuarios.
230

Una de las mejores maneras de aprender ms acerca de


estas caractersticas es activarlas y probarlos por ti mismo en
diferentes aplicaciones.

Directrices en el Diseo de Aplicaciones


Las API de accesibilidad buscar texto en atributos especficos
de elementos de la interfaz de usuario estndar. Los lectores de
pantalla utilizados por personas ciegas, como VoiceOver y TalkBack, transforman el texto en voz sinttica que el usuario escucha. El software lector de pantalla tambin puede determinar
el tipo de atributos de control y otros relacionados para ayudar
a proporcionar al usuario ms informacin contextual, sobre
todo si no hay texto disponible. Es importante que el usuario
entienda lo que la etiqueta del control es, cul es el control y
la forma de interactuar con l. En algunos casos puede haber
tambin etiquetas para aportar informacin adicional.
Del mismo modo que los desarrolladores web hacen uso
de normas y directrices tales como las WCAG 2.0 para hacer
pginas web accesibles, es importante los desarrolladores de
aplicaciones hagan lo mismo. En la actualidad no existe un
estndar 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 estndar 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 estndar de aplicaciones y pruebas para todo tipo


de discapacidades basado en su experiencia en este mbito.
Su estndar para aplicaciones nativas refleja tambin los
principios de la norma ISO 9241-171. Ofrecen asesora a
organizaciones y agencias en esta rea y una acreditacin que
se puede conceder a las aplicaciones, las cuales se consideran
accesibles tras un proceso de auditora.
La BBC ha desarrollado un conjunto de Directrices de
Accesibilidad para mviles5 que utiliza internamente en su
contenido mvil. Su gua cubre sitios web mviles, hbridas y
aplicaciones nativas. Afirman que "han de considerarse como
un estndar para los empleados y los proveedores de la BBC,
sin embargo tambin puede ser referencia para cualquier
persona involucrada en desarrollo mvil".
stos son algunos de los principios tiles a la hora de
desarrollar una aplicacin. Si nos atenemos a ellos, tambin le
darn a tu aplicacin la mejor posibilidad de interoperar con
la tecnologa de asistencia que el usuario pueda ejecutar en
conjunto con tu software:
APIs y Directrices para Interfaces
Averigua qu caractersticas de accesibilidad y APIs tiene
tu plataforma y sigue las mejores prcticas en el aprovechamiento de esas APIs, si existen.
Usa elementos estndar 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 aplicacin 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 ms accesible y significar menos
trabajo por tu parte.
Sigue las directrices de interfaz de usuario estndar en tu
plataforma. Esto mejora la consistencia y puede significar
un diseo ms accesible por defecto.
El usuario debe ser capaz de aplicar los ajustes de
preferencias que el sistema operativo proporciona, tales
como la configuracin de accesibilidad.
Navegacin
La navegacin debe ser lgica y coherente. Por ejemplo,
si tiene un botn de atrs en cada pantalla debe estar
ubicado en el mismo lugar en todas las pantallas y
etiquetados de forma consistente.
Soporte de navegacin programtica de la interfaz de
usuario. Esto no slo permitir a tus aplicaciones ser
utilizadas con un teclado externo, tambin mejorar la accesibilidad de tu aplicacin en plataformas como Android,
en la que la navegacin se puede realizar con un trackball
o virtual d-pad.
Elementos de usuario
Todos los elementos de usuarios deben ser visibles y
operables a travs de la tecnologa de asistencia, a menos
que sea obvio que no son necesarios.
Cuando un elemento de usuario tiene un estado asociado
con l, el estado tambin debe estar disponible para ser
ledo por tecnologa de asistencia. Por ejemplo, si un
botn de activacin es 'on', este debe ser anunciado por el

Accesibilidad

233

lector de pantalla. Los cambios de estado tambin debern


ser anunciados.
Asegurar que los objetivos de pantalla tctil son de
un tamao razonable para que se puedan seleccionar
fcilmente.
Etiquetado
Todos los elementos, incluyendo elementos de formulario, botones, iconos y as sucesivamente, debern ser
etiquetados visualmente y mediante programacin con un
nombre corto y descriptivo. La etiqueta tambin 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 navegacin.
Colores y Fuentes
Asegrate 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 accin. Un usuario daltnico no ser capaz de
identificar los errores si se le muestran en rojo los datos a
corregir, por ejemplo.
Considera el tamao de la fuente ms pequea. Es razonable considerar que la mayora de la gente podra leerla
sin dificultad?
Notificaciones
Los mensajes de error, notificaciones y alertas deben ser
identificables y claros.
Accesibilidad

234

Asegrate de que los mensajes de error, notificaciones


y alertas no son proporcionados slo por un color, una
seal hptica, o una sonora. Por ejemplo, una persona con
prdida auditiva no reconocer notificaciones que slo son
audibles.
Testeo
No te olvides de probar tu aplicacin en el dispositivo de
destino con la tecnologa de asistencia integrada para ese
sistema operativo.
Asegrate de que tu test de usuarios incluye a las
personas con discapacidad tambin!
Apple, Google y Microsoft, han aumentado la importancia de
sus respectivo soportes de accesibilidad mediante la interfaz
de Accesibilidad para mejorar su automatizacin de pruebas
de interfaz. Esto proporciona un incentivo ms para que los
desarrolladores consideran el diseo de sus aplicaciones desde
el punto de vista de la accesibilidad.
En cuanto a las diferentes plataformas mviles, se hace
evidente que difieren en gran medida con respecto a sus APIs,
pero estn empezando a poner en prctica muchas de las
mismas caractersticas de accesibilidad.

Controles y Elementos Personalizados


Si ests utilizando elementos de interfaz personalizados en tu
aplicacin, las plataformas que tienen una API de accesibilidad
te permiten hacer tus controles personalizados accesible.
Para ello, expn el control a la tecnologa de asistencia que
se ejecuta en el dispositivo para que pueda interrogar a las
propiedades del control y hacerlo accesible.
Accesibilidad

235

Puedes obtener ms informacin 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 versin de Android, la versin 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 subtitulacin oculta
en la versin 4.0, en 5.0 tambin hay caractersticas experimentales en los ajustes que incluyen inversin 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 fsica que
quieran acceder a una app con un disposotivo de hardware
Soporte al etiquetado - ofrece etiquetas y subttulos para
personas con dificultades auditivas
Gestos de aumento - aumento tipo zoom para usuarios
con dificultades visuales
Texto con gran tamao 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 pulsacin - para usuarios con dificultades


motoras
Inversin 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 fsicas que deseen
controlar el telfono con su voz
Encontrars algunos recursos tiles en la Support Library9,
que incluye maneras de mejorar la accesibilidad de las vistas
personalizadas.
Para obtener informacin especfica sobre cmo utilizar
la API de accesibilidad de Android, junto con las mejores
prcticas en accesibilidad en Android, consulta el documento
de Google titulado Making Applications Accessible10.
Tambin puedes encontrar ms ejemplos en la documentacin de desarrollo, en una seccin titulada Implementing
Accessibility11. Testear la accesibilidad tambin est tratado
online12 .
Para obtener ms informacin sobre la accesibilidad en
Android, incluyendo cmo 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
caractersticas de accesibilidad que son tiles para personas
con diversas discapacidades. Las funcionalidades que ofrece
son ms limitadas, sin embargo s soporta TTY para personas
con prdida de audicin. Como slo hay un lector de pantalla
disponible para dispositivos BlackBerry y no est tan desarrollado como VoiceOver para iOS o TalkBack para Android,
Blackberry estn siendo considerados por muy pocas personas
ciegas en la actualidad.
Para los dispositivos Blackberry 7 y BlackBerry 10, el Blackberry Screen Reader14 slo est disponible para un nmero muy
limitado de dispositivos. Viene preinstalado en los dispositivos
Blackberry 10 y se puede descargar para otros dispositivos
compatibles. Puedes ver cules 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 sinttica para
usuarios con poca o ninguna visin. Slo est disponible
en el BlackBerry Z30.
'Modo Ampliar' - permite al usuario aumentar y disminuir
la ampliacin de la pantalla de texto y sus elementos.
Subttulos y etiquetas - son tiles en el contenido de
vdeo para las personas con prdida de audicin.
Configuracin 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 visin parcial.
Configuracin de TTY - para usuarios con prdida auditiva
que quieren usar usar texto en lugar de la voz para
comunicarse.
Soporte a la escucha - disponible en algunos telfonos.
Encontrars documentacin sobre la creacin de aplicaciones accesibles para Blackberry 10 en "Accessibility features
and best practices - BlackBerry Native"16.
Si ests diseando para Blackberry 10, tambin hay recursos
de desarrollo que incluyen algunas directrices de diseo en
"Blackberry 10 Design Guidelines"17.
Si ests desarrollando para BB OS 7.1, tienes amplia
informacin sobre el uso de su API de accesibilidad y muchos
consejos sobre diseo 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 rpidamente.
Algunas de las caractersticas 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 aplicacin para poder ser
utilizada por personas ciegas.
Zoom - aumenta el tamao 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 Subttulos - para usuarios con dificultades
auditivas.
Alertas audibles, visibles y hpticas - permite elegir qu
tipo de alerta utilizar para las notificaciones.
Control por voz y Siri - permite llamar por telfono y usar
ciertas funciones del telfono mediante comandos de voz.
Puede ser til para muchos usuarios, por ejemplo aquellos
con dificultades de motricidad, de aprendizaje, o de visin.
Soporte a Audfonos - para personas con prdida de
audicin.
Control de Acceso - para aquellos con discapacidades
fsicas que quieran utilizar hardware de terceros para usar
la aplicacin.
Acceso Guiado - til en el mbito educativo o cuando
alguien quiere limitar qu es accesible desde la pantalla de
un usuario.
Si ests trabajando en iOS, asegrate de seguir las directri-

Accesibilidad

240

ces de accesibilidad de Apple19. Aportan informacin detallada


de la API y una excelente fuente de recomendaciones para
maximizar la experiencia de usuario en tus aplicaciones.
Apple tambin ofrece ayuda sobre cmo testear la accesibilidad de tu aplicacin con VioceOver20.

Accesibilidad en Windows Phone 8


Es justo decir que Microsoft ha estado ponindose al da con
iOS y Android en cuanto a accesibilidad. Desplegaron un buen
apoyo para la ampliacin, el cambio de tamao 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 todava en fase beta,
que lee el texto en voz sinttica y, al igual que otros lectores
de pantalla del telfono, hace uso de sus propios gestos
especficos. Est diseado para usuarios con poca o ninguna
visin, pero todava necesita mejorar para ser tan til como
iOS y Android. Slo puede utilizarse con algunas funciones
bsicas y la navegacin, y no tiene tantas funciones como
otros lectores de pantalla. En el momento de escribir estas
lneas slo est disponible con la pantalla, teclado y ajustes de
idioma para ingls de Estados Unidos. Sin embargo, es sin duda
prometedor.
Algunas de las caractersticas 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 an en beta, iene una


funcionalidad limitada y slo est disponible en 8.1
Tamao de Texto - el tamao 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 slido en vez de imgenes.
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 tamao de fuente y el color y la transparencia del
fondo de los subttulos en Internet Explorer, y tambin en
las aplicaciones que hacen uso del navegador. til para
personas con prdida auditiva o de visin
Compatibilidad con TTY - permite a las personas con
prdida 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 caracterstica interesante para todos los
usuarios, pero especialmente til para las personas con
discapacidades, ya que se puede activar con el habla
La documentacin "Accessibility for Windows Runtime

Accesibilidad

242

Apps"21 te proporcionar ayuda, ya ests desarrollando en C#/


VB/C++ y XAML o JavaScript y HTML.
Microsoft tiene sus Directrices para el Diseo 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, explicndote cmo
hacerlo de una manera accesible. Tambin recoge algunas otras
guas de terceros que pueden ser tiles. Por ejemplo, si ests
desarrollando en HTML ser importante considerar el uso de
Accessible Rich Internet Applications 1.0 (WAI-ARIA)23, til
para hacer el contenido dinmico ms accesible a los lectores
de pantalla.
Slo una vez que hayas teasteado la accesibilidad de tu
aplicacin24, Microsoft te permitir declarar que tu aplicacin
es accesible en su tienda aplicaciones25, lo que le permitir
ser descubierta por los usuarios que filtren sus bsquedas por
accesibilidad.

Accesibilidad de Aplicaciones Web


Mviles
Como se ha mencionado anteriormente en este captulo, se ha
escrito mucho acerca de la accesibilidad web, pero menos se ha
escrito sobre la accesibilidad en relacin con las aplicaciones.
Esto tambin se aplica a la accesibilidad de la web mvil. Es
un rea que tiene un inters 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 nmero de grupos de trabajo en el W3C que se relacionan
con esta rea estn creciendo y pueden proporcionar ayuda y
documentacin til.
El W3C ha publicado un anlisis estado de la cuestin y hoja
de ruta que enumera los Estndares para Aplicaciones Web en
Mviles26.
El W3C ha sugerido que todo aquello que utilice HTML y est
basado en web debera 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. Tambin
encontrars que las Relationship between Mobile Web Best
Practices (MWBP) and Web Content Accessibility Guidelines
(WCAG)27 son un recurso til.
Si tu aplicacin desea imitar el aspecto y usabilidad de
una aplicacin nativa, entonces debes seguir las directrices
mencionadas anteriormente en este captulo.

26

www.w3.org/Mobile/mobile-web-app-state

27

w3.org/TR/mwbp-wcag/
Accesibilidad

244

Como el HTML5 cada das es ms soportado en las diferentes


plataformas mviles, te recomendamos leer la gua de mejores
prcticas "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 mvil futura.
Otra rea clave para orientarse es "Accessible Rich Internet
Applications 1.0 (WAI-ARIA)" de W329, ya que ha sido diseada
para asegurar que las funciones de HTML ms dinmicas 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 ms fcil
para las aplicaciones web trabajar en una amplia gama de
contextos - diferentes dispositivos, diferentes tecnologas de
asistencia (AT), diferentes necesidades de los usuarios". Esta
lnea de trabajo va a ser muy importante para la accesibilidad
y la independencia de los dispositivos. Vale la pena mirar la
documentacin 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 mviles y, mientras tanto, los dispositivos mviles
evolucionan muy rpidamente en comparacin a otros tipos de
bienes. El testeo de aplicaciones mviles tiene que mantenerse
en vanguardia an cuando el ritmo de cambios contina
acelerndose.
El destino de las aplicaciones mviles depende de que los
usuarios, al igual que las multitudes en los anfiteatros de la
poca romana, a menudo toman la decisin final de si una aplicacin vive para luchar otro da, o muere. Del mismo modo, las
aplicaciones comunes y corrientes son propensas a languidecer
como un mero dato estadstico ms en la tienda de aplicaciones, faltando al duro trabajo de su ideacin, produccin y
lanzamiento. Adems, el estigma de una mala calificacin tiene
una vida media larga y es difcil sobreponerse a l.
Testear podra ser visto como una inconveniencia, pero
los fallos en tu aplicacin pueden ser demasiado notorios,
y recuperar tu credibilidad es difcil cuando tu aplicacin
tiene mala puntuacin en la tienda de aplicaciones. As que
puedes esperar a que los usuarios decidan su destino, o testear
tus aplicaciones mviles 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 ms efectiva tu aplicacin.

Testeo

247

Cuidado con las especificaciones


Plataformas, redes, dispositivos, en incluso firmware, todo son
especificaciones, y cualquiera de ellas podra causar problemas
en tus aplicaciones. Hay varias maneras de identificar sus
efectos, por ejemplo un tester puede notar diferencias en el
rendimiento de la aplicacin 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 aplicacin para Android, provocados
por las diferencias entre dispositivos, y un error especfico a
Android 4.0.4. Las pruebas automatizadas se ejecutaron en 30
dispositivos durante 30 minutos, lo que hizo esta prueba prctica y til, en lugar de tener que pasar 60 horas tratando de
hacer pruebas manuales de la aplicacin en 30 dispositivos1.
Necesitas conocer estas especificaciones para poder decidir
si se deben abordar las diferencias no deseadas mediante
modificaciones en aplicacin antes de su lanzamiento.
Por el contrario, las analticas mviles puede ayudarte a
identificar diferencias en diversos aspectos, incluyendo el
rendimiento y el consumo de energa cuando la aplicacin
est siendo utilizada por muchos usuarios en gran variedad
dispositivos. Puedes ver algunos ejemplos de diferencias en
el comportamiento y en cmo los problemas se abordaron en
un artculo publicado por cientficos de la computacin de la
Universidad de Wisconsin2 .
Este captulo 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 especficas se tratan en sus captulos correspondientes.

El Testeo Necesita Tiempo - Planifcalo


Ejemplo de Clculo
Asumamos que tu aplicacin 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 llevara diez horas testear la aplicacin. Por otra parte,
si testeas cada epic utilizando las tres perspectivas con dos
casos de uso, el testeo te llevara 60 horas. Habitualmente,
hacer pruebas consique detectar defectos y otros temas que
vale la pena reportar, lo que requiere ms 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 aplicacin (funcionalmente), y en el
peor llevar hasta 110 horas probar la aplicacin en los tres
enfoques posibles.

3 tambin

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

600

Horas de
Trabajo
Defectos
detectados
Horas de
Trabajo

50

Es posible que tambin necesites aadir al clculo mucho


ms tiempo para probar la aplicacin en una variedad de
dispositivos compatibles, particularmente para aplicaciones
web y aplicaciones nativas Android.
Testeo Continuo
Los lanzamientos continuos necesita pruebas continuas.
Una aplicacin 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
produccin. Las pruebas de produccin incluyen su validacin,
as como la deteccin temprana de problemas potenciales
antes de que se dispare su nmero.
Gestionando tu Tiempo de Pruebas
El testeo, como ya has descubierto, puede tomar muchas horas,
mucho ms de lo que desearas, especialmente si te aproximas
a una fecha lmite, como la de lanzamiento. Hay varias formas
de administrar el tiempo a invertir en las pruebas, y las pruebas en paralelo se pueden ser ms interesantes, gratificantes y
productivas.
Testeo

250

Reducir el tiempo de configuracin: Encuentra maneras


de desplegar aplicaciones de forma rpida y eficiente.
Implementar mecanismos para proporcionar los datos y la
configuracin de las pruebas correspondientes, tanto en el
dispositivo mvil como en los servidores pertinentes. Trata
de tener dispositivos y sistemas 'listos para testear'.
Reducir el tiempo necesario para la presentacin
de informes y anlisis de errores: datos, capturas de
pantalla, e incluso de vdeo, pueden ayudar a investigar
los bugs ms fcil y rpidamente. Los datos pueden incluir
los logs, las configuraciones del sistema, el trfico de red y
la informacin de tiempo de ejecucin.
Anlisis de riesgos: Se puede utilizar el anlisis de
riesgos para decidir cmo y cundo asignar recursos a
las pruebas. Los riesgos son difciles de determinar con
precisin por el tester o el desarrollador individualmente;
un esfuerzo conjunto de todos los implicados en la
aplicacin mvil puede ayudar a mejorar el anlisis de
riesgos. A veces, el tester es el encargado de ajustar la
valoracin 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 estn involucrados en probar una
aplicacin, 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


contraseas, URLs difciles de adivinar y otras tcnicas. Las
aplicaciones instalables necesitan por lo menos una forma de
ser instaladas, por ejemplo utilizando una tienda de aplicaciones de empresa o servicios de implementacin especializados.
Estos enfoques pueden aumentar tus otras pruebas, pero no
recomendamos su uso como nico testeo formal. Para obtener
buenos resultados tendrs que dedicar parte de tu tiempo
y esfuerzo a la definicin de las pruebas que deseas que se
ejecuten, trabajar con la empresa para revisar los resultados,
etctera.

Effective Testing Practices


Testear, al igual que otras competencias, se puede mejorar
mediante la aplicacin de diversas tcnicas y prcticas.
Algunas de ellas tienen que aplicarse en el desarrollo de tu
aplicacin mvil, tales como la capacidad de testeo, mientras
que otras se aplican al crear tus pruebas, y algunas cuando las
ests realizando. Testdroid ofrece una buena lista de control6
para asegurar la correcta adquisicin de experiencia en testeo
por parte de tu equipo.
Mnemnicos que resumen los Tests Heursticos
Los tests heursticos son directrices falibles, o sugerencias, que
tienden a ser tiles. Varios han sido creados especficamente
para ayudar a probar aplicaciones mviles y algunos utilizan
cdigos menmnicos 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 aplicacin cambiando


su orientacin (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 localizacin), Interaction/Interruption (Ver
cmo tu aplicacin interacta con otros programas, en
particular los integrados, aplicaciones nativas), Communication (Observa el comportamiento de tu aplicacin
al recibir llamadas, correos electrnicos, etc.), Ergonomics
(Bsqueda de reas con problemas en la interaccin,
por ejemplo, fuentes pequeas), Data (Test del uso de
caracteres especiales, diferentes idiomas, soporte a contenido externo, grandes archivos de diferentes formatos,
notificaciones), Usability (Busca cualquier accin 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 conexin)
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 diseando e implementando formas de probar tu
aplicacin durante su desarrollo; especialmente para pruebas
automatizadas. Por ejemplo, utilizar tcnicas como la inyeccin de dependencias en el cdigo permite sustituir servidores
reales (lentos y fragmentados) con los servidores de simulacros
(controlables y rpidos). Utiliza identificadores nicos y claros
para los elementos clave de la interfaz de usuario. Si los
mantienes sin cambios tus identificadores pruebas requerirn
menos mantenimiento.
Separa tu cdigo en mdulos comprobables. Hace varios
aos, cuando los dispositivos mviles y herramientas de
software eran muy limitadas, los desarrolladores optaron por
optimize su cdigo mvil en bloques monolticos de cdigo;
sin embargo, los dispositivos actuales y plataformas mviles
implican que esta forma de optimization es innecesaria y
posiblemente contraproducente .
Ofrece maneras para consultar el estado de la aplicacin,
posiblemente a travs de una interfaz de depuracin personalizado. Si no, tu, o sus testers, podrais pasar mucho tiempo
tratando de comprender los problemas cuando la aplicacin no
funciona como se esperaba.
Prueba de combinacin : es una tcnica para encontrar
errores mediante la combinacin de los parmetros de
manera eficiente, requiriendo muchas menos pruebas que
intentando todas las permutaciones posibles. Una tcnica
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 ms las sesiones de testing exploratorio. Los tours
ayudan a enfocar tus tests, Cem Kaner describe un tour como
"una bsqueda dirigida a travs 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 combinacin de
diferentes tours en diferentes perspectivas (vase la heurstica I SLICED UP FUN), se puede seleccionar la cobertura y
profundidad de la prueba.
Examples of Tours11 include:
Tour de configuracin: intenta encontrar todas las
maneras en que se puede cambiar la configuracin en el
producto de manera que la aplicacin conserva dichos
ajustes.
Tour de funciones: se mueve a travs de la aplicacin y
se familiariza con los controles y caractersticas que se
encuentre.
Tour de estructura: encuentra todo lo que pueda acerca
de lo que se refiere al producto fsico (cdigo, interfaces
de hardware, archivos, etc.).
Tour de variabilidad: busca las cosas que se pueden
cambiar en la aplicacin - y trata de cambiarlas.
Ms informacin sobre este y otros mtodos de pruebas

10

kaner.com/?p=96, ver tambin 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 Fsicos y Virtuales
Los dispositivos fsicos 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 mviles.
Los dispositivos virtuales son generalmente libres y estn
disponibles de inmediato para instalar y utilizar. Algunas
plataformas, incluyendo Android, te permiten crear dispositivos
personalizados, por ejemplo con una nueva resolucin de
pantalla, que puede utilizar para probar aplicaciones, incluso
antes de que el hardware adecuado est disponible. Pueden
proporcionar pruebas bsicas rpidas de tus aplicaciones. Las
principales diferencias son: el rendimiento, la seguridad y la
forma en que interactuamos con ellos en comparacin con los
dispositivos fsicos. 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.
Tambin es posible identificar nuevos dispositivos, que tu
aplicacin no soporta actualmente, durante las revisiones,
como se puede ver a continuacin:

12

www.amazon.com/Exploratory-Software-Testing-Tricks-Techniques/
dp/0321636414
Testeo

256

Grupo de usuarios existente


La mzcla 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 aplicacin

El dispositivo o plataforma
ms interesante

En ltima instancia, el software necesita ejecutarse en


dispositivos reales, fsicos, ser utilizado por sus usuarios
previstos. Las caractersticas de funcionamiento de diversos
modelos de telfono varan enormemente de unos a otros,
y tambin respecto a los dispositivos virtuales. Por tanto,
comprar, pide prestado y mendiga si hace falta telfonos para
realizar tus pruebas. Un buen comienzo es elegir una mezcla
de aquellos populares, nuevos y que incluyen caractersticas
especficas o caractersticas tales como: pantalla tctil, teclado
fsico, resolucin de pantalla, chipset de redes, etctera.
Prueba tu software en al menos uno de gama baja o antiguo
, ya que tambin deseas satisfacer a usuarios con estos
dispositivos sean.
Estos son algunos ejemplos de reas a poner a prueba en
los dispositivos fsicos:
Navegacin por la interfaz de usuario: por ejemplo, pueden utilizar los usuarios tu aplicacin con una sola mano?
Efectos de las diferentes condiciones de iluminacin: la
experiencia de la interfaz de usuario puede diferir bajo la
luz del sol cuando ests fuera de casa. Es un dispositivo
257

mvil - la mayora de los usuarios estarn en movimiento.


Gira la pantalla y asegrate de que la aplicacin es
igualmente atractiva y funcional.
Localizacin: si utilizas la informacin de ubicacin en
tu aplicacin: muvete tanto de forma rpida como lenta,
y ve a lugares con cobertura de red y GPS irregulares para
ver cmo se comporta su aplicacin.
Multimedia: el soporte a audio, reproduccin de vdeo y
servicios de grabacin puede diferir drsticamente entre
los dispositivos reales y sus respectivos emuladores.
Conectividad a Internet: conectar a Internet puede llevar
una cantidad increble de tiempo. El retardo en la conexin
y el ancho de banda dependen de la red, su potencia real
y el nmero de conexiones simultneas. Pon a prueba los
efectos de una conectividad intermitente tu aplicacin.
Como ya se ha mencionado, el crowdtesting tambin 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 fsicos a mano o si necesitas probar
la aplicacin en otras redes, especialmente en el extranjero o
diversas localizaciones, entonces un servicio de dispositivos
remotos podra ayudarle. Te puede ayudar a extender la
amplitud y profundidad de tu prueba con poco o ningn coste.
Varios fabricantes ofrecen este servicio sin coste alguno a
los desarrolladores de software registrados para un subconjunto
de sus modelos de telfono. 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.
Tambin puedes utilizar los servicios comerciales
de empresas tales como SauceLabs.com, testdroid.com,
PerfectoMobile.com o DeviceAnywhere.com para realizar pruebas
similares a travs de una gama de dispositivos y plataformas.
Algunos fabricantes promueven estos servicios pero, sin
embargo, a menudo hay que pagar por ellos despus de un
corto periodo de prueba. Algunos de los servicios comerciales
proporcionan APIs para que puedas crear pruebas automatizadas.
Puedes incluso crear un depsito privado de dispositivos
remotos, por ejemplo alojndolos 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 deteccin temprana de problemas.
Para ello, tienen que estar bien diseadas e implementadas. De
lo contrario, corres el riesgo de duplicar la carga de trabajo y
mantener un embrollo de aplicacin y pruebas automatizadas
incompletas y poco fiables. Las buenas pruebas automatizadas
imitan las buenas prcticas de desarrollo de software, por
ejemplo utilizando Patrones de Diseo15, modularizacin,
revisiones de cdigo, etctera.
Testear aplicaciones mviles 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 travs de una gama
de dispositivos. Afortunadamente, varias de las principales
plataformas de desarrollo mvil incluyen la automatizacin
de pruebas en sus herramientas bsicas, como Android y iOS.
Y hay herramientas multiplataforma de automatizacin de
pruebas disponibles para plataformas populares; siendo algunas
son gratuitas y de cdigo abierto, mientras que otras son
comerciales.
Es importante evaluar la longevidad y la vitalidad de
las herramientas de automatizacin de pruebas que vas a
utilizar, de lo contrario es posible que cargues con cdigo de
automatizacin de pruebas no soportado. Las herramientas de
automatizacin de pruebas proporcionadas como parte de un
SDK de desarrollo son dignas de consideracin. Generalmente
son gratis, inherentemente disponibles para la plataforma en
particular, y apoyadas por grandes empresas.
Automatizacin de Pruebas en BDD
BDD es el acrnimo 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 intencin de ser legible y comprensible por cualquier
persona involucrada con el proyecto de software. Pueden ser
escritas en cualquier idioma humano, por ejemplo japons17, 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 mviles. 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' (pequeos scripts que
interactan con la aplicacin en pruebas) tienen que ser
escritos por alguien con conocimientos de programacin.
Automatizacin de Pruebas GUI
La automatizacin de pruebas de GUI permite a las pruebas
automatizadas interactuar con la aplicacin a travs de la
interfaz grfica de usuario (GUI). Es uno de los elixires de la
industria de pruebas, muchos han intentado, pero pocos han
tenido xito en la creacin de una automatizacin de pruebas
GUI til y viable para las aplicaciones mviles. Una de las
principales razones por las que la automatizacin de pruebas
GUI es tan difcil es que la interfaz de usuario est sujeta a
cambios significativos que puedan romper la forma en que las
pruebas automatizadas interactuan con la aplicacin.
Para que las pruebas sean eficaces a largo plazo, y como
la aplicacin tiende a cambiar, los desarrolladores necesitan
disear, implementar y soportar las etiquetas y otros elementos
utilizados por las pruebas automatizadas de interfaz. Tanto
Apple, con UI Automation18, y ms 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 automatizacin de
pruebas.
Algunas empresas han convertido sus herramientas a cdigo
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 cdigo abierto de xito incluyen
Robotium22 y Frank23.
Pruebas Unitarias
Una prueba unitaria consiste en escribir pruebas automatizadas
que ponen a prueba pequeas secciones de cdigo, por lo general slo unas pocas lneas. Generalmente deben ser escritas
por el mismo desarrollador que escribe el cdigo fuente de la
aplicacin, ya que reflejan cmo se espera que esas secciones
se comporten.
Las pruebas unitarias tienen una larga tradicin en el
desarrollo de software, en el que JUnit24 ha generado entornos
similares para prcticamente todos los lenguajes de programacin utilizados para desarrollar aplicaciones mviles.
Las pruebas unitarias son slo un aspecto de las pruebas
automatizadas, y no son suficientes para demostrar que la
aplicacin 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 aplicacin.
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 aplicacin mvil puede ser parte del
equipo de desarrollo, pero tambin puede ser responsable de
facilitar las pruebas de la experiencia del usuario en produccin. Dependiendo de en qu fase ests 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 anlisis 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
anlisis de los resultados de las pruebas de usabilidad, como
la grabacin de vdeo. El ciclo de vida de una aplicacin mvil
encaja en 5 fases: implementacin, verificacin, lanzamiento,
retencin y validacin, 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 sern ms fcil de aplicar en las fases posteriores.
Fase 1: Implementacin
Esto incluye diseo, cdigo, pruebas unitarias, y creacin de
tareas. Tradicionalmente, los probadores no estn involucrados
en estas tareas; sin embargo, un buen testeo aqu puede
mejorar significativamente la calidad y el xito de la aplicacin
al ayudarnos a asegurarnos de que nuestra implementacin se
hace correctamente.
En trminos de diseo, deberamos 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, cmo facilitaremos dichas pruebas? Por
ejemplo, aadiendo etiquetas adecuadas a objetos clave
en la interfaz de usuario.
Cmo validaremos nuestras aplicaciones? Por ejemplo, a
travs del uso de analticas mviles, informes de errores o
feedback de usuarios?
Cuestiona el diseo. Queremos asegurarnos de que cumple
con los fines previstos, y tambin evitar cometer errores
graves. El documento de Phillip Armour Five Orders Of
Ignorance25 es un gran recurso para ayudar a estructurar tu
enfoque.
Ten en cuenta tambin la forma de mejorar la testeabiliad
de su aplicacin en esta etapa para que puedas hacer tu
aplicacin ms fcil de probar con eficacia y eficiencia.
Prcticas tales como pruebas unitarias y TDD se aplican en
la fase de implementacin. Recuerda probar tu proceso de
construccin 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 aplicacin.
Fase 2: Verificacin
Esto incluye la revisin de las pruebas unitarias, instalacin
interna y pruebas de sistema.
Revisa las pruebas unitarias y evala su potencia: son
realmente tiles y dignas de confianza? Nota: tambin deben
ser revisadas como parte de la fase de implementacin, 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 cdigo actual.
Para las aplicaciones que requieren instalacin, necesitamos
maneras de llevarlas a dispositivos especficos para las pruebas
de pre-lanzamiento. Para algunas plataformas (incluyendo
Android, iOS y Windows Phone), los telfonos deben estar configurados para que las aplicaciones se pueden instalar. Tambin
tenemos que decidir en qu telfonos probar la aplicacin. Por
ejemplo, es aconsejable probar la aplicacin en cada versin
apropiada de la plataforma mvil. Para iOS esta slo 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 podran no actualizarse nunca.
Tambin queremos probar diferentes factores de forma
de los dispositivos, por ejemplo cuando la relacin de las
dimensiones de pantalla difiere. Las nuevas dimensiones de
pantalla de los iPhone 5 y 6 han expuesto un montn de bugs
de interfaz de usuario. Los desarrolladores de Android son muy
conscientes de los muchos problemas que diferentes tamaos
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 automatizacin de pruebas y los
entornos para algunas de las pruebas del sistema. Entraremos
en ms detalle ms adelante en esta seccin.
Tambin queremos considerar cmo sabremos que la
aplicacin responde bien en:
Usabilidad, experiencia de usuario y requisitos estticos
Rendimiento, particularmente tal y como es percibido por
los usuarios finales
Pruebas de internacionalizacin y localizacin
Testeo

265

Fase 3: Lanzamiento
Esto incluye pre-publicacin y publicacin.
Aquellos de vosotros que an no habis trabajado con las
principales tiendas de aplicaciones, estad preparados para una
desafiante experiencia donde la mayora de los aspectos estn
fuera de tu control, incluyendo los plazos para la aprobacin
de tu aplicacin. Adems, en algunas tiendas de aplicaciones,
no es posible revertir a una versin anterior, as que si tu
versin actual tiene defectos importantes, tienes que crear una
nueva versin 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 versin operativa de la
aplicacin.
Dadas estas limitaciones es til ampliar tus pruebas para
incluir verificaciones de pre-publicacin, 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 aplicacin
responde a sus criterios de presentacin. 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: Vinculacin
Esto incluye bsqueda, confianza, descarga e instalacin.
Una vez que tu aplicacin es de disponibilidad pblica, los
usuarios necesitan encontrarla, confiar en ella, descargarla e
instalarla. Podemos probar cada aspecto de esta fase. Intenta
buscar tu aplicacin en la tienda de aplicaciones pertinente y
en los motores de bsqueda principales. De cuntas maneras
diferentes puede ser encontrada por los usuarios de destino?
Qu pasa con los usuarios fuera de los grupos objetivo,
quieres que la encuentren? Cmo van a confiar los usuarios en
tu aplicacin lo suficiente como para descargarla y probarla?
Tu aplicacin realmente necesita tantos permisos? Cmo
de grande es la descarga, es prctico descargarla mediante la

Testeo

267

red mvil? Cabr en el telfono del usuario, especialmente


si hay poco espacio de almacenamiento disponible en su
dispositivo? Se instala correctamente la aplicacin? Puede
que haya problemas de firmado que causen que sea rechazada
por algunos dispositivos.
Fase 5: Validacin
Esto incluye el pago, el uso y la retroalimentacin. Como
seguramente ya sabes, es poco probable que una aplicacin
mvil con poco feedback tenga xito. Adems, muchas de las
aplicaciones tienen una vida muy corta en el telfono de un
usuario. Si la aplicacin no es de su agrado ni le involucra en
pocos minutos, es probable que sea descartada o ignorada.
Y, si ests buscando obtener pagos, vale la pena probar las
diferentes formas de pago, sobre todo para aquellos integrados
en la aplicacin.
Considera encontrar maneras de probar los siguientes puntos
prcticos:
Deteccin y reporting de problemas. Pueden incluir tu
propio cdigo, utilidades de terceros y servicios online.
Analticas mviles. Tienen sentido los datos recabados?
Qu anomalas hay en los datos reportados? Cul es la
latencia en la recepcin de resultados?

Testeo

268

Herramientas de Testeo
Application Ressource Optimizer (ARO) de AT&T:
developer.att.com/application-resource-optimizer, proyecto
de cdigo abierto en github.com/attdevsupport/ARO
Fiddler por Telerik: telerik.com/fiddler permite encontrar
y modificar el trfico de red entre tu mvil y su conexin
de red.
Genymotion: genymotion.com, un emulador rpido 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 Ms
Testear aplicaciones mviles se est convirtiendo en una
importante corriente con mltiples fuentes de informacin.
Algunos recursos tiles son:
testdroid.com/blog, un frtil blog que trata varios temas,
entre ellos el testeo de apps. Tambin publican una lnea
editorial sobre el testeo de juegos mviles26.
appqualitybook.com/, el sitio sobre el interesante libro de
Jaron Arbon, basado en sus experiencias en el testeo y
anlisis de un gran nmero de aplicaciones mviles.
kohl.ca, el sitio de Jonathan Kohl incluye enlaces a su
aclamado libro sobre el testeo de aplicaciones mviles, y
otros artculos.
slideshare.net/karennjohnson/kn-johnson-2012-heuristicsmnemonics, presentacin de Karen Johnson sobre tests
heursticos y el uso de SFDPOT en el testeo mvil.
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

Monetizacin
Por fin, has terminado tu aplicacin, o sitio web para mviles,
y la has pulido como resultado del feedback de beta testing.
Suponiendo que no ests desarrollando como hobby, para
promocionar una marca, etc., es el momento de hacer algo de
dinero. Pero, cmo se hace eso y cules son tus opciones?
En general, tienes las siguientes vas de monetizacin:
Pago por descarga: Vende tu aplicacin por descarga
Pago en aplicacin: Aade opciones de pago dentro de tu
aplicacin
Publicidad mvil: 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
Participacin en ingresos: Obtn ingresos por servicios
del operador que se originen en tu aplicacin
Ventas indirectas: Afiliados, venta de datos y bienes
fsicos, entre otros
Mercado de componentes: Vende componentes o una
versin marca blanca de tu aplicacin a otros desarrolladores
Cuando planifiques tu desarrollo, la determinacin de la
monetizacin en tu modelo de negocio debera ser uno de los
elementos clave de su diseo inicial, ya que podra afectar
al comportamiento tcnico y funcional de la aplicacin. El
artculo "Five strategies to monetize your mobile app"1 es
una excelente referencia sobre cmo plantear los aspectos
1 medium.com/@signored/dont-fall-below-the-app-poverty-line-

9b800a214e4a
Monetizacin

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 ingls Pay Per
Download), tu aplicacin se vende una vez para cada usuario
al descargarla e instalarla en su telfono. El pago puede ser
gestionado por una tienda de aplicaciones, operador mvil o
mediante otro mecanismo configurado por ti mismo. El que una
vez fue el mtodo de monetizacin ms popular y rentable hoy
es utilizado por una minora de los desarrolladores. Gartner
predice que para el ao 2017 casi el 95% de las descargas ser
de aplicaciones libres, frente a aproximadamente el 90% en la
actualidad2 .
Cuando tu aplicacin se distribuye en una tienda de
aplicaciones, la tienda se encargar del mecanismo de pago
por ti. A cambio, la tienda cobra una comisin por todas las
ventas (habitualmente el 30%). En la mayora de los casos, las
tiendas ofrecen una matriz de precios fijos para elegir por pas
y moneda ($0,99, 0,7 EUR, $3, etc.) a la hora de fijar el precio
de tu aplicacin.
El pago por la descarga de aplicaciones se gestiona
habitualmente de una de las siguientes maneras: o bien se
factura a travs del operador de telefona, o se efectua el cobro
mediante tarjeta de crdito.
La facturacin va operador permite a tus clientes pagar
por tu aplicacin con slo confirmar que la venta se cargar
a su factura de telfono mvil o mediante el envo de un SMS
Premium. En algunos casos, la facturacin va 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 facturacin va operador para un buen
nmero 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 tambin recibir una parte. Es comn que gestin
y seguridad (cmo evitar que copien tu aplicacin) sean temas
problemticos en el modelo PPD, pero en ciertos escenarios
pueden ser la nica manera que tendrs de monetizar tu
aplicacin. Facturar a operadores puede resultar una tarea muy
difcil, sobre todo si quieres vender en varios pases, ya que
es necesario firmar contratos con un operador en cada pas.
Por razones desconocidas, algunos operadores, como Vodafone,
estn eliminado la opcin de facturar al operador va Android
Play en algunos mercados, como Reino Unido y Alemania.
Posiblemente porque hay mejores alternativas, como por
ejemplo pagos bancarios va mvil.
Vale la pena sealar que la mayora de los propietarios
de tiendas de aplicaciones estn llevando a cabo acuerdos
de facturacin va operador, teniendo Nokia Store la mejor
cobertura de capacidad de facturacin va operador al ofrecerla
para 60 pases tanto para su antigua Nokia Store en los
actuales telfonos 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 razn principal de sto es que
normalmente, cuando los usuarios tienen la opcin de comprar
con tarjeta de crdito o con mtodos de facturacin va operador, muestran una preferencia significativa hacia la facturacin
3 developer.nokia.com/nokia-x/opportunity/monetization

Monetizacin

274

va operador. Nokia, adicionalmente, asla a los desarrolladores


de las variaciones de la cuota de operador, ofreciendo a los
desarrolladores una tasa fija del 70% de los ingresos por
facturacin (Nokia dice que sus estudios indican un incremento
por diez de los beneficios respecto a los pagos con tarjeta de
crdito). Nokia, al menos, asla a los desarrolladores de las
variaciones de comisiones segn operador, ofrecindoles un
porcentaje fijo del 70% de la facturacin.
La facturacin mediante tarjeta de crdito es utilizada por
Apple, Google (en algunos casos), Amazon y otras tiendas.
Apple lleva aos exigiendo a los usuarios de iPhone que den los
datos de una tarjeta de crdito cuando se registran, y Google
tambin ha comenzado a utilizar ste mtodo para usuarios de
Android.Obtener estos datos antes de que se realice compra
alguna es, segn los analistas, un factor diferenciador clave
para obtener mayores beneficios mensuales por aplicacin.
La ltima opcin de pago es crear tu propio sitio web y
poner en prctica un mecanismo de pago a travs de l, como
PayPal mvil, la marcacin a nmeros fijos premium4, y otros.
El uso de PPD se puede implementar sin un diseo o
requisitos de codificacin especiales para tu aplicacin. Para
comenzar, recomendamos utilizar las opciones de facturacin
de las tienda de aplicaciones, ya que implican un coste mnimo
de instalacin 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

Monetizacin

275

Pagos en la Aplicacin
El pago dentro de la aplicacin (o IAP, en ingls In-App
Payment) es una forma de cobrar por acciones o contenidos
especficos dentro de tu aplicacin. Un uso muy bsico podra
permitir la compra unitaria de tu aplicacin (sin suscripciones
ni cargos recurrentes) despus de un perodo de prueba,
que puede generar ms ventas que PPD si crees que las
caractersticas de tu aplicacin justifican un precio ms alto.
Alternativamente, puedes ofrecer las caractersticas bsicas
de tu aplicacin de forma gratuita, pero cobrar por contenido
premium (vdeos, crditos virtuales, informacin premium,
caractersticas adicionales, eliminacin de los anuncios y
similares). La mayora de las tiendas de aplicaciones ofrecen
una opcin de compra en aplicacin, o puedes implementar tu
propio mecanismo de pago. Si quieres algo ms que una "licencia completa" por pago, tienes que pensar cuidadosamente
acerca de cmo, cundo y qu estn dispuestos a pagar tus
usuarios, y disear tu aplicacin en consecuencia. Los pagos
en aplicacin recurrentes, tambin llamados subscripciones,
son posibles en la mayora de las plataformas. Este tipo de
pagos son adecuados cuando tu aplicacin ofrece contenido
que se actualiza de manera regular, por ejemplo peridicos
online o revistas digitales.
Las compras dentro las aplicaciones se han convertido en
el modelo ms prspero de monetizacin 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 energa extra, ms niveles,
crditos virtuales, etc.) y puede ayudar a conseguir una gran
base de usuarios si ofreces la aplicacin gratuitamente.
Distimo inform en el 2014 que las compras in-app suponen
Monetizacin

276

el 79% de los beneficios de iOS6. Si tu objetivo son pases


especficos, 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.
Tambin debera ser obvio que necesitars disear y desarrollar tu aplicacin de manera que incorpore el mtodo de pago
en aplicacin. Si la aplicacin 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 aplicacin que ofrece una
tienda de aplicaciones, especialmente porque algunos de estos
servicios pueden incrementar la facturacin va operador (tales
como Google Play), utilizar la informacin de la tarjeta de
crdito preexistente (como Apple o Amazon), o con el pago
desde la aplicacin ofrecido directamente por el operador.
Desde el punto de vista de los usuarios, esta es la manera ms
fcil y ms conveniente de pago (uno o dos clics, sin necesidad
de introducir nmeros de tarjetas de crdito, nombres de
usuario u otras credenciales), por lo que los desarrolladores
pueden esperar una gran aceptacin por parte del usuario y
elevadas tasas de conversin.

Publicidad Mvil
Como es comn en los sitios web, puedes decidir ganar dinero
mostrando anuncios. Hay una serie de entidades que ofrecen
herramientas para mostrar anuncios para mviles, siendo
sta la forma ms fcil de ganar dinero en aplicaciones de
6 2014

How the Most Successful Apps Monetize Globally disponible en www.


distimo.com/publications
Monetizacin

277

navegador mvil. Admob.com, Buzzcity.com e inmobi.com


(para videojuegos) son algunas de ellas. Sin embargo, debido
a la amplia gama de dispositivos, pases y caractersticas, en
la actualidad hay ms de 70 grandes redes de publicidad mvil.
Cada red ofrece enfoques ligeramente diferentes y encontrar
el que mejor monetice la audiencia de tu aplicacin 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 rpido se
puede considerar el uso de un agregador de publicidad mvil
como por ejemplo Madgic7, smaato8 o inneractive9, ya que
tienden a dar mejores resultados al combinar y optimizar los
anuncios de ms de 50 redes mviles de publicidad. La mayora
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
dinmicamente. La mayora de las redes de publicidad tienen
una comisin 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 ms beneficiosos si deseas
integrar diversas redes de publicidad.
Si tu aplicacin est dando buenos resultados y tiene un
gran volumen en un determinado pas, podras considerar
vender publicidad directamente a agencias de publicidad o
marcas (publicidad Premium) o contratar a una agencia de
medios para hacer eso por ti.
Tambin aqu, muchos de los fabricantes de dispositivos
ofrecen servicios de publicidad mvil 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 aplicacin en su tienda.
La publicidad en aplicacin requiere que disees y programes tu aplicacin con cuidado. No slo debes considerar
con cuidado la ubicacin de los anuncios en tu aplicacin,
tambin las variaciones y el mecanismo de exclusin (optout). Si los anuncios se vuelven demasiado intrusivos, puede
que los usuarios abandonen tu aplicacin, 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 trmino se usa
generalmente para describir un anuncio que ocupa toda la
pantalla y que suele ir acompaado de un botn "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 posicin
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 aplicacin: El usuario obtiene tu aplicacin 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 aplicacin pidiendo a cambio una participacin en
los beneficios. Para ms informacin entra en Apps Funder11.
10

apponsor.com

11

appsfunder.com
Monetizacin

279

Ventas Indirectas
Otra opcin es utilizar tu aplicacin para dirigir las ventas
donde desees.
Habitualmente ofreces tu aplicacin o website de manera
gratuita, y entonces empleas mecanismos tales como:
1. Programas de afiliacin: Promover aplicaciones de pago
propias o de terceros en el interior de una gratuita. Ver
tambin MobPartner12 . Esto puede ser considerado una
variacin de publicidad mvil.
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
informacin personal, y que debes asegurarte de que todos
los datos son proporcionados en informes annimos y
consolidados.
3. Mundo real versus virtual: Usa tu aplicacin como
herramienta de marketing para vender bienes en el mundo
real. Ejemplos tpicos son aplicaciones para vehculos,
revistas y marcas tales como McDonalds y Starbucks.
Tambin utilizan este modelo de negocio aplicaciones de
cupones empresas como Groupon.
No hay nada que te impida combinar esta opcin con
cualquiera de las otras de monetizacin si lo deseas, pero ten
la precaucin de no dar la impresin de realizar promociones
extremadamente intrusivas.

12

mobpartner.com
Monetizacin

280

Mercado de Componentes
Un mercado de componentes o CMP (del ingls 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 construccin
de software que ofrece una funcionalidad definida para ser
utilizado por el software de nivel superior.
La tpica pregunta que surge en este punto es cmo los
CMPs conviven con el cdigo abierto. Como usuario, el cdigo
abierto es a menudo gratuito, por lo que el cdigo fuente debe
ser proporcionado y los usuarios tienen el derecho de modificar
el cdigo fuente y distribuir la obra derivada.
Algunos proveedores de componentes requieren una cuota
de licencia. Ellos pueden proporcionar el cdigo fuente
completo que permite al desarrollador depurar cdigo en el
nivel ms bajo. Algunos CMP soportan todos los modelos:
componentes de pago as como componentes libres, ambos con
o sin el cdigo fuente.
Si eres un desarrollador en busca de un componente, los
CMP ofrecen dos ventajas principales: En primer lugar, no
tienes que abrir su cdigo fuente slo porque uses componentes de software. Todo cdigo abierto viene con una licencia.
Algunas licencias como la Apache estn comercialmente
compatibles, mientras que otras, como AGPL y OSL, requieren
que abras el cdigo fuente tuyo que se integrar con el
suyo. Es posible que no quieres esto. En segundo lugar, los
CMPs proporcionan una forma fcil de encontrar y descargar
componentes. Puedes pasar das mirando los repositorios de
cdigo abierto para encontrar el componente adecuado.
Los mercados de componentes han existido durante
dcadas. El mercado ms importante es de componentes para
Monetizacin

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 mvil es bastante nueva. La empresa de
Deutsche Telekom Deutsche Developer Garden13 y ChupaMobile14 son jugadores destacados en este campo.

Eligiendo tu Modelo de Monetizacin


As que, con todas estas opciones, cul debera ser tu
estrategia? Depende de tus objetivos, veamos algunos:
Ests seguro de que los usuarios desearn comprar tu
aplicacin inmediatamente? Entonces vndela como PPD a
0.89, pero ten en cuenta que, aunque puede que ingreses
varios cientos de euros por da, fcilmente pueden no ser
ms que un par de cientos por semana si la valoracin de
tu aplicacin es poco apropiada o la competencia es feroz.
La Application Developer's Alliance recomienda el mtodo
de monetizacin PPD para aplicaciones de produccin
costosa, con barreras de entrada o elevado volumen15.
Esto incluye juegos y aplicaciones de entretenimiento, la
productividad, la navegacin y noticias.
Ests ofreciendo capacidades premium a precio premium?
Considera una versin limitada en tiempo o capacidades
y usa la compra en aplicacin para permitir la compra de
una versin completa, ya sea permanentemente o por un
perodo de tiempo.
Ests desarrollando un juego? Considera ofrecerlo de
13

www.developergarden.com/component-marketplace/

14

www.chupamobile.com

15

www.appdevelopersalliance.org/app-monetizacin
Monetizacin

282

manera gratuita con publicidad en la aplicacin, o una


versin bsica que desbloquee mediante compra en la
aplicacin nuevas capacidades, niveles, vehculos o
cualquier equipamiento de juego (freemium).
Es tu aplicacin mvil una extensin de una tienda web
o fsica? Ofrece la aplicacin 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 asegrate
de que lo usuarios vuelven.
Ofrece bienes fsicos, como la aplicacin de una tienda?
Ofrece la aplicacin gratuitamente y obtn comisiones de
las compras de los clientes.

Estrategias para las Tiendas de


Aplicaciones
La otra cara de la generacin de ingresos es el marketing y la
publicidad. La necesidad puede ser obvia si vendes tu aplicacin a travs 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 maldicin y la bendicin
de los desarrolladores mviles. En el lado positivo, dan a los
desarrolladores largo alcance y exposicin potencial de ventas
que de otra manera sera muy difcil de lograr. En el lado
negativo, las ms 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 lotera.
Dicho esto, aqu estn algunos consejos y trucos para
ayudarte a incrementar tus probabilidades.
Monetizacin

283

Estrategias para Conseguir un Ranking Alto


Lo ms importante a comprender acerca de las tiendas de
aplicaciones es que son canales de distribucin y mquinas de
marketing. Esto significa que aunque son una gran manera de
conseguir introducir tu aplicacin en los dispositivos de los
usuarios, no van a promocionar tu aplicacin por ti (a menos
que compres posicionamiento premium, ya sea a travs 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
lotera con tus aplicaciones, ten una estrategia y un plan para
comercializar tu aplicacin.
Hemos preguntado a muchos desarrolladores acerca de las
tcticas que les han proporcionado la mayor atencin y un
mejor ranking en las tiendas de aplicaciones.
Nos dieron muchas respuestas y sali a la luz un tema
comn: no hay ninguna frmula mgica, tienes que atacar por
todos los frentes! Sin embargo, te ayudar tratar de mantener
en cuenta lo siguiente:
Necesitas una aplicacin rompedora: debera ser entretenida, fcil de usar y estar libre de bugs. Asegrate de
ponerla en las manos de usuarios antes de en las tiendas.
Pule tus iconos e imgenes para la tienda de aplicaciones,
trabaja en la descripcin de tu aplicacin, y elige cuidadosamente palabras clave y categora. Si ests inseguro
o insatisfecho con los resultados, experimenta.
Obtener reseas de bloggers y revistas es una de las
mejores maneras de recibir atencin. Como contraprestacin, algunos te pedirn dinero, otros exclusividad y
otros acceso anticipado a tus aplicaciones.
Consigue crticas positivas tan pronto como sea posible.

Monetizacin

284

Llama a tus amigos y pide a tus usuarios de manera regular


una resea.
Si vas a llevar a cabo cualquier tipo de publicidad, hazlo
en avalancha durante un par de das. Esto es mucho ms
efectivo que gastar la misma cantidad de dinero durante
dos semanas, ya que te ayudar a alcanzar un elevado pico
de audiencia, ms que una subida lenta y gradual.
No confes en el trfico generado por personas que
exploran la tienda de aplicaciones, cercirate de conducir
trfico a tu aplicacin a travs de tu sitio web, SEO y
social media.
Mltiples Tiendas versus Tienda nica
Con ms de 120 tiendas de aplicaciones disponible para los
desarrolladores, evidentemente hay muchas opciones para
distribuir una aplicacin. Pero los 20 minutos necesarios en
promedio para presentar una aplicacin en una tienda significa
que podras pasar mucho tiempo publicando aplicaciones en
tiendas lbregas que consiguen pocas descargas. Esta es la
razn por la que la mayora de los desarrolladores se adhieren
a slo una o dos tiendas, perdiendo una oportunidad potencialmente enorme, pero consiguiendo mucho ms tiempo para
cosas importantes, como la programacin! As que, debes ir a
mltiples tiendas o no?

Monetizacin

285

Mltiples tiendas

Tienda nica

Las tiendas de aplicaciones


de las principales plataformas
pueden tener serias limitaciones,
tales como mecanismos de pago,
penetracin en determinados
pases y directrices de contenido.

Ms del 90% de los usuarios


slo utilizan una nica tienda
de aplicaciones, que suele ser la
que viene por defecto incluida
con el telfono.

Las tiendas ms pequeas te


dan ms opciones de visibilidad
(aplicacin destacada).

Tu propio sitio web te puede


aportar ms trfico que las
tiendas (especialmente si tienes
una marca conocida).

Las tiendas ms pequeas tienen


un entorno social ms amistoso
que las grandes.

Muchas tiendas pequeas araan


datos de las grandes, as que
puede que tu aplicacin tambin
est en ellas.

Las tiendas de los operadores


tienen directrices para contenidos notoriamente estrictas
y puede ser difcil entrar,
particularmente para algunos
tipos de aplicaciones.

Para contenidos sin nicho, la


tienda del operador o plataforma pueden ofrecer suficiente
exposicin para no justificar el
esfuerzo extra de una estrategia
multi-tienda.

Monetizacin

286

Mltiples tiendas

Tienda nica

Las tiendas ms pequeas


ofrecen un amplio rango de
opciones de pago y modelos de
negocio, o estn disponibles en
muchos pases.

Algunas tiendas de operadores tienen procesos de


facturacin ms fciles, tales
como facturacin directa a la
cuenta de telfono del usuario,
conduciendo a un incremento en
la ratio de conversin.

Algunos desarrolladores reportan


que el 50% de sus beneficios
en Android vienen de fuera de
Android Market.

Los desarrolladores para iOS slo


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 slo las tiendas de
aplicaciones que se adecan ms a ese pblico. Esto podra
implicar usar tiendas particulares de operadores, aquellas
populares en un determinado pas, 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 nmero de maneras de monetizar
sus aplicaciones, por ejemplo PPD y pagos en aplicacin para
muchos pases. Adems, en algunos pases 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 ms comunes de un desarrollador es
acerca de cunto dinero se puede ganar con una aplicacin
mvil. Est claro que algunas aplicaciones han hecho millonarios a sus desarrolladores, mientras que otros no renunciarn
a su puesto de trabajo en el corto plazo. De acuerdo con una
investigacin del 2013 por Forbes.com17, la mayora de los
desarrolladores de aplicaciones no estn generando suficientes
ingresos para llegar a ser rentables y los desarrolladores
dedicados a una nica plataforma confirman que los ingresos
generados por su aplicacin de ms xito no resultan suficientes para sustentar un negocio independiente. Segn el estudio
Business and Productivity apps de VisionMobile, realizado
a ms de 6.000 desarrolladores mviles, el 50% de ellos se
encuentran por debajo del lmite de pobreza por aplicacin
al obtener menos de 500 dlares americanos al mes por cada
aplicacin (el 67% en el 2013)18. inMobi afirma que en el
tercer trimestre del 2014, los juegos mviles eran la categora
ms rentable de software mvil en trminos de ingresos por
publicidad. Segn 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 mviles de consumo sern 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 ms atractivas (descuentos, cupones de
hotel, msica 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 sincronizacin, herramientas de copia de seguridad y otras),
pero a menudo el xito (econmico) de una sola aplicacin no
se puede predecir. El xito, por lo general, viene con un bagaje
en experimentacin y mucha perseverancia.

Testeo

289

Eplogo
Gracias por leer esta 15 edicin de nuestra Gua del Desarrollador Mvil. Esperamos que hayas disfrutado de su lectura y
que te hayamos ayudado a clarificar tus opciones. Tal vez ahora
ests listo para participar en el desarrollo de una aplicacin
mvil o hayas descubierto nuevas opciones en el negocio
de las aplicaciones. Esperamos que s. Por favor, involcrate
tambin con la comunidad y comparte tus experiencias e ideas
con nosotros y el resto de compaeros.
Si quieres contribuir a esta gua, patrocinar prximas
ediciones, o te interesa obtener ediciones anteriores, por favor
escrbenos a mobiledevguide@enough.de. Si utilizas Twitter, te
invitamos a seguirnos en twitter.com/enoughsoftware y difundir
este proyecto utilizando el hashtag #mdgg.
Por supuesto, puedes descargarte esta edicin en formato
ebook en amazon.com, y en formato PDF desde nuestro website: www.enough.de/mdgg. En el momento de escribir estas
palabras, tambin 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 prxima edicin a comienzos de 2016!

Eplogo

291

Acerca de los Autores


Anna Alfut
Anna comenz su vida profesional como diseadora creativa.
Despus de descubrir su pasin por el diseo de interfaces, se
convirti en la co-autora de una aplicacin para iOS y Android
y consultora en mltiples proyectos, tanto en el lado agencia
como en el de cliente. Actualmente trabaja como diseadora
UX para dispositivos mviles. Aparte de dibujar y pensar a
travs de interfaces, tambin hace ilustraciones y disfruta de
vivir en Londres.
www.alfutka.net
Davoc Bradley / MiraLife
Davoc ha estado trabajando como ingeniero de software desde
1999, especializndose en arquitectura y diseo de webs
y sistemas mviles de alta usabilidad. Actualmente es CTO
en MiraLife, proveedores de software web y mvil que tiene
por objetivo mejorar las vidas de personas con demencia y
otras enfermedades terminales. Davoc es tambin un msico
entusiasta, fan vido del cricket y le encanta viajar.
Twitter: @davocbradley

Acerca de los Autores

292

Marco Bttner / SciDev


Marco tiene 27 aos y es desarrollador mvil desde el 2011.
Estudia informtica en la Universidad Humboldt de Berlin,
trabaja para idealo, y es miembro fundador del proyecto de desarrollo mvil SciDev, centrado en el desarrollo de aplicaciones
web para bada, Tizen y otras tecnologas mviles 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 ms de 15 aos. Cree apasionadamente en
la igualdad de acceso a la tecnologa digital para las personas
con discapacidad. Sally es representante de su organizacin
en grupos de estndares del W3C, y tambin forma parte de
una serie de grupos en el British Standards Institute (BSI)
relacionados con la estandarizacin de las TIC, lo que incluye
el grupo responsable del BS8878 o Cdigo de Prcticas para
la Accesibilidad Web. Actualmente, Sally gestiona la equipo
Web & Online en RNIB, que ofrecen asesora en accesibilidad
de pginas web y aplicaciones. Ha dirigido la redaccin del
estndar 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 edicin de la gua.
Adems de ser Head of Support en Typeform, es colaboradora
docente en la UOC, patrocinadores de esta traduccin. En el
pasado, ha sido desarrolladora RIA, copywriter, y creativo
especialista en marketing online. Le apasiona cantar jazz, la
sociologa de los nuevos medios, la fotografa y leer libros de
divulgacin cientfica.
Twitter: @ellaing
Dean Churchill / AT&T
Dean trabaja en el diseo de seguridad, desarrollo y prueba de
aplicaciones de AT&T. Desde hace aos est centrado en impulsar los requisitos de seguridad en las aplicaciones mviles,
tanto para aquellas de consumo como para internas de AT&T.
Tambin ha apoyado las lneas emergentes de producto de
AT&T en Salud Mvil 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 ms de 20 aos en posiciones corporativas y consultora,
y ha trabajado con los cambios de paradigma de cliente/
servidor, web y, actualmente, mvil. Lleva desarrollando
aplicaciones para iOS como freelance desde el ao 2009 y
tambin 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 mviles 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 misin era reformar las pruebas
a nivel mundial. Actualmente trabaja de forma independiente,
escribe aplicaciones mviles y herramientas de automatizacin
de pruebas, y ayuda a otros a mejorar sus aplicaciones mviles.
Tambin est escribiendo un nuevo libro sobre testeo y
automatizacin de pruebas para aplicaciones mviles.
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 mvil y en consolas desde 1998.
Oscar ha aportado 'vision' para una de las primeras comunidades de juegos en lnea (Wireplay - British Telecom); fue
lder mundial en la divisin 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 PlayStationHome. 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 mltiples 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 aos, Ovidiu decidi que el software mvil era ms de su
agrado. Est involucrado en desarrollos Java ME y BlackBerry
para Enough Software desde 2009. Se emociona con cualquier
cosa relacionada con una programacin eficaz, algoritmos y
grficos por ordenador.
Twitter: @ovvyblabla
www.ovidiuiliescu.com
www.enough.de
Alex Jonsson / Evothings
A Alex le gusta todo lo mvil, tanto aplicaciones como
tecnologas web, y especialmente conectar inteligentemente
objetos fsicos a otros mviles. Tiene un Doctorado en
Tecnologa de Medios por el Real Instituto Tecnolgico de
Estocolmo y comparte sus ideas y conocimientos tanto a nivel
acadmico como corporativo. El Dr. Jonsson tiene tambin
una necesidad eclctica de investigar cmo 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 estn conectadas.
Twitter: @dr_alexj
www.evothings.com

296

Michael Koch / Enough Software


Michael viene desarrollando software desde 1988, unindose
al equipo de desarrollo de Enough Software en 2005. Ocupa el
cargo de Director de Tecnologa. Ha dirigido numerosos proyectos de desarrollo de aplicaciones mviles (principalmente para
Java ME, Android, Windows Mobile y BlackBerry), y tambin es
un experto en tecnologas de servidor. Michael es un entusiasta
del cdigo 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 consultora, agencias y tecnologa. Anteriormente director tcnico de
proyectos en una de las principales agencias de publicidad y
consultor de soluciones mviles para una consultora especializada en web y multicanal, ahora trabaja como consultor de
planificacin estratgica global aconsejando a marcas sobre
cmo integrar lo mvil como parte de su estrategia digital.
www.jouleww.com

Acerca de los Autores

297

Carlo Longino / WIP


Carlo ha dedicado ms de una dcada de experiencia la
industria mvil, 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
anlisis con sede en Silicon Valley, donde se especializ en las
industrias mviles y de telecomunicaciones. Tambin ayud
a lanzar, e impuls durante cinco aos, TheFeature.com, un
site centrado en el liderazgo de ideas propiedad de Nokia.
Carlos tambin 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 Melenchn / Universitat Oberta de Catalunya
Javier Melenchn se dedica a realizar actividades formativas
asociadas a la creacin multimedia desde el mbito universitario, inicialmente en la Universitat Ramon Llull y actualmente en
la Universitat Oberta de Catalunya. Forma parte de la primera
promocin de titulados universitarios en ingeniera multimedia
y se doctor en ese mismo mbito. Es experto en todo tipo de
tratamiento de seales de audio, imagen y vdeo y en cmo
formar a los profesionales para que sepan manejar este tipo de
informacin, de crucial importancia en el mbito mvil 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.
Despus de estudiar informtica de negocios, se uni a Neofonie Mobile con sede en Berln como desarrollador de software
mvil 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 mvil, las interfaces de usuario,
UX y el desarrollo en Android en general. Adems, le encanta
hablar en conferencias, escribir artculos y participar en todo
tipo de social media.
Twitter: @seraandroid & @PayPalDev
timmesserschmidt.com
Sebastian Meyer / D-LABS
Sebastin tiene ms de una dcada de experiencia con las
tecnologas web y mviles. Se uni a D-LABS como Consultor
de Innovacin y Software despus de cursar sus estudios
en ingeniera de software en el Hasso Plattner Institute en
Potsdam. Est especializado en metodologas centradas en el
usuario y la innovacin 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 informtica 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 mviles 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. Despus
de 10 aos de estar empleado en varias empresas, ahora est
haciendo proyectos SQL-BI y todo tipo de actividades mviles
multiplataforma. Es un autor regular en la revista alemana
"mobileWebDeveloper". En su tiempo libre se le ve a menudo
en conferencias, hablando sobre temas mviles y JavaScript.
Tambin escribe artculos, libros y tweets sobre desarrollo
mvil.
Twitter: @zahlenhelfer
www.zahlenhelfer-consulting.de

Acerca de los Autores

300

Andr Schmidt / Enough Software


Andr lleva en el negocio del software desde 2001. Despus de
iniciar su carrera somo programador en una de las empresas
lderes en la industria de defensa, se uni a Enough Software
en 2007 como desarrollador mvil. En este rol, ha creado una
amplia gama de aplicaciones mviles, sobre todo para Android.
Tambin 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 dcada de los 90, Michel pas a liderar la
red social Wauwee. Sirviendo a casi un milln 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 moetizacin
mvil.
www.appvalley.nl
Marco Tabor / Enough Software
Marco es el responsable de relaciones pblicas, ventas y mucho
ms en Enough Software, donde lleva trabajando ms de 7
aos. El es el coordinador de esta gua, teniendo adems la
responsabilidad de encontrar patrocinadores y fusionar las
aportaciones hechas por la comunidad mvil.
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
aos con Sybase Inc. Se dirige regularmente a pblico de todo
el mundo, proporcionando conocimiento mvil y experiencia
corporativa. Tambin escribe artculos, blogs y tweets en
movilidad empresarial y es un apasionado de la experiencia en
desarrollo mvil 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 mviles en Polteq, con ms de 8 aos de experiencia
como coordinador y testeador de sistemas. Tiene una gran
experiencia en pruebas orientadas a un contexto tecnolgico,
por ejemplo en telecomunicaciones, SOA, automatizacin de
pruebas, desarrollo de controladores y testeo de APIs. En su
trabajo actual, Marc forma parte de un equipo scrum que est
desarrollando la prxima generacin de coordina todas las
pruebas de aplicaciones nativas para los mercados holands e
internacional en servicios de paquetera.
marcvantveer.niobe.nl/blog
www.polteq.com

Acerca de los Autores

302

Robert Virkus / Enough Software


Robert ha estado trabajando en el espacio mvil desde 1998.
Experiment la fragmentacin de Java de primera mano cuando
desarroll y port un cliente mvil en el Siemens SL42i, el
primera telfono para el mercado de masas con una mquina
virtual Java. Despus de esta experiencia puso en marcha
el proyecto de cdigo abierto J2ME Polish en 2004. J2ME
Polish ayuda a los desarrolladores a superar la fragmentacin
por dispositivo. Es el fundador y CEO de Enough Software, la
compaa detrs de J2ME Polish, muchas aplicaciones mviles,
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 mvil, este es el libro


Minh Nguyen en amazon.com
que tienes que leer primero.

El ttol s magnfico, pero el contenido hace honor al ttulo en cierta medida.


Este libro electrnico ofrece un amplio vistazo a casi cualquier cosa relacionada
Azzief Khaliq en hongkiat.com
con el desarrollo de aplicaciones mviles existente.
Una obra espectacular! Te asombrars por cmo de increblemente rpido
puedes establecer tu presencia en el mercado mvil con los simples pasos
Daniel Hudson en webtechman.com
explicados en esta gua.

Una lectura obligatoria para cualquiera que est considerando crear y


Steve en amazon.com
comercializar apps.
Socio de distribucin:

wip.org

www.mobiledevelopersguide.com

Anda mungkin juga menyukai