Vous êtes sur la page 1sur 286

1

4
a
e
d
i
c
i

n
Dont Panic
GUA A LA GALAXIA
DE APLICACIONES
MVILES
Enough Software GmbH + Co. KG
Stavendamm 22
28195 Bremen
Alemania
www.enough.de
Por favor, enva tu feedback, preguntas
o solicitudes de patrocinio a:
mdgg@enough.de
Sguenos en Twitter: @enoughsoftware
Servicios y Herramientas para Todas las Plataformas Mviles
publicada por:
14
a
Edicin Febrero 2014
Esta Gua se publica bajo Licencia
Creative Commons Algunos Derechos Reservados.
Direccin Artstica y Diseo por:
Andrej Balaz (Enough Software)
Editores:
Richard Bloor
Marco Tabor (Enough Software)
Traduccin realizada con la colaboracin de
Traductores: Eva Casado de Amezua Fernndez Luanco y Ivette Garca Manuel

3
Gua a la Galaxa de
Aplicaciones Mviles
Contenido
I Prlogo
1 La Galaxia Mvil: Introduccin
14 Diseo Conceptual para Mviles
24 Android
41 BlackBerry: Aplicaciones Java
49 BlackBerry 10
62 Firefox OS
68 iOS
82 Java ME (J2ME)
93 Tizen
98 Windows Phone y Windows RT
111 Hacia Multiplataforma
129 Sitios Mviles y Tecnologas Web
144 Accesibilidad
154 Aplicaciones Empresariales: Estrategia y Desarrollo
165 Analticas Mviles
174 Implementando Rich Media
180 Servicios Basados en Localizacin
189 Comunicaciones de Campo Cercano (NFC)
197 Implementando la Vibracin Hptica
206 Implementando Realidad Aumentada
219 Seguridad de la Aplicacin
232 Testeando tu Aplicacin
251 Monetizacin
268 Eplogo
269 Acerca de los Autores


I
Prlogo
Cuando fundamos Enough Software, en el 2005, casi nadie
entre nuestros amigos y familiares entenda lo que estbamos
haciendo. A pesar de que los telfonos mviles ya estaban en
todas partes y los SMS eran comunes, las aplicaciones todava
eran un fenmeno minoritario, incluso la palabra 'apps' era
poco conocida y las solamos llamar MIDlets o "aplicaciones
mviles". Continuamos creando arquitecturas, diseando y
desarrollando aplicaciones para nuestro clientes, y han pasado
unos cuantos e interesantes aos desde entonces: plataformas
antiguas desaparecieron, otras nuevas nacieron y algunas
elegidas supusieron un antes y un despus para el mundo.
En resumen: el ecosistema mvil result ser tremendamente
rompedor.
Con esta gua, comenzamos a seguir el ecosistema de cerca.
Gracias a los autores que colaboran en ella, esta gua cubre la
friolera de ocho plataforma mviles, y eso teniendo en cuenta
que hemos algunas plataformas por el camino, como Symbian
y webOS. Por cierto, esta es la primera edicin en la que
cubrimos Tizen.
Esta edicin es la mayor hasta la fecha, com ms de 10.000
copias impresas, y sin nuestros patrocinadores no habra sido
posible, as que queremos dar las gracias a Paypal (visitadles
en developer.paypal.com para conocer sus muchas posibilidades
de integracin) y a SAP (todo sobre su fantstica plataforma
mvil en developers.sap.com) por ello. Por supuesto, tambin
estamos muy contentos de poder dar la bienvenida a Twilio
en su primera experiencia como patrocinador de la gua;
en www.twilio.com descubriris cmo sus herramientas os
pueden ayudar con mltiples temas, desde la distribucin de
aplicaciones hasta la implementacin de funcionalidades VoIP
Prlogo
y de mensajera, pasando por mejorar el nivel de seguridad de
vuestra aplicaciones mediante la autenticacin de dos factores.
El futuro es realmente emocionante y estamos deseando
compartir vuestro entusiasmo a travs de @enoughsoftware o
va email en mdgg@enough.de.
Os esperamos!
Robert + Marco / Enough Software
Bremen, Febrero de 2014
La Galaxia Mvil: Introduccin
1
P
O
R




R
o
b
e
r
t

V
i
r
k
u
s

&

M
a
r
c
o

T
a
b
o
r
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: planifcacin y especifcacin, prototi-
pado 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 especfcas. Vamos a tratar algunas de
ellas a continuacin.
2
La Galaxia Mvil: Introduccin
Topologa: Factores de Formato y
Patrones de Uso
Hay que diferenciar entre smartphones, tablets y telfonos de
gama media (en ingls feature phones). Cada factor de forma
plantea sus propios retos de usabilidad; por ejemplo, un tablet
exige una navegacin diferente a un telfono. Adems, los
sistemas de televisin resultan cada vez ms atractivos para
los desarrolladores mviles como nuevo factor de forma.
Naturalmente, los patrones de uso de Android
diferen de los de iOS, que a su vez son diferentes de
aquellos para Windows Phone, etctera.
Debes, por tanto, abstenerte de intentar
proporcionar una experiencia idntica en
todos los formatos, o incluso en todos los
sistemas en los que funcionar tu aplicacin, 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, USSD
1
y STK
2

1 es.wikipedia.org/wiki/USSD
2 en.wikipedia.org/wiki/SIM_Application_Toolkit
La Galaxia Mvil: Introduccin
3
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 espe-
cfco con APIs propias de la plataforma. Se suele comprar,
descargar y actualizar a travs de la tienda de aplicaciones
especfca 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 aplicacio-
nes. 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 fn 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 Phonegap
3
.
3 www.phonegap.com
4
An Introduction To Mobile Development
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 incre-
mentar 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 apliaciones. 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.
Sitio web
Un sitio web se ejecuta en su mayor parte 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. Sin embargo, no debes suponer que un
navegador mvil siempre estar basado en WebKit, fjate en
La Galaxia Mvil: Introduccin
5
la peticin de Microsoft a los desarrolladores de webs mviles,
para que no creen sus sitios web basndose slo en WebKit
4
.
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 Telekom
5
. 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. El STK (SIM Application Toolkit) permite implemen-
tar 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 fnancieras en Kenia y
otros pases
6
.
4 blogs.windows.com/windows_phone/b/wpdev/archive/2012/11/15/adapting-
your-webkit-optimized-site-for-internet-explorer-10.aspx
5 www.developergarden.com/apis
6 memeburn.com/2012/03/how-m-pesa-disrupts-entire-economies/
La Galaxia Mvil: Introduccin
6
El Universo de los Sistemas Operativos
Mviles
El espacio mvil es mucho ms diverso que otras reas TIC.
Cuando ests desarrollando software para ordenadores perso-
nales, 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 tenerlo bajo observacin (o asegrate de tener
la ltima edicin de nuestra gua a mano).
Quasars: Android e iOS
Cuando la gente habla sobre aplicaciones mviles, en su
mayora slo se referen 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 mercados
7
(ver la tabla a
continuacin para los nmeros globales). El estudio Developer
Economics 2014
8
tambin muestra que iOS y Android estn a
la cabeza en trminos de atencin por parte de los desarrol-
ladores, es decir, el porcentaje de desarrolladores utilizando
una plataforma, independientemente de la plataforma que ellos
7 www.idc.com/getdoc.jsp?containerId=prUS24442013
8 developereconomics.com
La Galaxia Mvil: Introduccin
7
consideran su 'primaria'. Android era lder, con un 71% de los
desarrolladores trabajando en ella, seguido por iOS con un 55%.
Naturalmente, esto tambin signifca 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, muchas partes del mundo pertenecen al universo del
mvil de gama media. A nivel global, alrededor del 50% de
todos los telfonos vendidos en el segundo trimestre del 2013
fueron feature phones
9
, con una base instalada muy superior a
esa cifra. Los mayores vendedores son Samsung y Nokia. Nokia
asegura tener bastante xito con su Nokia Store ya que hay
ms de 500 desarrolladores que han tenido ms de 1 milln de
descargas
10
. Estudios del 2011 muestran que las plataformas
poco promocionadas ofrecen en realidad mejores oportunidades
para los desarrolladores: las aplicaciones para telfonos de
gama media en la tienda OVI de Nokia tuvieron 2,5 veces ms
descargas en comparacin con las aplicaciones del Apple App
Store
11
.
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 JavaME o BREW.
9 gartner.com/newsroom/id/2573415
10 www.developer.nokia.com/Distribute/Statistics.xhtml
11 www.research2guidance.com/apps-on-nokias-ovi-store-had-2.5-times-higher-
download-numbers-in-q2-2011-compared-to-apps-on-apple-app-store/
8
Magnetoestrellas: Windows Phone y Windows RT
Windows Phone se ha convertido en el 'tercer ecosistema'
12
en
el universo mvil, superando en ventas al iPhone en algunas
regiones, como Italia o Amrica Latina. La cuota de mercado
de Windows 8.1 y Windows 8 ha superado a la de todas las
versiones de Mac OS X juntas, segn Net Applications
13
.
Supernovas: Sailfsh 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 fnlandesa Jolla
14
entr en el mercado en el cuar-
to trimestre del 2013 con Sailfsh OS
15
. El sistema operativo ha
recibido todo tipo de comentarios, por lo que ser interesante
ver si su desarrollo evoluciona positivamente durante el 2014.
Firefox OS ha recibido mucho cario tanto por parte de
especialistas en medios de comunicacin como de desarrol-
ladores, por lo que hemos decidido dedicarle captulo en esta
gua. Aunque ya ha sido lanzado en mltiples regiones, no ha
conseguido an hacerse con una cuota de mercado relevante.
Firefox OS estar disponible prximamente para tablets.
La acogida de la BlackBerry 10 ha variado entre el escepti-
cismo y entusiasmo, pero a pesar de que todos los operadores
de telefona ofrecen dispositivos BlackBerry 10, la adopcin
ha sido demasiado lenta. Ser interesante ver qu ocurre con
este sistema operativo ahora que la venta de BlackBerry parece
haber fracasado.
Aliyun ha sido lanzado en un solo dispositivo en China,
12 kantarworldpanel.com/global/News/news-articles/Apple-iPhone-5S-outsells-
5C-three-to-one-in-Great-Britain
13 netmarketshare.com/operating-system-market-share.aspx
14 jolla.com
15 sailfshos.org
La Galaxia Mvil: Introduccin
9
con una cuota de mercado desconocida. Atrajo publicidad
principalmente porque Google presion a Acer para que no
lanzara un dispositivo Aliyun, basndose en la pertenencia de
Acer a la Open Handset Alliance y en el hecho de que la tienda
de aplicaciones de Aliyun promocionaba algunas aplicaciones
Google Android pirateadas
16
. A pesar de que Aliyun afrma estar
basado en Linux, el cdigo fuente no ha sido hecho pblico.
Enanas Blancas: Symbian y bada
Symbian y Samsung bada son slo sombras de lo que una vez
fueron. Aunque bada tuvo una vida muy corta, Samsung ha
mantenido parte dentro de la plataforma Tizen. Symbian ha sido
forzado a entrar en modo mantenimiento, con el estruendoso
fasco del PureView 808 a modo de despedida; y su relevancia y
cuota de mercado contina cayendo en picado a nivel mundial.
Estrellas Recin Nacidas: Tizen y Ubuntu
Veremos algunas novedades interesantes en el 2014.
Los dispositivos Tizen
17
han sido anunciados para el
primer trimestre del 2014. Aparentemente llevado gentil pero
insistentemente hacia delante por Samsung e Intel, el objetivo
de Tizen es soportar no slo smattphones, sino televisores,
tablets, netbooks e incluso sistemas de infotenimiento en
vehculos. El hecho de que incluyamos un captulo dedicado
a Tizen es esta edicin de la gua refeja el hecho de que
tomamos a la plataforma en serio y vemos en ella el potencial
que tuvo bada.
16 news.cnet.com/8301-1035_3-57513651-94/alibaba-google-just-plain-wrong-
about-our-os
17 http://tizen.org tizen.org
La Galaxia Mvil: Introduccin
10
ltimo, pero no menos importante, Canonical present
Ubuntu
18
para dispositivos mviles. La idea es llevar la potencia
de un PC a los telfonos. El esfuerzo realizado en forma de
crowdsourcing
19
para fnanciar el telfono Ubuntu Edge no
alcanz sus objetivos, pero Ubuntu planea introducirse en el
mercado de todos modos.
Sistema Solar: Cuotas de Mercado de Sistemas Operativos
para Smartphones
Echando un vistazo a la cuota de mercado mundial de smart-
phones, la imagen parece simple:
Plataforma
Cuota de Mercado
Tercer Trimestre de
2013
Cambio interanual
absoluto
Android (Google) 81,3% 6,3%
iOS (Apple) 13,4% -2,2%
Windows Phone
(Microsoft)
4,1% +2,0%
BlackBerry 1,0% -3,3%
Symbian (Nokia) 0,2% -2,8%
(Fuente: blogs.strategyanalytics.com/WSS/post/2013/10/31/
Android-Captures-Record-81-Percent-Share-of-Global-Smartphone-
Shipments-in-Q3-2013.aspx)
Es posible que ests de acuerdo con la mayora de los desar-
rolladores en que invertir el tiempo en plataformas diferentes
de iOS y Android es una prdida de tiempo, pero puedes estar
18 ubuntu.com/devices/phone
19 indiegogo.com/projects/ubuntu-edge
La Galaxia Mvil: Introduccin
11
seguro de que no es tan sencillo. Aunque en el primer trimestre
del 2013, por primera vez, las ventas de smartphones a nivel
global superaron a las de telfonos de gama media
20
, stos lti-
mos siguen superando a los smartphones en muchas regiones.
Hay que destacar tambin que las cuotas de mercado
de Sailfsh OS, o incluso Firefox OS, aunque probablemente
pequeas no son todava conocidas. Una de ellas podra ser la
mejor opcin para tus modelo de negocio; puede ser mejor ser
un planeta pequeo en el extremo de la galaxia que orbitar
cerca de los agujeros negros que son las cifras de aplicaciones
estelares en el centro de la galaxia.
Tambin hay que recordar que se trata de cifras globales;
la participacin en el mercado regional de cada plataforma es
una historia muy diferente. 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 del 2013
21
, pero los
dispositivos chinos se comercializan habitualmente sin acceso a
Google Play u otros servicios Google.
Para obtener informacin sobre la cuota de mercado en tu
regin objetivo, echa un vistazo a recursos en lnea tales como
comscore
22
, StatCounter
23
, VisionMobile
24
o Gartner
25
.
20 http://idc.com/getdoc.jsp?containerId=prUS24085413 idc.com/getdoc.
jsp?containerId=prUS24085413
21 http://engadget.com/2013/11/14/android-ios-market-share-
gartner-q3-2013/ engadget.com/2013/11/14/android-ios-market-share-
gartner-q3-2013/
22 comscoredatamine.com/category/mobile
23 gs.statcounter.com
24 visionmobile.com
25 gartner.com
La Galaxia Mvil: Introduccin
12
Sobre Tiempo y Espacio
Como desarrolladores, tendemos a mostrar mucha pasin
por nuestros sistemas predilectos. 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, al-
gunas famewars 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 FairPhone
26

o IndiePhone
27
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
Diseo Conceptual para Mviles
14
P
O
R




A
n
n
a

A
l
f
u
t
Diseo Conceptual para
Mviles
Tener una inspiracin es uno de esos maravillosos momentos
"Aj!. De repente sabes qu hacer y tienes la confanza de
que tu idea va a resolver el problema al que se enfrentan
tus usuarios potenciales. Pasar de esta fase temprana a la
implementacin fnal de la aplicacin es todo un reto. No slo
aspiras a construir una aplicacin estable, tambin quieres que
sea til y fcil de usar.
La Experiencia de Usuario o UX (del ingls User Experi-
ence) puede ser defnida como la percepcin que los usuarios
tienen de tu aplicacin, tanto durante su interaccin con
ella como posteriormente. Estaba bien diseada? Era fcil y
agradable de usar? Les ayud a realizar una tarea de manera
efciente o divertida? Funcionaba todo sin contratiempos?
Antes de comenzar a disear y programar, vale la pena invertir
algo de tiempo en refnar tu concepto. A continuacin, algunas
directrices que te ayudarn a defnir tu idea para poder pasar a
las fases de diseo y desarrollo.
Capturando la idea
Escribe un resumen conceptual que describa tu aplicacin en
unas pocas frases (cuanto ms corto mejor). Trata de explicarla
a varias personas que no pertenezcan a tu equipo para ver
cmo de bien la comprenden y se relacionan con ella.
Conoce a tu audiencia. Para quines ests diseando y
cules son sus motivaciones para usar tu aplicacin? Si puedes,
habla con ellos para obtener informacin de primera mano. Una
tcnica til para documentar tus descubrimientos en ste rea
es crear personas (perfles genricos de tus grupos de usuarios).
Diseo Conceptual para Mviles
15
Defne tu contenido. Pregntate cul es el contenido bsico
de la aplicacin. Dependiendo de tu tipo de aplicacin, podran
ser fotografas, feeds generados por el usuario, datos originales
(libros, metadatos, msica), etc. Una vez que identifcas la
informacin principal a mostrar, o la interaccin clave, ser
ms fcil enfocar correctamente la interfaz de usuario. Por
ejemplo, si ests creando una aplicacin de lectura de libros
probablemente querrs asegurarte de que la tipografa es de
buena calidad, y tus diseos de pantalla proveern de sufciente
espacio para textos sin elementos de interfaz interfriendo en la
lectura.
Describe la funcionalidad principal. Qu harn los usuarios
a travs de tu interfaz? Puedes pensar en ello en trminos de
verbos y trata de enumerarlos: navegar, compartir, comprar,
etc. Te dars cuenta de que algunas actividades estn relacio-
nadas. Por ejemplo, si tu aplicacin tiene un aspecto social
importante, habr una serie de caractersticas que se puedan
agrupar (como compartir, comentar, enviar mensajes o seguir a
alguien). Este puede ser otro indicio de interfaz de usuario para
ti. Presentar funciones relacionadas de manera similar ayuda a
los usuarios.
Cuando se disean experiencias mviles es necesario pensar
en el contexto en el que tu aplicacin se utilizar, y en cmo
va a afectar tanto a la usabilidad de la interfaz como a los usu-
arios. Crees que conseguirs captar toda su atencin? Es tu
aplicacin un producto independiente? Se relaciona o depende
de otros servicios? Qu ocurrir si no hay conexin a Internet?
Cmo gestionar esta situacin la interfaz de usuario?
Vale la pena pasar algn tiempo investigando el mercado.
Juega con otras aplicaciones que podran ser similares a la
tuya. Descubre cmo lo hacen: qu piensan los usuarios acerca
de ellas. Es una buena manera de conocer el terreno en el que
ests entrando.
Diseo Conceptual para Mviles
16
Tras responder a tantas preguntas deberas tener ms claro
qu aplicacin quieres construir. A medida que avances con el
desarrollo de tu idea contina hacindote esas mismas pregun-
tas. Son una buena forma de continuar enfocado y comprobar
si sigues en la senda de lo que quieres lograr. A veces, lo que
quieres lograr puede cambiar con el tiempo. Un concepto poco
defnido puede ser una pista que te lleve a explorar lo inusitado
y descubrir nuevas ideas.
Diseando la Experiencia de Usuario
Para esbozar y refnar la UX global de tu aplicacin debes pen-
sar en los fujos de usuario, la arquitectura de la informacin,
interacciones, estructura y diseo visual. Cmo funcionar
todo junto en el entorno de tu producto? Ten en cuenta cules
son los detalles de cada caso de uso, qu problemas pueden
surgir durante el uso de tu aplicacin, y cmo debe comuni-
carse el feedback para que sea lo ms til posible. Una vez tu
producto est listo, cmo se lo comunicars a la gente y les
convencers de que vale la pena utilizarlo?
Flujos de usuario
Algunas aplicaciones tienen un fujo muy lineal para lograr una
tarea concreta (por ejemplo, una aplicacinpara la cmara).
Otras pueden tener fujos ms iterativos. Describe tus "esce-
narios ideales" donde el usuario comienza en un punto A y,
despus de una serie de pasos, termina en un punto B. Piensa
en otras posibles vas que podran surgir como alternativas a la
ideal. Dibuja diagramas de fujo o usa wireframes para planifcar
varios escenarios en detalle.
Diseo Conceptual para Mviles
17
Wireframes
Los wireframes (o maquetas de estructura), son versiones sen-
cillas, esquemticas, de la interfaz. Su propsito es capturar las
funcionalidades y la estructura general del concepto de interfaz.
El wireframe para una determinada pantalla tendr diferentes
versiones/estados dependiendo del escenario. Para un error de
conexin tendrs diferentes instancias de la misma pantalla.
Antes de profundizar en diseos detallados, debes familiar-
izarte con las directrices para interfaces de usuario del sistema
operativo para el que vas a desarrollar la aplicacin. Cada
plataforma es un entorno diferente y debes leer las directrices
para utilizar las convenciones correctas. A menos que tengas
una razn muy slida para hacerlo de otra manera, sigue las
prcticas establecidas. Investiga y familiarizate con las galeras
de pautas que estn disponibles online. Mantenerte lo ms
fel posible al estilo nativo te aportar automticamente
benefcios respecto a su usabilidad. Los usuarios tienden a
reconocer comportamientos o tratamientos grfcos estndard
por el uso de otras aplicaciones en sus dispositivos. Encontrars
enlaces a recursos especializados para cada plataforma en los
respectivos captulos de este libro.
Los wireframes pueden ser realizados con lpiz y papel, o
puedes usar una de las muchas herramientas existentes. Dibujar
en papel es probablemente la mejor manera de empezar, ya
que no es necesario invertir tiempo en aprender un nuevo
software, y los dibujos son ms fciles de cambiar y desechar.
Tambin es muy divertido crear los tuyos propios. La ventaja de
usar aplicaciones especializadas es la capacidad de colaborar
en tus diseos y de transformar tus mockups en prototipos
funcionales.
Diseo Conceptual para Mviles
18
Prototipado
Un prototipo es la mejor manera de visualizar y evaluar las
interacciones de tu aplicacin. No importa si tienes un gran
presupuesto o trabajas en un proyecto personal los fnes de
semana, tener un prototipo bastante completo de tu aplicacin
es la mejor forma de comunicar tu concepto y discutirlo
con terceros. Se lleva a cabo antes de invertir tiempo en el
desarrollo del cdigo fnal 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.
No hay mejor manera de construir un prototipo. Puedes usar
cualquier tcnica que te funcione, desde prototipado en papel
hasta herramientas especializadas o aplicaciones que ofrecen la
funcionalidad de ensamblar contenidos clicables (por ejemplo,
herramientas estndar de diseo de presentaciones).Si sabes
programar, crear un prototipo en HTML tambin es una buena
tcnica. Es posible que puedas utilizar entornos y libreras para
disear un prototipo que tiene el mismo aspecto y comporta-
miento que el producto fnal.
No necesitas completer el prototipo entero antes de
comenzar a programar. Depende de cmo organices tu trabajo
podrs enfocarte en determinadas partes de tus aplicaciones
sobre la marcha, e incluso avanzar hacia iteraciones rpidas
sobre el cdigo. No obstante, las ideas iniciales de ejecucin
son validables ms rpido en los prototipos.
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
aplicaciones; a continuacin, una lista de algunas de ellas:
Diseo Conceptual para Mviles
19
Application About Availability
App in seconds
appinseconds.com
Web, prototipado para iPhone. comercial
Axure
axure.com
Desktop, wireframing y prototipado comercial
Balsamiq
Mockups
balsamiq.com
Desktop o plugin para wikis y
herramientas de seguimiento de
bugs, wireframing.
comercial
Fluid UI
fuidui.com
Web, prototipado para iOS, Android,
Windows y proyectos web.
comercial
Mockingbird
gomockingbird.com
Web, wireframing y prototipado. comercial
OmniGraffe
omnigroup.com/
products/omnigraffe
Desktop, diagramas y wireframing. comercial
Pencil
pencil.evolus.vn
Desktop, diagramas y wireframing. gratis
POP
popapp.in
Aplicacin iPhone y Android,
convierte diseos dibujados a mano
en prototipos funcionales.
gratis
Proto io
proto.io
Web, prototipado. comercial
Proty
protytype.com
Web, responsive wireframing. gratis
UX Pin
uxpin.com
Web, diseo y wireframing. comercial
Diseo visual
A menos que ests construyendo una aplicacin que utiliza una
entrada de datos no visual, tu interfaz de usuario se basar en
los grfcos. Cuidar de los detalles del diseo visual mejorar la
experiencia de tu aplicacin y har que se destaque de la masa.
Diseo Conceptual para Mviles
20
Diseo Conceptual para Mviles
La gestin de los espacios y la jerarqua visual mejoran la us-
abilidad de la interfaz. La estructura grfca defne los detalles
del posicionamiento de los elementos en pantalla y su relacin
entre s. Despus de que los usuarios aprendan la interfaz de
usuario, sta debera permanecer constante en todo el fujo de
la aplicacin. Por ejemplo, si el botn principal cambia de color
de una pantalla a otra, evala el impacto en los usuarios. Se
sentirn confusos? Comprendern el signifcado del cambio?
Si los cambios en color son intecionados, asegrate de que lo
ests haciendo por una buena razn.
Al igual que el diseo grfco y de interaccin a nivel de
wireframes, ciertas decisiones de estilo pueden ser informadas
por directrices espefcias de la plataforma. Tu aplicacin puede
parecer muy diferente dependiendo de la plataforma para la
que fue diseada. Asegrate de que tus diseos siguen las
prcticas recomendadas para el uso de fuentes, iconos estndar
y convenciones de estructura grfca. Una vez ms, consulta
los captulos relacionados con la plataforma que te interesa en
esta gua para encontrar ms informacin y enlaces a recursos
especfcos online.
Lo ptimo es que la marca de la empresa est presente en
la interfaz de una manera no obstructiva, de manera que los
usuarios puedan concentrarse en interactuar con tu aplicacin.
Utiliza el fondo, colores de control y, si cabe, ciertas imgenes
u opciones de diseo para obtener el aspecto deseado. La
pantalla de inicio (si existe) es el lugar donde se pueden
mostrar algunos grfcos adicionales.
Finalmente, el icono de aplicacin es el primer elemento
visual con el que tu aplicacin va a ser identifcada y evaluada.
Haz que tenga un buen aspecto. Si ests planeando hacer
versiones para mltiples plataformas, comprueba los requisitos
de diseo previamente para que puedas crear un diseo
fcilmente migrable.
Diseo Conceptual para Mviles
21
Disear para mltiples tamaos de pantalla
Teniendo en cuenta el muy variable mercado de dispositivos,
tendrs que tener encuenta tambin como tu interfaz de
usuario se ver en direfentes tamaos de pantalla y densidades.
Aunque puede parecer un poco pronto para estudiar los detalles
antes de haver refnado tu idea, incluir la relacin de escal-
abilidad-usabilidad en el prototipado y la fase de diseo (de
manera que tendrs algn tipo de representacin grfca de la
interfaz) puede salvar mucho tiempo de desarrollo y validacin
posterior. Si este tema es nuevo para ti vale la pena que leas
acerca de las mejores prcticas en diseo web adaptable o RWD
(del ingls Responsive Web Design). Los diseadores web tienen
expeiencia en resolver ste tipo de problemas, y obtendrs ms
informacin estudiando las directrices de desarrollo especfcas
de cada plataforma.
Pruebas de usuario
La mejor manera de validar tu concepto de interfaz es en-
frentarlos 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 m 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.
Pide a algunas personas que realicen ciertas tareas con tu
prototipo. Si la aplicacin que ests diseando es un reproduc-
tor de msica, puedes pedirles que pongan una cancin. Si
no ests seguro de ciertas funciones puede tratar de desviar
la atencin de los usuarios, pidindoles que realicen tareas
inversas, como cambiar la pista seleccionada y elegir otra en su
Diseo Conceptual para Mviles
22
lugar. Para obtener el feedback ms honesto, intenta no guiar a
tus usuarios durante su uso de tu aplicacin.
Aprende ms
Hay una gran cantidad de recursos disponibles online. Aqu te
mostramos algunos para abrirte el apetito:
Revistas online

Konigi: konigi.com

Smashing Magazine (seccin de diseo UX):
uxdesign.smashingmagazine.com

UX Magazine: uxmag.com

UX Matters: uxmatters.com

UX Mastery: uxmastery.com
Libros

Susan Weinschenk. 100 Things Every Designer Needs to
Know About People. Research fndings on why people
react in certain ways when interacting with technology.

Steve Krug. Rocket Surgery Made Easy. A guide how to
run usability testing sessions.

This is Service Design Thinking. Characteristics and
techniques of service design workfow.
1

Mobile Developer's Guide to the 5th Dimension. La
hermana menor de sta gua, enfocada en UX/UI
2
Otros recursos
Nielsen Norman Group: nngroup.com
Interaction Design Foundation: interaction-design.org
1 thisisservicedesignthinking.com
2 design.wip.org
Android
24
Android
El Ecosistema
La plataforma Android ha sido desarrollado por la Open Handset
Alliance, liderada por Google, y ha estado a disposicin del p-
blico desde noviembre de 2007. Su uso por muchos fabricantes
de hardware la ha convertido en el sistema operativo de smart-
phones con mayor crecimiento. Alrededor del 80% de todos los
smartphones vendidos en el cuarto trimestre del 2013 en todo
el mundo fueron Android
1
. Este ao, en la keynote anual Google
I/O de mayo de 2013, Google anunci que alrededor de 900
millones de dispositivos Android han sido activados hasta la
fecha
2
, incluyendo tablets, reproductores multimedia, decodi-
fcadores de televisin, telfonos de sobremesa y sistemas de
infotenimiento para automviles. Las Google Glass tambin
incluyen una versin reducida de Android 4.0.4 compatible con
aplicaciones web y nativas. Algunos dispositivos no-Android
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 Sailfsh
3
y la consola fnanciada en crowd-
founding Ouya.
En enero del 2014, hubo ms de 1.000.000 de aplicaciones
disponibles en Android Market
4
.
Android es un sistema operativo, una coleccin de aplicacio-
1 www.gsmarena.com/android_worldwide_marketshare_crosses_80_for_the_
frst_time-news-7171.php
2 gigaom.com/2013/05/15/google-io-statshot-900-million-android-devices-
activated/
3 sailfshos.org
4 www.appbrain.com/stats/number-of-android-apps
P
O
R




T
i
m

M
e
s
s
e
r
s
c
h
m
i
d
t
Android
25
nes preinstaladas y una plataforma de desarrollo de aplicaciones
(Dalvik) soportada por un amplio paquete de herramientas. La
plataforma sigue evolucionando rpidamente, con la adicin de
nuevas caractersticas regularmente, cada 6 meses aproximada-
mente, siendo la ltima Android 4.4 (nombre en clave 'KitKat').
Al igual que sus predecesores, KitKat puede ser considerado una
actualizacin menor debido a que sus mejoras, ajustes y cor-
recciones son menos visuales y ms de sistema. Aadiendo un
sistema unifcado para acceder al almacenamiento del telfono,
un entorno para impresin y el procesamiento por lotes, Google
se est asegurando de que los desarrolladores pueden escribir
aplicaciones ms consistentes y efcientes. Adems de estas
novedades, tambin se ha aadido un emulador de tarjeta NFC,
una tecnologa que puede ser utilizada en procesos de pago
y programas de fdelizacin, as como el soporte nativo para
mandos infrarrojos, que implica que podrs crear aplicaciones
para el control remoto de televisores, receptores, descodifcado-
res y muchos otros dispositivos.
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, slo un nmero muy pequeo de telfonos y
modelos de tablet (1,1%) son compatibles con la ltima versin
del sistema operativo. En cualquier caso, actualmente puedes
alcanzar casi el 100% de la base instalada si decides centrarte
en Android 2.2 o versiones superiores
5
.
5 developer.android.com/resources/dashboard/platform-versions.html
Android
26
Para fomentar una experiencia de usuario slida y una
apariencia consistente en las aplicaciones Android, Google
publica una gua de diseo
6
. Al introducirnos en la importancia
de los esquemas de color, pautas de diseo y pautas de uso
comn, 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
especfcas de la plataforma que no funcionarn en Android.
Puedes encontrar respuestas online a la preguntas "Qu y
Por qu?" en la Dev Guide para Android
7
y a al "Cmo?" en la
documentacin de referencia
8
. Adems, Google ha introducido
6 developer.android.com/design
7 developer.android.com/guide
8 developer.android.com/training/index.html
1.3%
Froyo 2.2
1,4%
KitKat 4.4
0.1%
Honeycomb 3.2
Gingerbread
2.3.3 - 2.3.7
21.2%
Ice Cream Sandwich
4.0.3 - 4.0.4
16.9%
59,1%
Jelly Bean
4.1 - 4.3
35.9%
API 16
15.4%
API 17
7
.
8
%
A
P
I

1
8
Android
27
una seccin en su documentacin llamada "Android Training"
9

que ayuda a los nuevos desarrolladores a aprender las mejores
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 Android
10
, 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)
11

son responsables de la integracin con IDEs y de asegurarse
que tu fujo 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 efcaz las Android Developer Tools
con IDEs.Utilizar estas herramientas ahorra algo de tiempo en
la puesta a punto de los SDKs y ofrece una experiencia ms
orientada a Android: Android Studio soporta Gradle y permite
mostrar recursos tales como cadenas de texto y colores junto
a sus referencias. Como Android Studio est an en estado de
beta temprana puede que encuentres algn bug, as que es
recomendable quedarse con Eclipse si crees que puede suponer
un problema para t.
9 developer.android.com/training/index.html
10 developer.android.com/sdk
11 developer.android.com/tools/sdk/eclipse-adt.html
Android
28
IDE soporte a plugin versin incluida
Eclipse paquete ADT por
separado
Eclipse + ADT Plugin
Intellij plugin Android por
separado
Android Studio
Puedes encontrar ms informacin, as como los necesarios
enlaces de descarga, en la seccin Developer Tools de la
documentacin de Android
12
.
Desarrollo nativo
El Android NDK
13
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 fabilidad y efciencia.
Implementacin
Arquitectura de la aplicacin
Las aplicaciones Android habitualmente incluyen una mezcla
mltiples objetos tipo actividades (Activity), servicios
(Service), BroadcastReceiver y proveedores de datos (Data
Provider), los cuales tienen que ser declarados en el manifesto
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
12 developer.android.com/intl/es/tools/index.html
13 developer.android.com/tools/sdk/ndk
Android
29
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 compo-
nentes, 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
14
.
Un Intent empaqueta datos, tales como la localizacin del
usuario o una URL, con una accin. Estos Intents 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 flosofa 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 especfco. 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 especfcos de Android. Dife-
rentes diseos pueden ser creados para diferentes tamaos de
pantalla, localizacin por pas y caractersticas del dispositivo,
sin tocar el cdigo Java. Con este fn, textos e imgenes estn
organizados en carpetas separadas de recursos. Por supuesto,
tambin puedes defnir y disear layouts va cdigo o hacer use
14 Android Interface Defnition Language
Android
30
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:

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, inspec-
cionar 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
Android
31
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
olvidaste agregar todos los permisos necesarios, tales como
andr oi d. per mi ssi on. I NTERNET en el elemento uses-
permission
15
.
Si ests utilizando las caractersticas introducidas despus
de Android 2.3, tales como Fragments
16
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.3
17
.
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 online
18
.
Desarrollar tu aplicacin para Android 3.1+ te permitir
crear widgets fexibles 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 notifcaciones expandibles,
widgets de bloqueo de pantalla y una cmara con deteccin de
rostros. El entorno nativo Renderscript (introducido en la 3.1)
ha cambiado mucho y no proporciona la capacidad de renderizar
15 developer.android.com/reference/android/Manifest.permission.html
16 developer.android.com/guide/topics/fundamentals/fragments.html
17 android-developers.blogspot.com/2011/03/fragments-for-all.html
18 developer.android.com/tools/support-library/features.html
Android
32
grfcos, 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
Google Play Services
19
, 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 autentifcar usuarios, puede
que te interese echar un vistazo a los benefcios 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
modifcaciones aunque, sin embargo, algunos fabricantes de
hardware pueden realizar cambios en algunos elementos de la
plataforma; por tanto, probar la aplicacin en varios dispositi-
vos es esencial. La lista de AppBrain
20
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 tiles
21
. 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
19 developer.android.com/google/play-services/
20 www.appbrain.com/stats/top-android-phones
21 developer.android.com/guide/topics/testing/testing_android.html
Android
33
usuario y enviar eventos del sistema tales como pulsaciones de
teclas. Tus tests pueden comprobar el estado de tu aplicacin
tras estos eventos. MonkeyRunner
22
es una potente y exten-
sible 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 fnalmente
un framework de automatizacin de pruebas de interfaz ms
efciente
23
, 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
ui aut omat or vi ewer 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 shel l ui aut omat or r unt est .
En octubre de 2013, una nueva herramienta llamada
Espresso
24
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 Robotium
25
,
pueden complementar otros tests automatizados. Robotium in-
cluso puede ser utilizado para probar archivos binarios apk si el
cdigo fuente de la aplicacin no est disponible. Roboelectric
26

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
22 developer.android.com/guide/developing/tools/monkeyrunner_concepts.html
23 android-developers.blogspot.de/2012/11/android-sdk-tools-revision-21.html
24 googletesting.blogspot.de/2013/10/espresso-for-android-is-here.html
25 code.google.com/p/robotium
26 robolectric.org
Android
34
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,
incluyendo Robotium, se basan en el entorno de Instrument-
acin de Android, y requerirn ser ejecutados en la JVM Dalvik.
Plug-ins como el Android Emulator Plugin
27
permiten que estos
tests sean confgurados y ejecutados en Hudson y Jenkins.
Compilacin
Aparte de crear tu aplicacin directamente en el IDE que
preferas, hay maneras ms cmodas de construir aplicaciones
Android. Gradle
28
es actualmente la herramienta de creacin
automatizada con soporte ofcial para Android. Tambin hay
un plug-in de Maven
29
que cuenta con un gran apoyo en la
comunidad de desarrolladores. Ambas herramientas pueden
tener dependencias de diferentes repositorios Maven, vase el
Maven Central Repository
30
.
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 android-
library para Gradle. Una excelente fuente de libreras Android
compatibles con Gradle es 'Gradle, please'
31
.
27 wiki.hudson-ci.org/display/HUDSON/Android+Emulator+Plugin
28 tools.android.com/tech-docs/new-build-system
29 code.google.com/p/maven-android-plugin/
30 www.maven.org
31 gradleplease.appspot.com
Android
35
Firma
Tus aplicaciones tienen que haber sido frmadas en el proceso
de compilacin, ya sea con una frma de depuracin o con una
de publicacin. Puedes utilizar un mecanismo de auto-frma, lo
que evita gastos relacionados con la frma (y seguridad).
La misma frma 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 Play
32
.
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
la aplicacin, aadir imgenes y descripciones, y entonces
publicarla.
32 developer.android.com/guide/google/play/billing/
Android
36
Asegrate de que has defnido ver si onName,
ver si onCode, un icono y una etiqueta en tu
Andr oi dMani f est . xml . Adems, las caractersticas declara-
das en el manifesto (nodos uses-feature) se utilizan para fltrar
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 especfcos 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 Checklist
33
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 aplicaciones
34
. Ofrecen diferentes mtodos de pago y
pueden dirigirse a grupos especfcos de consumidores. Uno de
esas tiendas es la Amazon Appstore, que viene instalada en la
familia de tablets Kindle Fire.
33 developer.android.com/distribute/googleplay/publish/localizing.html
34 onepf.org/appstores/
Android
37
Adaptacin
A medida que la adopcin de Android se incrementa, tambin lo
hace un ecosistema de elementos especfcos de fabricante que
incluyen sus propios SDKs, versiones de Android completamente
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.
Otro 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
verifcan todas aquellas que se suben a su Appstore.
Android
38
A continuacin, un breve resumen que te ayudar a localizar
los recursos que puedas necesitar:
Fabricante Documentacin
Amazon
developer.amazon.com/sdk/fre.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 aplica-
ciones disponibles, hay muchas maneras diferentes de moneti-
zar 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
39
como el servicio propio de facturacin de Google
35
, que utiliza
la tienda Google Play, el Mobile SDK de PayPal
36
o la Librera
Mobile Payments Library de PayPal
37
. La mayora de los servicios
diferen 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.
io
38
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
benefciarte de sus optimizados modelos de monetizacin.
Asegrate de verifcar que el mtodo de pago de tu eleccin
est en armona con los trminos y condiciones de las diferen-
tes 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.
35 developer.android.com/google/play/billing/
36 github.com/paypal/PayPal-Android-SDK
37 developer.paypal.com/webapps/developer/docs/classic/mobile/gs_MPL/
38 card.io
BlackBerry: Aplicaciones Java
41
BlackBerry:
Aplicaciones Java
El Ecosistema
La plataforma BlackBerry es desarrollada por la compaa
canadiense Research In Motion o 'RIM' (con el nombre actual
de BlackBerry Ltd.). Fue lanzada en 1999 y sus dispositivos
se hicieron extremadamente populares debido a que estaban
equipados con un teclado completo para introducir texto
cmodamente, una larga duracin de la batera y BlackBerry
Messenger (su red social mvil), adems de ofrecer un robusto
servicio de push para email y otros datos.
A pesar de ello, y con la excepcin de unos pocos mercados
(Nigeria, Indonesia y Sudfrica), la cuota de mercado global de
telfonos BlackBerry se ha reducido de manera continuada en
los ltimos aos. En el tercer trimestre del 2013, la venta de
dispositivos BlackBerry slo lleg al 2% de las ventas de smart-
phones a nivel mundial
1
. Para recuperar el terreno perdido,
RIM introdujo en el 2012 un sistema operativo completamente
nuevo: BlackBerry 10 (BB10). Desde el 2013 todos los nuevos
dispositivos BlackBerry se basan en BB10. En el captulo
dedicado a ese sistema operativo encontrars ms informacin.
Este captulo se centra en desarrollar aplicaciones para
dispositivos BlackBerry lanzados antes del 2013. A pesar de que
desaparecer en el futuro, actualmente la API Java de Black-
Berry es el mtodo ms utilizado para desarrollar aplicaciones
1 http://bgr.com/2013/10/30/blackberry-market-share-q3-2013/ bgr.
com/2013/10/30/blackberry-market-share-q3-2013/
P
O
R




O
v
i
d
i
u

I
l
i
e
s
c
u

&

M
i
c
h
a
e
l

K
o
c
h
BlackBerry: Aplicaciones Java
42
BlackBerry para dispositivos antiguos. Por ello, este captulo se
centra en ella.
Prerrequisitos
Primero, descarga el Java SDK
2
. A continuacin, te harn falta
Eclipse y el plugin de BlackBerry
3
. Puedes descargarlos por
separado o juntos en el paquete que ofrece BlackBerry, que
tambin contiene el SDK y simuladores para el ltimo sistema
operativo BlackBerry. Las instrucciones para descargar el SDK
para dispositivos antiguos estn en la pgina de descargas.
Adems, hay simuladores adicionales de dispositivos en el sitio
web de BlackBerry
4
.
Para implementar la aplicacin en un dispositivo de pruebas,
debes descargar e instalar el BlackBerry Desktop Manager
5
. Para
una implementacin ms rpida, se puede utilizar una her-
ramienta llamada javaloader que viene con el JDE.
Implementacin
El BlackBerry JDE se basa parcialmente en Java ME y en algunas
de sus extensiones JSR. sto signifca que las aplicaciones
BlackBerry pueden ser creadas usando solamente Java ME.Otra
opcin es utilizar las extensiones y el framework de UI propi-
etarios de BlackBerry que permiten utilizar la plataforma al
completo. Tienes un detallado JavaDoc de ambas APIs online
6
Otra opcin es el uso de extensiones y frameworks de
2 www.oracle.com/technetwork/java
3 us.blackberry.com/developers/javaappdev/javaplugin.jsp
4 us.blackberry.com/sites/developers/resources/simulators.html
5 us.blackberry.com/apps-software/desktop/
6 blackberry.com/developers/docs/7.0.0api/index.html
BlackBerry: Aplicaciones Java
43
desarrollo de interfaz de usuario propiedad de BlackBerry, que
permiten hacer un uso completo de la plataforma.
El estilo de los componentes nativos de interfaz de usuario
puede ser modifcado hasta cierto punto, pero heredan su
apariencia del tema activo. Esto se puede evitar por cdigo,
anulando el mtodo Fi el d. appl yTheme( ) para cada
componente/campo.
Desde OpenGL-ES a la interaccin con la pantalla de inicio
y la criptografa, las APIs de BlackBerry proporcionan todo lo
necesario para crear aplicaciones atractivas. Adems de las her-
ramientas ofciales de BlackBerry, hay extensiones de terceros
que te permiten mejorar las aplicaciones, por ejemplo J2ME
Polish
7
o Glaze
8
, que te permiten disear y animar tu interfaz
de usuario mediante CSS.
Servicios
BlackBerry ofrece muchos servicios que pueden ser tiles en el
desarrollo de tus aplicaciones, incluyendo publicidad, mapas,
pagos y servicios push
9
.
Un servicio push
10
es til principalmente en aplicaciones
de correo, mensajera o noticias. Su principal ventaja es que
el dispositivo espera que el servidor le enve actualizaciones
(en lugar de que el dispositivo est llamando continuamente
al servidor) lo que reduce trfco de red, uso de la batera y
costes. BlackBerry ofrece el servicio push gratuitamente de
manera limitada, con una extensin premium de pago que
permite enviar ms mensajes push.
7 j2mepolish.org
8 glaze-ui.org
9 developer.blackberry.com/services/#platform
10 us.blackberry.com/developers/platform/pushapi.jsp
BlackBerry: Aplicaciones Java
44
Portabilidad
Portar aplicaciones entre dispositivos BlackBerry es fcil,
ya que el sistema operativo ha sido realizado por una sola
compaa que ha tenido el cuidado de minimizar los problemas
de fragmentacin. Sin embargo, esto no elimina totalmente el
hecho de tener que enfrentarse a ciertos retos:

Algunas clases y funciones (por ejemplo, FilePicker) slo
estn disponibles en determinadas versiones del sistema
operativo.

Es necesario gestionar diferentes resoluciones de pantalla y
modos de orientacin (horizontal y vertical).

Es necesario gestionar dispositivos tanto tctiles como no
tctiles y, dependiendo del dispositivo de destino, algunas
funcionalidades especfcas del mismo, por ejemplo la
pantalla clickable del modelo Storm.
Migrar a otras plataformas Java tales como Java ME y
Android es complicado ya que no es posible trasladar la interfaz
de usuario de BlackBerry. En general, la portabilidad entre
plataformas depende de manera importante de la frecuencia
con la que tu aplicacin utiliza componentes nativos y APIs de
BlackBerry. Por ejemplo, no es posible reutilizar las clases de
los servicios push de BlackBerry en otra plataforma.
Testeo
BlackBerry ofrece simuladores para varios telfonos. Las
capacidades de testeo y depuracin de Blackberry estn a la par
con las de otras plataformas como Android e iOS: los simula-
dores permiten a los desarrolladores simular una gran variedad
de eventos (llamadas entrantes, los cambios en las coordenadas
GPS, los cambios en las condiciones de red, etc.), mientras que
BlackBerry: Aplicaciones Java
45
la depuracin en dispositivos hace que el cdigo sea fcil de
probar en hardware real.
Adems, los tests automatizados tambin son posibles,
aunque algo limitados y complicados. Puedes utilizar el paquete
de herramientas FledgeController
11
para inyectar eventos
programticamente desde tu ordenador, o puedes utilizar la
clase EventInjector
12
para insertar eventos desde una aplicacin
BlackBerry en el dispositivo (o simulador). Sin embargo, existe
muy poca documentacin disponible sobre este tema, por lo
que espera tener que hacer algo de hacking y de darle vueltas
a la cabeza como parte de tu experiencia con las pruebas
automatizadas en BlackBerry.
Firma
Muchas clases de nivel de seguridad crtico y algunas carac-
tersticas de la plataforma (tales como trabajo con redes o
APIs de archivo) requieren una aplicacin para ser frmadas de
manera que quien publica pueda ser identifcado. Para lograr
esto, es necesario obtener una clave de frma directamente
desde BlackBerry
13
. La frma en s se lleva a cabo mediante la
herramienta rapc, que tambin empaqueta la aplicacin para su
distribucin.
11 docs.blackberry.com/en/developers/deliverables/15476/Using_the_
BBSmrtphnSmltr_programmatically_607582_11.jsp
12 www.blackberry.com/developers/docs/4.1api/net/rim/device/api/system/
EventInjector.html
13 www.blackberry.com/SignedKeys/codesigning.html
BlackBerry: Aplicaciones Java
46
Distribucin
El canal de distribucin de BlackBerry se llama App World
14
, y
es donde puedes publicar tus aplicaciones. Para aplicaciones
de pago, como desarrollador obtienes una participacin en
los benefcios del 70%. Adems, GetJar
15
es un sitio web
independiente muy conocido que tambin publica aplicaciones
BlackBerry.
Aprende Ms
Si deseas obtener ms informacin acerca del desarrollo Java
para BlackBerry, los siguientes recursos que te pueden ayudar.
Aplicaciones incluidas de ejemplo
Los SDK vienen con una gran seleccin de aplicaciones de ejem-
plo, desde una simple aplicacin "Hola, Mundo!" a aplicaciones
multimedia y de geo-localizacin complejas.
Online
Un nmero importante de recursos en lnea estn disponibles
en:

El microsite ofcial de documentacin BlackBerry
16

Los foros de desarrollo de BlackBerry
17
Tambin hay una gran cantidad de conocimiento sobre
BlackBerry en Internet, que tratan algunos problemas y temas
14 appworld.blackberry.com/
15 www.getjar.com/
16 developer.blackberry.com/java/documentation/
17 supportforums.blackberry.com/t5/Java-Development/bd-p/java_dev
47
mucho mejor que la documentacin ofcial. Los motores de
bsqueda son tus amigos!
Libros
Obras impresas que se ocupan del desarrollo Java para Black-
Berry:

BlackBerry Development Fundamentals
18
por John Wargo

Beginning BlackBerry 7 Development 2nd Edition por
Anthony Rizk

Advanced BlackBerry 6 Development 2nd Edition por
Chris King
18 bbdevfundamentals.com/
BlackBerry 10
49
BlackBerry 10
El Ecosistema
La plataforma BlackBerry 10 (BB10) es un relanzamiento global
de BlackBerry (empresa anteriormente conocida como RIM).
BlackBerry ha adoptado este enfoque con el fn 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 el nuevo
buque insignia el Z30. Los otros modelos son el Z10, y dos
telfonos con teclado fsico, el Q5 y el Q10.
Como hemos comentado en el captulo anterior, en el primer
trimestre del 2013, BlackBerry est sometida a una gran presin
en el mercado. Necesitan convertir el BB10 en un xito si
no quieren perder an ms terreno, as que estn invirtiendo
mucho en l. Esto supone nuevas e interesantes oportunidades
para los desarrolladores de aplicaciones que estn dispuestos
a desarrollar para la nueva plataforma. Aunque el sistema
operativo es completamente 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. Un
elemento importante para BlackBerry en el mundo empresarial
es el software de gestin de mviles BlackBerry Enterprise
Server.
P
O
R




M
a
r
c
u
s

R
o
s
s
BlackBerry 10
La ltima versin del BlackBerry SDK es la 10.2 , disponible
a partir de octubre del 2013.
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 fn de atraer a los desarrolladores a su nuevo sistema
operativo, BlackBerry proporciona un amplio conjunto de recur-
sos, incluyendo un simulador, muchos proyectos de ejemplo en
GitHub
1
y documentacin actualizada frecuentemente
2
.
Un punto importante de descontento, por el que BlackBerry
ha recibido muchas crticas, es que la actual API de Java deja
de ser compatible. Esto signifca 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 dispues-
tos a hacer esto, hay cierta preocupacin respecto a que un
gran nmero de ellos abandonen el barco" y se reorienten a las
1 github.com/blackberry
2 developer.blackberry.com/platforms/bb10
BlackBerry 10
51
plataformas de la competencia. Adems, dado que no hay va
de migracin para las aplicaciones de la generacin actual, los
desarrolladores tendrn que volver a escribir desde cero para la
nueva plataforma. Esto es necesario porque el ncleo del nuevo
sistema operativo se basa en QNX
3
, 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.
C Native SDK
El BlackBerry SDK es compatible con muchos estndares
abiertos que permiten a los desarrolladores llevar sus aplicacio-
nes ya existentes a la plataforma. Para comenzar tienes el sitio
web Native Dev
4
. Escribir cdigo con el SDK nativo permite que
tu aplicacin est tan cerca del hardware como sea posible. 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 frmado y sus claves

Instalar el SDK nativo
5

Instalar y confgurar el simulador
6

Confgurar el entorno para desarrollo y despliegue

Crear tu primer proyecto

Ejecutar aplicaciones de ejemplo
3 www.qnx.com
4 developer.blackberry.com/native/beta/
5 developer.blackberry.com/native/download
6 developer.blackberry.com/native/download
BlackBerry 10
52
Como novedad, BlackBerry ha aadido soporte a Scoreloop
7

en el NDK. Scoreloop es una tecnologa que soporta juegos
sociales mviles. Esto permite a los desarrolladores integrar
atributos sociales en sus juegos, mientras que preserva el
aspecto especfco de cada uno de ellos. Algunas de las
caractersticas disponibles en la actualidad incluyen:

Perfl de usuario

Tablas de clasifcacin

Retos

Premios y logros
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 nativa dando un importante
soporte a la fcil 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 compor-
tamiento se defnen en un lenguaje de marcado llamado Qt
Modeling Language (QML)
8
. 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 especifcados. 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
7 developer.blackberry.com/native/documentation/bb10/com.qnx.doc.
scoreloop.lib_ref/topic/overview.htm
8 en.wikipedia.org/wiki/QML
BlackBerry 10
53

Capacidad de benefciarse 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 certifcados y herramientas criptogrfcas
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 fexible
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 defnir las cosas en lugar de
programarlas, por ejemplo, slo tienen que defnir 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 usu-
ario 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 Exporter
9
es para t. Este
plugin de Adobe Photoshop recorta y reescala las imgenes
y las empaqueta en un archivo tmz (en recursos de imagen
9 developer.blackberry.com/cascades/documentation/design/cascades_
exporter/
BlackBerry 10
54
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 est disponible el sitio Cascades Dev
10
.
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 SDK
11
. 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.js
12
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 framework
13
tambin es compatible con BB10.
La segunda herramienta es Ripple Emulator
14
. Se trata
de una extensin del navegador Chrome que acta como un
simulador de dispositivos BB10 para aplicaciones WebWorks.
Tambin emula caractersticas especfcas de hardware, tales
como el acelermetro y el sensor GPS. Incluso puedes utilizarlo
10 developer.blackberry.com/cascades/
11 developer.blackberry.com/html5/download/sdk
12 github.com/blackberry/bbUI.js
13 www.sencha.com/products/touch
14 developer.blackberry.com/html5/download/ripple
BlackBerry 10
55
para empaquetar e implementar tu aplicacin sin tener que
pasar a travs de la lnea de comandos.
Es bueno saber que BlackBerry ofrece soporte WebGL
acelerado por hardware, y que puedes realizar la depuracin y
perflado 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 Dev
15
.
15 developer.blackberry.com/html5
BlackBerry 10
56
Adobe Air
Si eres un desarrollador AIR puedes agregar BB10 como nuevo
canal de distribucin. Utilizars el BlackBerry 10 SDK para
Adobe AIR para crear aplicaciones para dispositivos BlackBerry.
Puedes utilizar el SDK con las APIs de Adobe ActionScript
y Adobe Flex para crear o portar aplicaciones BlackBerry. Estas
APIs proporcionan algunos componentes nicos de interfaz de
usuario y temas predefnidos, as como listeners de eventos
especfcos de dispositivos BlackBerry. Utilizando las APIs de
Adobe Flash Builder, tu aplicacin tambin puede acceder a
funciones nicas de dispositivos mviles, como el acelermetro
y la informacin de geolocalizacin. Adems, puedes aprovechar
las caractersticas de BlackBerry SDK Native 10 mediante el
desarrollo de extensiones nativas de AIR, ANE (del ingls AIR
Native Extensions).
Para comenzar a desarrollar tu aplicacin Adobe AIR:

Descarga e instala VMware Player para Windows or VMware
Fusion para Mac

Descarga el simulador BlackBerry 10 Simulator

Descarga el BlackBerry 10 SDK para Adobe AIR

Comienza a desarrollar con Adobe Flash Builder, Power-
fasher FDT o herramientas de lnea de comandos
Para mayor informacin, visita el website dedicado a ste
tema
16
.
Android en Tiempo de Ejecucin (Runtime)
Puedes utilizar el BlackBerry Runtime para ejecutar aplicaciones
Android Jelly Bean 4.2.2 en BlackBerry 10.2. Para utilizar el
runtime, primero debes volver a empaquetar tus aplicaciones
16 developer.blackberry.com/air/
BlackBerry 10
57
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 her-
ramientas 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 ven-
taja 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 frmar tu aplicacin
antes de distribuirla. Si deseas probar la aplicacin sin
frmarla, puedes utilizarlo para crear e instalar un token de
depuracin en el dispositivo de destino o en el simulador.

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 frmarlo para que pueda ser
distribuido a travs de la tienda BlackBerry App World.
BlackBerry 10
58

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, frmarlas, crear tokens de depuracin
y un certifcado de desarrollador.
Si deseas obtener ms informacin acerca de cmo ejecutar
aplicaciones Android en BB10, visita el sitio web
17
.
Blackberry App Generator
Si no eres un desarrollador, BlackBerry proporciona una manera
fcil de generar una aplicacin sencilla para BB10 con el Black-
Berry App Generator
18
. Esa pgina web genera una aplicacin
basada en fuentes de informacin como

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.
17 developer.blackberry.com/android
18 blackberryappgenerator.com/blackberry/
BlackBerry 10
59
Testeo
BlackBerry contina proporcionando un simulador para telfo-
nos BB10 como una descarga independiente
19
. 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 frmada para que
el desarrollador pueda ser identifcado. Este ltimo paso en
el desarrollo de una aplicacin para BlackBerry a menudo es
difcil.
Si quieres probar tu aplicacin sin frmar en un dispositivo
fsico, es necesario solicitar un archivo llamado token de
depuracin. Esta token permite a un dispositivo especfco
BB10 ejecutar aplicaciones sin frmar. Para realizar este
procedimiento de confguracin necesitas solicitar un archivo
de frma (cliente-PBDT-xxxxx.csj) a travs del BlackBerry Orden
Key Form
20
. Despus de recibir el archivo por email podrs
instalar un token de depuracin con las herramientas de lnea
de comandos. Despus de realizar esta confguracin, tambin
podrs ejecutar aplicaciones sin frmar en tu dispositivo. Ten
19 developer.blackberry.com/devzone/develop/simulator/
20 www.blackberry.com/SignedKeys/codesigning.html
BlackBerry 10
60
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 frma, que se solicitan a travs
del BlackBerry Orden Key Form
21
. Para ayudarte con este
proceso de confguracin, BlackBerry ofrece una gua paso a
paso en esta pgina web
22
que te guiar en el proceso.
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 World
23
. La necesaria
cuenta de proveedor se puede crear en el Portal de Proveedores
para BlackBerry World
24
.
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 dedicado
25
.
21 www.blackberry.com/SignedKeys/codesigning.html
22 developer.blackberry.com/CodeSigningHelp/codesignhelp.html
23 appworld.blackberry.com/
24 appworld.blackberry.com/isvportal
25 developer.blackberry.com/distribute/enterprise_application_distribution.html
61
Firefox OS
62
Firefox OS
El Ecosistema
Necesitamos otro sistema operativo para mviles? La Fun-
dacin Mozilla piensa que s y ha desarrollado Firefox OS
1
, un
sistema operativo de cdigo abierto basado en Linux enfocado
a smartphones de gama baja. Desde su nacimiento, sus ciclos
de actualizaciones han sido bastante ambiciosos: tras lanzar la
versin 1.0 en febrero del 2013 le siguieron la 1.1 en octubre y
la 1.2 de diciembre del mismo ao.
El primer dispositivo Firefox OS disponible para el mercado
de masas fue el ZTE Open, que se comercializa al precio de 80
dlares americanos y que ha sido promocionado en mercados
emergentes. Con el lanzamiento de One Touch Fire de Alcatel en
Alemania, Firefox OS entr ofcialmente en el mercado europeo
en octubre del 2013. El precio de lanzamiento fue de 90 euros.
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
lenguages nativos de desarrollo. Esto signifca 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/frefox/os
P
O
R




M
a
r
c
u
s

R
o
s
s
Firefox OS
63
Firefox OS consiste bsicamente en tres componentes
principales:

Gonk: El kernel de bajo nivel de Linux y la capa de abstrac-
cin 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 grfco, motor de diseo, mquina
virtual (para JavaScript) y capas de portabilidad.

Gaia
2
: Es la interfaz de usuario, escrita en HTML, CSS y Ja-
vaScript. 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 escriber 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, 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 mamanifestonifest
3
. Se trata de
2 github.com/mozilla-b2g/gaia github.com/mozilla-b2g/gaia github.com/
mozilla-b2g/gaia
3 developer.mozilla.org/en-US/docs/Web/Apps/Manifest
Firefox OS
64
Firefox OS
metadata para tu aplicacin que defne su nombre, descripcin,
iconos e informacin adicional.
ste es el contenido mnimo que debe tener un manifesto:
{
name: Hel l o Wor l d,
descr i pt i on: Yet anot her . . . ,
l aunch_pat h: / i ndex. ht ml ,
i cons: {
128: i con. png
},
devel oper : {
name: Your name,
ur l : ht t p: / / . . .
},
def aul t _l ocal e: en
}
La WebAPI de Firefox
4
ofrece acceso a: vibracin, geolocal-
izacin, 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 sim-
plemente realizando la llamada navi gat or . bat t er y. l evel
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.
A continuacin, un ejemplo de cmo crear un SMS:
4 wiki.mozilla.org/WebAPI
65
var sms = new MozAct i vi t y( {
name: new,
dat a: {
t ype: websms/ sms,
number : +46777888999
}
}) ;
Y otro de cmo acceder a la galera de imgenes:
var pi ck = new MozAct i vi t y( {
name: pi ck,
dat a: {
t ype:
}
}) ;
Simulacin y Testeo
Mozilla provee de un simulador para Firefox
OS descargable como un plugin de navegador web
5
.
Firefox OS 1.2 introdujo el App Manager
6
. sta nueva
herramienta de desarrollo permite testear cdigo y propor-
ciona ms asistentes de GUI, tales como el editor de manifesto.
An as, es muy recomendable no confar ciegamente en el
simulador: por ejemplo, dispone de mucha ms RAM que un
dispositivo Firefox real.
5 addons.mozilla.org/en-us/frefox/addon/frefox-os-simulator/
6 developer.mozilla.org/en-US/Firefox_OS/Using_the_App_Manager
Firefox OS
66
Distribucin
Mozilla ha creado una AppStore global llamada Marketplace
7
. Tu
aplicacin ser revisada conforme a las directrices de Mozilla
8
.
Una vez est publicada, obtendrs un 70% de los benefcios que
genere.
Aprende ms
Tu recurso principal para conocer ms acerca de cmo desar-
rollar para Firefox OS ser la red Mozilla Developer
9
. Una breve
introduccin, que incluye tutoriales en vdeo acerca de como
comenzar est disponible en
10
. Andr Fiedler tambin ofrece
informacin esclarecedora para los no-iniciados en su present-
acin de Slideshare 'Doing mobile web Apps for Firefox OS - the
right way'
11
. Para fnalizar, el desarrollador y evangelista en
Mozilla Chris Heilmann aporta mucha informacin en su blog
12
.
7 marketplace.frefox.com
8 http://developer.mozilla.org/en-US/docs/Web/Apps/Publishing/Marketplace_
review_criteria
9 developer.mozilla.org
10 marketplace.frefox.com/developers/docs/quick_start
11 slideshare.net/andrefedler1/doing-mobile-web-apps-for-frefox-os-the-right-
way
12 hacks.mozilla.org/author/cheilmann
iOS
68
iOS
El Ecosistema
Breve Historia de iOS
Apple anunci iOS en la MacWorld 2007 (que por aquel enton-
ces se conoca como iPhone OS), junto con el primer iPhone,
el cual fue puesto a la venta el 29 de junio de 2007. Desde
entonces, Apple ha lanzado cada ao una nueva generacin
del iPhone acompaada de una nueva versin de iOS, en
algn momento entre junio y octubre. En octubre del 2013 se
comercializ la ltima versin disponible hasta la fecha, la 7.0,
tras ser presentada en la Apple Worldwide Developer Conference
(WWDC) 2013. Por primera vez desde el debut de la primera
versin de iOS, se di un giro drstico la interfaz de usuario y
su esttica. Mientras que para los usuarios los cambios en iOS 7
implicaron bsicamente acostumbrarse a un grafsmo diferente,
los desarrolladores tuvieron que trabajar duro para adaptar sus
aplicaciones; creadas para las pautas de diseo de las versiones
previas del sistema operativo, sus interfaces parecan estar
fuera de lugar en el nuevo sistema operativo.
Dispositivos Ejecutando iOS
Actualmente, Apple vende mltiples dispositivos (con diversas
confguraciones) que funcionan con iOS:

iPhone

iPod touch

iPad

Apple TV
P
O
R




A
l
e
x
a
n
d
e
r

R
e
p
t
y
iOS
69
Con la excepcin de Apple TV, todos estos dispositivos in-
cluyen la App Store y pueden ejecutar aplicaciones de terceros.
La mayora de los dispositivos ejecutan la versin ms
reciente de iOS durante dos aos o ms despus de su lanza-
miento inicial, por lo que los desarrolladores deben considerar
esto cuando crean una aplicacin. Utilizar hardware antiguo
habitualmente signifca disponer de menos recursos, como
ciclos de CPU y RAM, y en algunos casos diferentes tamaos
y/o resoluciones de pantalla.
Existe una lista detallada de dispositivos iOS, sus capacid-
ades y las versiones de iOS compatibles en la Wikipedia
1
.
Ventas de Dispositivos y Aplicaciones
Segn los datos de Apple, que suelen ser hitos anunciados en
eventos especiales de la marca, ya se han vendido ms de 700
millones de dispositivos iOS
2
. Segn el diagrama del artculo
mencionado, ms de 200 millones de dichos dispositivos fueron
vendidos en e 2013. Dado que las ventas de dispositivos iOS
siguen ganando impulso, incluso despus de cinco aos, un
gran nmero de estos dispositivos se puede considerar en uso
activo y utilizando bien iOS 6 o iOS 7.
La App Store ofrece actualmente ms de 1.000.000 de
aplicaciones creadas por terceros desarrolladores, que en
conjunto han sido descargadas ms de 60 mil millones de
veces
3
, aportando ms de diez mil millones de dlares a sus
desarrolladores, segun Apple
4
.
1 en.wikipedia.org/wiki/List_of_iOS_devices
2 theverge.com/2013/9/10/4715256/apple-700-million-ios-devices-sold-by-
end-of-september
3 http://theverge.com/2013/10/22/4866302/apple-announces-1-million-apps-
in-the-app-store theverge.com/2013/10/22/4866302/apple-announces-1-
million-apps-in-the-app-store
4 digitaltrends.com/mobile/app-store-specs-wwdc-2013
iOS
70
Fragmentacin
Con la introduccin de dispositivos de 4 pulgadas (el iPhone
5 y la quinta generacin de iPod Touch) en el 2012, Apple ha
cambiado por primera vez las proporciones de sus modelos
iPhone e iPod, lo que puede implicar un esfuerzo extra para
desarrollar para ambos dispositivos, especialmente si se desea
una aplicacin universal (optimizada tanto para iPhone/iPod
como para iPad).
Aunque las arquitecturas de CPU no han contribuido de
manera extraordinaria al desarrollo de aplicaciones, Apple ha
introducido un chip ARM de 64-bits, el Apple A7
5
, que puede
exigir otro esfuerzo adicional para dar soporte a arquitecturas
tanto de 32 como de 64-bits, dependiendo del caso de uso. En
cualquier caso, para la mayora de aplicaciones esto no implica
nada ms all de recompilar utilizando una nueva versin de las
herramientas de desarrollo de Apple.
En el lado del software, la reciente introduccin de iOS 7
viene con una interfaz de usuario remasterizada, as como la
esttica asociada. Contrariamente al estilo previo enriquecido
visualmente con profundidad y ornamentacin, el nuevo
sistema operativo utiliza un estilo plano y mnimos detalles en
la iconografa. Este cambio tambin implica trabajo extra para
las aplicaciones que deban ser compatibles con el nuevo iOS 7
y versiones anteriores, como iOS 6.
Teniendo en cuenta que Apple an comercializaba modelos
antiguos de hardware en Diciembre de 2013, por ejemplo algu-
nos que no usan pantallas Retina (como el iPad 2 o el primer
modelo de iPad mini), se recomienda a los desarrolladores
incluir los grfcos en dos paquetes separados, optimizados
para diferentes modelos de pantalla.
Gracias a que las actualizaciones del sistema operativo
estn disponibles a usuarios y dispositivos compatibles de
5 en.wikipedia.org/wiki/Apple_A7
iOS
71
hasta cuatro aos de antigedad en algunos casos, los usuarios
tienden a adoptar las nuevas versiones rpidamente en
comparacin con otras plataformas. Segn el Apple's App Store
Support Center
6
, alrededor del 80% de todos los dispositivos
ya utilizaban iOS 7 en enero del 2014, slo tres meses despus
de su lanzamiento. Esta adopcin acelerada signifca que los
desarrolladores pueden dedicar el grueso de sus esfuerzos a
las nuevas versiones del sistema operativo rpidamente, y
abandonar as el soporte a versiones anteriores.
Descripcin General de la Tecnologa
Frameworks y Lenguaje(s)
Dado que iOS se basa en Mac OS X, utiliza una gran parte de los
mismos entornos de desarrollo y tecnologas, a excepcin de la
capa de Cocoa Touch (que gestiona y renderiza la interfaz de
usuario) y algunos pequeos frameworks que son nicos para
cada uno de sus sistemas. Esto facilita que un buen nmero de
aplicaciones utilicen una base de cdigo similar y slo tengan
que variar la interfaz de usuario, que debe ser rediseada en
cualquier caso para dispositivos tctiles.
Apple continua unifcando las plataformas haciendo
disponibles en iOS frameworks que anteriormente slo estaban
disponibles para OS X, y viceversa. Un ejemplo es MapKit, que
Apple incluy en iPhone OS 3.0 en el 2009 e introducjo en
ordenadores Mac en OS X 10.9 (Mavericks) en el 2013.
La mayora de los frameworks para iOS suministrados por
Apple estn escritos en Objective-C (o sobre APIs Objective-C
proporcionadas por otro backend), que es un runtime ligero
sobre C inspirado en Smalltalk, con plena compatibilidad
sobre C. Pocos entornos suministran APIs de C, la mayora son
utilizados para la programacin de audio y video. El sistema
6 developer.apple.com/support/appstore/
iOS
72
tambin soporta el desarrollo en C++ y Objective-C++, e incluye
frameworks estndar para esos lenguajes.
Antes del lanzamiento de iOS, Objective-C llevaba una
existencia un tanto sombra con niveles de popularidad tan
bajos como del 0,03% en el ndice TIOBE
7
, gracias a su uso casi
exclusivo en Mac OS X. En diciembre de 2007 era el lenguaje
de programacin nmero 57 en popularidad y desde entonces
se ha ido alzando hasta llegar al tres puesto en el ao 2013,
justo por detrs de Java y C, tras convertirse en el "Lenguaje de
Programacin del Ao" en el 2011 y el 2012.
A lo largo de los ltimos aos, Apple ha realizado nu-
merosas mejoras tanto en el runtime de Objective-C como
en el compilador LLVM para agregar nuevas caractersticas al
lenguaje, como la gestin automtica de memoria, blocks (una
forma de closures) y propiedades sintetizadas automticamente,
de las cuales la mayora de los desarrolladores se benefcian
directamente al tener que escribir menos cdigo.
Apple ofrece una gran cantidad de recursos en su sitio web
para desarrolladores iOS
8
, incluyendo descargas de software,
videos de aprendizaje, guas de iniciacion, documentacin,
cdigos de ejemplo y foros.
La mayora de estos recursos contienen informacin muy
valiosa, como las Human Interface Guidelines (Directrices de
Interfaz Humana), que todos los desarrolladores deberan leer.
Lenguajes de Programacin Alternativos
Si vienes de otras plataformas y lenguajes, aprender Objective-C
y las APIs del iOS SDK puede parecer muy complicado, especial-
mente dada la inusual sintaxis del lenguaje si la comparamos
con otros lenguajes de programacin populares. Por tanto, vale
7 tiobe.com/index.php/content/paperinfo/tpci/index.html
8 developer.apple.com/devcenter/ios/
iOS
la pena considerar una alternativa al uso de las herramientas y
lenguajes de Apple.
A lo largo de los aos, han aparecido algunos productos que
hacen de puente y facilitan el desarrollo contra las APIs del
iOS SDK desde diferentes lenguajes. Uno de los ms populares
es Xamarin.iOS
9
, previamente conocido como MonoTouch. ste
producto tiene por objetivo facilitar la portabilidad de cdigo
existente en C# a iOS (y Android, utilizando Xamarin.Android),
a la vez que se utilizan APIs nativas de iOS, optimizando el
tiempo de ejecucin. Como es un producto comercial, Xamarin.
iOS se actualiza con rapidez cada vez que Apple realiza
modifcaciones, lo que lo convierte en una opcin viable para
los desarrolladores interesados en portar su lgica de negocio
en .NET a sta plataforma.
Los desarrolladores Ruby interesados en desarrollar para iOS
pueden echar un vistazo a RubyMotion
10
, una implementacin
del lenguaje de programacin que se ejecuta tanto en OS X
como en iOS. El producto ofrece compatibilidad con las libreras
Objective-C existentes (va el sistema de gestin de paquetes
CocoaPods
11
o manualmente) y compilacin de cdigo fuente
(para ofuscacin y velocidad en tiempo de ejecucin). Como
Xamarin.OS, RubyMotion es un producto comercial con un ritmo
de actualizacin constante.
9 http://xamarin.com/ios xamarin.com/ios
10 http://rubymotion.com rubymotion.com
11 http://cocoapods.org cocoapods.org
iOS
74
Xcode y Sus Alternativas
Para el desarrollo en iOS (y Mac OS X), Apple suministra su
propia suite de herramientas de desarrollo de forma totalmente
gratuita, incluyendo las siguientes aplicaciones:

Xcode: entorno de desarrollo integrado

Instruments: analizador de rendimiento que se ejecuta
sobre DTrace

Dashcode: entorno de desarrollo para widgets del Dash-
board (Mac OS X) y otro contenido relacionado con HTML

iOS Simulator: simula un entorno iOS para testeo rpido
Una IDE comercial alternativa a Xcode es JetBrains' Ap-
pCode
12
, una aplicacin Java con algunas caractersticas de
mayor calado que las que Xcode ofrece.
Primeros Pasos en iOS
Los requisitos necesarios para comenzar a desarrollar en iOS
son:

Ordenador Mac con procesadores Intel y sistema operativo
Mac OS X 10.8/10.9

Cuenta gratuita en Apple Developer Connection

Xcode 4.x/5.x e iOS SDK (disponibles gratuitamente en
developer.apple.com)
Esta confguracin permite escribir aplicaciones y testearlas
en un simulador iOS incluido en Xcode y el SDK de iOS. Esto es
sufciente para comenzar y adquirir conocimientos generales del
software de desarrollo para iOs, pero para construir aplicaciones
para dispositivos iOS y publicarlas en la App Store es necesario
12 jetbrains.com/objc/
iOS
75
adquirir una cuenta en Apple Developer Connection (disponible
desde US$99/79 al ao). Una cuenta de pago en el iOS
Developer Program tambin da acceso a versiones preliminares
de software en desarrollo, tales como versiones beta de nuevas
versiones de iOS y Xcode.
En general, es recomendable realizar tantas pruebas como
sea posible en el mayor nmero de dispositivos posibles. En
la seccin Testeo & Debugging ms adelante hay informacin
detallada al respecto.
Para aquellos desarrolladores deseosos de sumergirse en el
mundo iOS, Apple ofrece mucha informacin para comenzar
as como guas en su website
13
. El mejor documento para los
novatos en la plataforma es Start Developing iOS Apps Today
14
,
que aporta una visin general y amplia de los pasos a seguir y
las habilidades necesarias para desarrollar aplicaciones iOS, y
enlaza a varios artculos que tratan en profundidad el proceso
completo, desde tutoriales bsicos de confguracin a guas de
diseo de interaccin.
Profundizando en iOS
Una vez te has comprendido los conceptos bsicos de la
plataforma iOS, Objective-C y el entorno Cocoa, es el momento
de ampliar tus conocimientos aprendiendo acerca de otros
entornos provedos por Apple y sobre cmo pueden ayudarte a
construir aplicaciones iOS excepcionales.
Un gran punto de inicio es utilizar un libro que trate todos
los aspectos del desarrollo en iOS. Muchos desarrolladores ex-
perimentados en iOS sugieren alguno de los de Aaron Hillegass,
13 developer.apple.com/library/ios/navigation/#section=Resource%20
Types&topic=Getting%20Started
14 developer.apple.com/library/ios/referencelibrary/GettingStarted/RoadMapiOS/
chapters/Introduction.html
iOS
76
por ejemplo "iOS Programming: The Big Nerd Ranch Guide"
15
.
Incluso teniendo en cuenta que los libros acerca de desarrollo
en iOS suelen quedar desfasados rpidamente, debido a unos
ciclos de desarrollo muy rpidos, este libro explica conceptos
que probablemente sern vlidos a largo plazo y que retan al
lector ms de lo que otros libros suelen hacer.
Para aquellos que aprendan mejor en el entorno de un aula,
Big Nerd Ranch tambin ofrece una gran cantidad de cursos
16
en
Europa y Estados Unidos.
Para un nivel de profundidad incluso mayor, puede ser
interesante echar un vistazo al catlogo de editoriales tales
como Pragmatic Programmers, Apress, Sams y O'Reilly. Todas
ellas publican regularmente libros de calidad para niveles de
principiante, intermedio y avanzado sobre diversos entornos de
desarrollo.
Testeo y Debugging
Las herramientas de desarrollo para iOS incluyen soporte para
pruebas tanto unitarias como automatizadas sobre la interfaz
de usuario a travs del framework UIAutomation. Utilizando la
lnea de comandos de Xcode, dichas herramientas pueden ser
incluidas en sistemas de integracin continua para las pruebas
de aceptacin automtica.
Existen numerosas herramientas y frameworks externos
de automatizacin de tests. Algunos son comerciales y
propietarios, sin embargo la mayora actualmente son open
source, incluso de empresas que desean vender servicios para
que tu testeo automatizado sea ms simple y ms potente.
Muchas de las herramientas externas de automatizacin de tests
requieren que el desarrollador incorpore una librera en una
15 bignerdranch.com/book/ios_programming_the_big_nerd_ranch_guide_rd_
edition_
16 http://www.bignerdranch.com/training
iOS
77
compilacin especial de su aplicacin. La librera permite a los
tests interactuar con la aplicacin. Ten cuidado de mantener la
compilacin especial separada de la destinada a distribucin
en la tienda de aplicaciones, de lo contrario es posible que sea
rechazada cuando la enves a la App Store.
Xcode incluye tanto gdb y lldb y utilizar automticamente
el apropiado segn qu compilador se est utilizando para la
aplicacin. Aunque mantienes el control total sobre el depu-
rador desde el smbolo del sistema, Xcode ofrece una interfaz
de usuario para las acciones frecuentes, como la confguracin,
edicin y eliminacin de puntos de interrupcin (breakpoints),
variables de vista y contenido de la memoria.
Estos instrumentos tambin ofrecen varias caractersticas
para ayudar a los desarrolladores a descubrir bugs, cuellos de
botella de rendimiento y problemas de gestin de memoria.
Como su nombre indica, el simulador de iOS es slo eso, un
simulador, y como tal tiene diferentes caractersticas de tiempo
de ejecucin respecto a los dispositivos iOS reales, no pudiendo
emular un entorno de iOS completo. Por lo tanto, una serie de
cuestiones que surgirn con dispositivos reales simplemente no
saldrn a la superfcie cuando se prueben las aplicaciones en el
simulador. Afortunadamente, todos los tests se pueden ejecutar
tambin en dispositivos, y Apple permite a los desarrolladores
aprovisionarse de hasta 100 dispositivos iOS para ejecutar sus
aplicaciones con fnes de prueba y demostracin.
Incorporar y gestionar software de pruebas de terceros (si
no se dispone de propio) se realiza fcilmente a travs de
TestFlight
17
y HockeyApp
18
, los cuales ofrecen diversas funciones
tiles, como la frma automtica de cdigo, informe de fallos y
actualizacin en la misma aplicacin para los beta testers.
17 testfightapp.com/
18 hockeyapp.net
iOS
78
Aprende Ms
Online
Durante los ltimos aos, la mailing list de Dave Verwer "iOS
Dev Weekly"
19
se ha convertido en, probablemente, el recurso
ms relevante para todo desarrollador serio de iOS. Dave
compila las notcias ms interesantes de la semana y las enva
cada viernes.
Recientemente, un grupo de desarrolladores iOS liderados
por Chis Eidhof, Daniel Eggert y Florian Kugler se unieron para
publicar objc.io
20
, una revista online para desarrolladores iOS
que se publica mensualmente de manera gratuita en su website,
y por una pequeo importe de subscripcin en la aplicacin
Newsstand de la App Store. La revista explora un tema diferente
cada mes publicando una serie de artculos que tratan sobre
tecnologas relacionadas con dicho tema.
El pasado ao, Matt Thompson construy un excelente re-
positorio de artculos sobre poco conocidas, o incluso ignoradas,
APIs en Objective-C y Cocoa en "NSHipster"
21
. Actualmente
contina publicando artculos interesantes semanalmente
y hace poco ha publicado la recopilacin del primer ao de
artculos en formato libro.
Ole Begemann escribe regularmente un blog en el que
comparte sus conocimientos en profundidad sobre temas de
desarrollo iOS que no suelen encontrarse en ningn otro lugar.
Puedes suscribirte a su RSS en oleb.net/blog/.
Probablemente la mayor coleccin de tutoriales de alta
calidad de desarrollo en iOS est a tu disposicin por cortesa
de Ray Wenderlich
22
y su equipo. Cubren un amplio abanico de
19 iosdevweekly.com
20 http://www.objc.io objc.io
21 nshipster.com
22 raywenderlich.com
iOS
79
intereses y temas, desde tutoriales para principiantes hasta el
desarrollo completo de un juego en 3D.
Muchos otros desarrolladores publican regularmente
informacin valiosa acerca del estado de la cuestin en sus
blogs. Uno notable es del de Mike Ash
23
, en el que publica una
interesante serie de preguntas y respuestas acerca de desarrollo
en Objective-C y Cocoa. Se pueden encontrar ms blogs a travs
de www.planetcocoa.org.
Eventos
Debido a la creciente popularidad de iOS, se producen numero-
sas conferencias centradas en iOS por todo el mundo cada
ao, demasiadas para enumerarlas aqu. Hay dos de ellas, sin
embargo, que merecen especial mencin:

Cada ao, en junio, Apple mantiene su Worldwide
Developer Conference (WWDC, Conferencia Mundial de
Desarrolladores)
24
. De una semana de duracin en San
Francisco, incluye muchas conferencias simultneas sobre
Mac OS X e iOS con sesiones de desarrollo de los ingenieros
de Apple, as como de laboratorios prcticos, donde
los asistentes pueden pedir a los ingenieros de Apple
asesoramiento acerca de los problemas que se enfrentan al
desarrollar sus aplicaciones.

La conferencia europea ms grande y de mayor xito en
torno a Mac OS X e iOS es la NSConference
25
, se celebra
cada ao alrededor de marzo en Inglaterra.
Ambas conferencias agotan las entradas en cuestin de
das, si no horas, as que si ests pensando en ir a cualquiera
23 mikeash.com/pyblog/
24 developer.apple.com/wwdc/about/
25 ideveloper.tv/nsconference/
iOS
80
de ambas, planifcate con mucha anticipacin y suscrbete a
alertas sobre la salida a venta de tickes.
Si buscas conectar con desarrolladores como t, es probable
que encuentres un evento de CocoaHeads
26
al que puedas
asistir. La mayora de los grupos de Cocoa Heads consisten en
una comunidad informal de desarrolladores para Mac e iOS que
se renen, comparten sus experiencias y se ayudan unos a otros.
26 cocoaheads.org
Java ME (J2ME)
82
Java ME (J2ME)
El Ecosistema
J2ME (ofcialmente Java ME) es la plataforma de aplicaciones
mviles ms antigua que an sigue estando ampliamente
utilizada. Desarrollada por Sun Microsystems, empresa que
fue comprada posteriormente por Oracle, J2ME est diseada
para funcionar principalmente en telfonos de gama media. La
mayora de tales dispositivos en el mercado actual soportan
J2ME.
Debido a su antigedad y segmento primario de mercado,
J2ME no resulta especialmente bien parada en lo que se refere
a APIs, potencia de hardware y generacin de benefcios. Como
consecuencia, la popularidad de J2ME ha disminuido signifcati-
vamente en los ltimos aos.
Entonces, por qu querras desarrollar para J2ME? Sobre
todo por una razn: el alcance de mercado. A pesar de que,
las ventas de smartphones superaron a las de los telfonos de
gama media por primera vez en el segundo trimestre del 2013
1
,
la mayora de los telfonos mviles en uso siguen siendo de
gama media, y stos normalmente soportan Java ME. 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 gartner.com/newsroom/id/2573415
P
O
R




O
v
i
d
i
u

I
l
i
e
s
c
u
83
Prerrequisitos
Para desarrollar una aplicacin Java ME, necesitars::

El Java SDK
2
y un IDE de tu eleccin, por ejemplo Eclipse
Pulsar para Desarrolladores Mviles
3
, NetBeans
4
con su
plug-in Java ME o IntelliJ
5
. Los principiantes habitual-
mente eligen NetBeans.

Un emulador, como Wireless Toolkit
6
, el Micro Emulator
7
o
un SDK o emulador de un proveedor especfco.

Dependiendo de tu confguracin, puedes necesitar un
ofuscador como ProGuard
8
. Para desarrollos profesionales
considera utilizar una herramientas como Maven
9
o Ant
10
.

Quizs te interese echarle un vistazo a J2ME Polish
11
, el
framework de cdigo abierto para desarrollar tu aplicacin
para varios dispositivos.
Completar la instalacin y las instrucciones de confguracin
va ms all del alcance de esta gua, consulta la documentacin
de las respectivas herramientas.
Tambin puedes descargar y leer los JavaDocs para las tec-
nologas y APIs ms importantes: puedes descargar la mayora
de ellos desde www.jcp.org. Para APIs especfcas del fabricante,
la documentacin suele estar disponible en la pgina web del
vendedor, (por ejemplo, la Nokia UI API
12
).
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 microemu.org
8 proguard.sourceforge.net
9 maven.apache.org]
10 ant.apache.org
11 j2mepolish.org
12 www.developer.nokia.com/Community/Wiki/Nokia_UI_API
Java ME (J2ME)
84
Implementacin
La plataforma Java ME es bastante sencilla: comprende la
Connected Limited Device Confguration (CLDC)
13
y el Mobile
Internet Device Profle (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
Specifcation 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 Technology
15
.
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.
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 aisla-
damente unos de otros y estn muy limitados en su interaccin
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)
85
con el sistema operativo subyacente. Estas capacidades estn
disponibles slamente a traves de JSRs opcionales (por ejemplo,
JSR 75) y APIs especfcas 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 grfcas de
bajo nivel
3. SVG: dibujas la interfaz en SVG y usas las APIs de JSR 226
16

o JSR 287
17
Adems, algunos fabricantes ofrecen extensiones adicionales
de interfaz de usuario. Por ejemplo, la ltima serie de telfonos
de Nokia (Nokia Asha) utiliza tanto los paradigmas de interfaz
Full Touch
18
como Touch and Type
19
, dependiendo del modelo
del dispositivo. Samsung proporciona capacidades pinch zoom
en sus ltimas APIs Java ME
20
.
Tambin existen herramientas que te pueden ayudar con el
desarrollo de interfaces de usuario:
1. J2ME Polish
21
: Esta herramienta separa el diseo en CSS
y emplea HTML para la interfaz. Es compatible con el
framework de alto nivel LCDUI
16 www.jcp.org/en/jsr/detail?id=226
17 jcp.org/en/jsr/detail?id=287
18 www.developer.nokia.com/Resources/Library/Full_Touch/
19 www.developer.nokia.com/Community/Wiki/Nokia_UI_API_1.1b
20 developer.samsung.com/java/technical-docs/Multi-Touch-in-Samsung-Devices
21 j2mepolish.org
Java ME (J2ME)
86
2. LWUIT
22
: Framework de interfaz inspirado en Swing
3. Mewt
23
: Usa XML para defnir 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 grfco debe estar optimizado siempre. Una
herramienta gratuita excelente es PNGGauntlet
24
.
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
Nokia
25
y Samsung
26
ofrecen acceso remoto de pago y a veces
gratuito a algunos dispositivos seleccionados.
22 lwuit.java.net/
23 mewt.sourceforge.net
24 http://pnggauntlet.com pnggauntlet.com
25 http://forum.nokia.com/rda forum.nokia.com/rda
26 http:// developer.samsung.com developer.samsung.com
Java ME (J2ME)
87
Testeado automtico
Hay varios entornos de pruebas unitarias para Java ME,
incluyendo J2MEUnit
27
, MoMEUnit
28
y CLDC Unit
29
; herramientas
avanzadas como JInjector
30
aportan control sobre el cdigo y
validacin de la interfaz de usuario.
Portar
Uno de los puntos fuertes del entorno Java para dispositivos
mviles es que est respaldado por un estndar, por lo que
puede ser implementado por fabricantes competidores. La
desventaja es que el estndar ha de ser interpretado, y este
proceso puede causar diferencias en las implementaciones indi-
viduales. Esto da lugar a todo tipo de bugs y comportamiento
no estndar. En las secciones siguientes se esbozan diferentes
estrategias para portar tus aplicaciones a todos los telfonos y
plataformas Java ME.
En su esencia, Java ME es un conjunto de normas y
especifcaciones 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
27 j2meunit.sourceforge.net
28 momeunit.sourceforge.net
29 snapshot.pyx4me.com/pyx4me-cldcunit
30 www.code.google.com/p/jinjector
Java ME (J2ME)
88
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 consid-
erar 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.
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 fables.
Los buenos entornos para portar te permiten usar cdigo
especfco 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
Software
31
(disponible bajo licencias comerciales y GPL Open
Source). Portar desde C++ a Java ME tambin es posible con la
herramienta de cdigo abierto MoSync SDK
32
.
Para obtener ms informacin acerca del desarrollo multi-
plataforma y las herramientas disponibles, consulta el captulo
"Hacia Multiplataforma".
31 http:// enough.de enough.de
32 http://mosync.com mosync.com
Java ME (J2ME)
89
Firma
El estndar de Java para dispositivos mviles diferencia entre
las aplicaciones que han sido frmadas y las que no. Algunas
funciones de los telfonos estn disponibles slo para las
aplicaciones de confanza.
Las aplicaciones frmadas por el fabricante de un dispositivo
o un oeprador de telefona disfrutan del nivel ms alto de se-
guridad y pueden acceder a todas las APIs de Java disponibles
en el telfono.
Las aplicaciones frmadas por JavaVerifed
33
, Verisign
34
o
Thawte
35
estn en el nivel ms bajo de seguridad, y aquellas no
frmadas estn en el nivel ms bajo.
Qu funcionalidades quedan afectadas y qu ocurre si la
aplicacin no est frmada depende principalmente de su
implementacin; ms an, no todos los telfonos tienen todos
los certifcados raz necesarios. El resultado es un buen lo, as
que considera frmar tu aplicacin slo cuando sea necesario.
En algunos casos una tienda de aplicaciones puede ofrecerse a
frmar por ti, como es el caso de Nokia Store.
Otra opcin es considerar el uso de un proveedor de servicios
de certifcacin y pruebas, dejando la parte compleja para ellos.
Intertek
36
es probablemente el mayor proveedor de este tipo.
Distribucin
Las tiendas de aplicaciones son probablemente la forma ms
efciente de distribuir tus aplicaciones. Algunas de las tiendas
ms efcaces son:
33 javaverifed.com
34 verisign.com
35 thawte.com
36 www.intertek.com/wireless-mobile
Java ME (J2ME)
90

Handmark
37
y Mobile Rated
38
ofrecen tiendas de aplicacio-
nes independientes de fabricantes y operadoras.

GetJar
39
es uno de los distribuidores ms antiguos de
aplicaciones mviles, y no slo Java.

Nokia Store
40
se enfoca a usuarios Nokia en todo el mundo
y ofrece un margen de benefcio para el proveedor del 70%
si la compra es con tarjeta de crdito, y del 60% si es por
operadora.

Las operadoras tambin participan, tales como Orange
41
y
O2
42
.
Se puede encontrar una lista de las tiendas de aplicaciones
disponibles (no slo las que venden aplicaciones J2ME) en el
WIP App Store Catalogue
43
. 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:
37 store.handmark.com
38 mobilerated.com
39 getjar.com
40 publish.ovi.com
41 www.orangepartner.com/distribute
42 mobileapps.o2online.de
43 www.wipconnector.com/appstores/
Java ME (J2ME)
91

Tutorialess de sitios tales como J2ME Salsa
44
.

Archivos de recursos como billday.com/javame

Proyectos interesantes publicados en el blog opensource.
ngphone.com en la pgina Mobile and Embedded de java.
net
45
, por ejemplo el proyecto para llamado Marge
46
.
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.
44 j2mesalsa.com
45 community.java.net/mobileandembedded
46 marge.java.net
Tizen
93
Tizen
El Ecosistema
Tizen es un sistema operativo de csido abierto basado en
Linux y diseado para ser ejecutado en smartphones, netbooks,
sistemas de infoteniemiento en vehculos (IVI) y otros disposi-
tivos inteligentes. Se le puede considerar como el sucesor del
Meego de Nokie e Intel, y del LiMo de Samsung; sistemas opera-
tivos 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 2014. 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 lanzamiento de lprimer smartphone Tizen est previsto
para el 2014 y, en el momento en que se escriben estas lneas,
Samsung ya tiene algunas cmaras fotogrfcas en el mercado
utilizando Tizen.
Desarrollo
El principal objetivo de Tizen es ser un sistema operativo
estndar para aplicaciones escritas en HTML5. A pesar de ello,
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
P
O
R




M
a
r
c
o

B

t
t
n
e
r

&

P
a
t
r
i
c
k

M
o
r
t
a
r
a
Tizen
94
una gran variedad de frameworks y libreras populares, como
JQuery, que suponen un buen punto de inicio para desarrol-
lar tu primera aplicacin Tizen. Si has escrito aplicaciones
nativas bada con anterioridad, podrs migrarlas fcilmente; se
requieren muy pocos cambios en una aplicacin bada para que
pueda ser ejecutada en Tizen, e incluso hay disponible una
herramienta de migracin para hacer ste proceso ms fcil.
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. Como en
el caso de las aplicaciones nativas, se requieren pocos cambios
en el cdigo.
El SDK ofcial de Tizen contiene un IDE basado en Eclipse
que puede ser utilizado tanto para aplicaciones web como
nativas. Los desarrolladores veteranos de bada probablemente
reconocern las bases de ste SDK: el SDK de Samsung bada.
Tambin tienes un editor de cdigo, diseador de interfaces,
emulador... est todo ah, listo para usar. Para las aplicaciones
web tambin puedes usar el XDK de Intel, si lo preferes.
Testeando tu aplicacin
Por supuesto, las mejoras pruebas son aquellas que pueden
ser realizadas 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. Desafortunadamente, es muy 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
Tizen
95
masas. El simulador ofrece una aproximacin sencilla al testeo
de aplicaciones web, pero es muy 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.
Para aquellos casos en los que un dispositivo real sea
necesario, puedes usar el Samsung Remote Test Lab
1
. 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 seleccionndolos en el explorador de archivos del
dispositivo. El punto principal de distribucin de aplicaciones
ser la TizenStore
2
.En contraste respecto a la Apple Appstore,
Google Play Store y Microsoft Windows Phone Market, no
necesitars realizar ningn pago para convertirte en desar-
rollador registrado en la Seller Offce
3
. Todas las aplicaciones
propuestas para venta sern revisadas de acuerdo a las
directrices de la Tizen Store. Normalmente, la certifcacin
lleva entre 2 y 3 das, dependiendo de la complejidad de la
aplicacin. Una vez que est publicada, obtendrs el 80% de
los benefcios generados.
1 developer.samsung.com/remotetestlab
2 www.tizenstore.com
3 seller.tizenstore.com
Tizen
96
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.
Windows Phone y Windows RT
98
Windows Phone y
Windows RT
Windows Phone y Windows RT avanzan hacia la convergencia y,
aunque an no lo han conseguido, es slo cuestin de tiempo
ya que ya tienen en comn un gran nmero de elementos, por
ejemplo el paradigma de diseo, las APIs y algunas her-
ramientas. Aunque desarrollar para ambas plataformas no es
tan directo como lo es desarrollar para diferentes factores de
forma en iOS o Android, es bastante fcil compartir cdigo y
elementos de las interfaces. As que, a partir de esta edicin
trataremos Windows Phone y Windows 8/RT en un captulo
comn.
El Ecosistema
En la ltima edicin de sta gua recibimos algunas quejas
acerca de Windows Phone:

la ausencia de traccin de mercado relevante.

que Microsoft no implement lo que haba prometido:
dar la capacidad de instalar nuevas versiones del sistema
operativo que no han sido aprobadas por las operadoras de
telefona a desarrolladores y usuarios avanzados.
Nos ha alegrado haber visto avances en ambos casos: Micro-
soft ha lanzado un programa de acceso temprano
1
, y Windows
Phone ha mejorado de manera signifcativa su cuota de mer-
cado, superando el 10% en los cinco mayores pases europeos
1 neowin.net/news/developers-fnally-get-early-access-to-windows-phone-
updates
P
O
R




R
o
b
e
r
t

V
i
r
k
u
s
Windows Phone y Windows RT
99
(Reino Unido, Alemania, Francia, Italia y Espaa) segn el
Kantar World Panel
2
.|En Italia y Amrica Latina, Windows Phone
supera las ventas de iPhone de manera signifcativa
3
. La nica
contrariedad es que dicho crecimiento proviene principalmente
de telfonos de gama baja, por ejemplo el Nokia Lumia 520.
As que parece que las crticas al respecto llegaron a buen
puerto, como debe ser! Por tanto, anotemos ahora algunas de
las defciencias en la presente versin de ste sistema opera-
tivo: primero, deben mejorarse las APIs y superar en funcionali-
dades las de la competencia; en segundo lugar, Windows Phone
debe mejorar su soporte a aplicaciones en segundo plano; por
ltimo, debera ofrecer mejores opciones de personalizacin
para los fabricantes, de manera que, por ejemplo, las empresas
Chinas pudieran adaptar mejor su oferta al mercado local.
Los fabricantes que comercializan actualmente Windows
Phone son Nokia, HTC, ZTE y Huawei, aunque se rumorea
que HTC dejar de dar soporte a Windows Phone. La gama de
dispositivos Nokia Lumia posee el 80% de este mercado
4
, y
Microsoft est ejecutando su visin de 'servicios y dispositivos',
no slo lanzando sus tablets Surface y Surface Pro, sino muy
especialmente gracias a su adquisicin de Nokia
5
.
La Windows Phone Store contiene ms de 200,000 apli-
caciones
6
, y el usuario promedio de Windows Phone instala
actualmente 51 aplicaciones
7
.
Respecto a Windows 8 y Windows RT, Microsoft lanz su
2 kantarworldpanel.com/global/News/news-articles/Apple-iPhone-5S-outsells-
5C-three-to-one-in-Great-Britain
3 http://www.microsoft.com/en-us/news/press/2013/aug13/08-21wplatampr.
aspx microsoft.com/en-us/news/press/2013/aug13/08-21wplatampr.aspx
4 blog.gsmarena.com/over-80-of-windows-phone-devices-made-by-nokia
5 microsoft.com/nokia
6 neowin.net/news/microsoft-windows-phone-store-now-has-over-200000-apps
7 phonearena.com/news/Are-the-apps-in-the-Windows-Phone-Marketplace-of-
a-higher-quality-than-the-ones-in-Google-Play-Store_id32045
Windows Phone y Windows RT
100
segunda iteracin de sus tablets Surface en el cuarto trimestre
del 2013. Las tablets RT, tales como la Surface RT original, no
tuvieron mucho xito pero la Surface 2 parece haber tenido
ms xito. Muchos comercializadores han rechazado lanzar
nuevo hardware compatible con Windows RT, con la notable
excepcin de Nokia, que sac el tablet Nokia Lumia 2520 antes
de que fuera adquirida por Microsoft. Windows 8.1 recibi
tambin crticas ms favorables de los usuarios, y la cuota de
mercado de Windows 8 y Windows 8.1 supera ahora la cuota
total del conjunto de todas las versiones de Mac OS X segn Net
Applications
8
.
Una de las mayores crticas a Windows 8 es su personalidad
doble de escritorio clsico y el mundo de la 'Windows Store
Apps' de Metro.
Lenguages y Herramientas
El desarrollo para Windows Phone se realiza en C/C++, C# o
VB.NET utilizando Microsoft Visual Studio IDE o Expression
Blend
9
. Las aplicaciones se crean utilizando Silverlight,
principalmente en aquellas basadas en eventos, y DirectX, para
juegos basados en bucles de juego, aunque ambas tecnologas
pueden ser utilizadas en una misma aplicacin. Adems, puedes
crear aplicaciones HTML5 utilizando PhoneGap
10
, 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
Studio
11
.
8 http://netmarketshare.com/operating-system-market-share.aspx
9 dev.windowsphone.com
10 phonegap.com
11 apps.windowsstore.com
101
Se puede desarrollar para Windows RT utilizando los mencio-
nados lenguajes y herramientas, con el aadido de JavaScript y
HTML5 para aplicaciones nativas. Microsoft tambin ha lanzado
la aplicacin Project Siena
12
, que aporta un entorno sencillo
para crear aplicaciones de negocio.
Es importante evaluar qu plataforma elegir a la hora de
construir tu aplicacin.
C/C++ C#/VB.NET JavaScript
WinRT s s s
Windows Phone s s no (slo en
webview)
Silverlight/
XAML
s s no
HTML no (webview
disponible)
no (webview
disponible)
s
DirectX s s (with
SharpDX)
no
Codesharing Aplicaciones
Windows
antiguas, Xbox
profesional,
otras platafor-
mas, etc.
Aplicaciones
.NET Windows
antiguas, indie
Xbox, Windows
Phone, etc.
Websites,
aplicaciones
HTML5, etc.
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 Silverlight
para aplicaciones y DirectX para juegos, tambin puedes crear
juegos en Silverlight y aplicaciones DirectX, dependiendo de
12 microsoft.com/en-us/projectsiena www.microsoft.com/projectsiena/default.
aspx microsoft.com/en-us/projectsiena
Windows Phone y Windows RT
102
tus necesidades, as como incluir Direct3D en tu aplicacin
Silverlight; podras utilizarlo para mostrar un modelo en 3D
en una aplicacin Silverlight, o crear atractivos mens con
Silverlight en un juego creado en DirectX.
Paradigma de Diseo de Metro
La caracterstica ms obvia de Windows Phone 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
13
se ha extendido a la Xbox y tambin a 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 fuen-
tes 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.
Aunque Microsoft abandon el nombre 'Metro' para su
paradigma de diseo debido a problemas legales, los nombres
13 wikipedia.org/wiki/Metro_(design_language)
Windows Phone y Windows RT
103
alternativos como 'Moderm 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 dev.
windowsphone.com/design 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 notifcaciones push.
Compartir cdigo entre Windows RT y Windows Phone
Como Windows Phone 8 and Windows 8 comparten el mismo
kernel, hay muchas APIs presentes en ambos sistemas opera-
tivos, aunque algunas estn presentes pero no completamente
implementadas en Windows Phone. Lee la documentacin de
las APIs para saber ms. Hay algunos paquetes NuGet para
compatibilizar las APIs ms populares, como por ejemplo el
HttpClient
14
, y el paquete BCL
15
incluso te permite usar el patrn
'async and await' de la antigua plataforma Windows Phone 7.
Puedes crear libreras que estn compartidas entre varias
plataformas usando una biblioteca de clases portable (Portable
Class Library). Tales proyectos pueden ser creados en Visual Stu-
dio Professional o versiones superiores, pero con las ediciones
Expression gratuitas no es posible.
Tambin puedes compartir cdigo directamente entre
proyectos en Visual Studio enlazando repositorios de cdigo
entre proyectos.
14 nuget.org/packages/Microsoft.Net.Http
15 blogs.msdn.com/b/bclteam/archive/2012/10/22/using-async-await-without-
net-framework-4-5
Windows Phone y Windows RT
104
Integrarse en la Plataforma
Tanto Windows Phone como Windows RT soportan una profunda
integracin, ms all de una mera lista de aplicaciones.
Ambos sistemas son compatibles con 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 tanto
en Windows Phone como en Windows RT.
En Windows Phone puedes, por ejemplo, crear extensiones
para la cmara, llamadas 'lenses'
16
, extender el music hub
17

o integrar la herramienta de bsqueda
18
. Podrs encontrar
informacin detallada en la documentacin de integracin
19
.
En Windows RT hay contratos
20
que ofrecen funcionalidades
similares: puedes gestionar extensiones de archivo especfcas,
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.
16 msdn.microsoft.com/library/windowsphone/develop/jj206990
17 msdn.microsoft.com/library/windowsphone/develop/ff769558
18 msdn.microsoft.com/library/windowsphone/develop/hh202957
19 msdn.microsoft.com/library/windowsphone/develop/hh202969
20 msdn.microsoft.com/library/windows/apps/hh464906
105
Motores de Juego
Gracias a las capacidades de aplicaciones nativas existen
algunos motores de juego disponibles para Windows Phone 8 y
Windows RT, por ejemplo:

Cocos2d-x
21

Havok
22

Marmalade
23

OGRE
24

Unity 3D
25
Servicios
Hay disponibles notifcaciones push
26
que pueden actualizar los
live tiles de tu aplicacin. Tambin puedes considerar el uso del
espacio gratuito en nube SkyDrive y la integracin con otros
servicios de Windows Live
27
para tu aplicacin. Hay disponibles
tambin muchos servicios de terceros
28
.
Multitarea y Ciclo de Vida de la Aplicacin
Windows Phone tiene una capacidad limitada de multitarea que
suspende las aplicaciones en segundo plano y permite el cam-
bio 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
21 cocos2d-x.org/projects/cocos2d-x/wiki/Windows_Phone_8_Environment_
Setup
22 havok.com/products/havok-windows-ecosystem
23 madewithmarmalade.com/marmaladesdk/features/take-apps-windows-
phone-8
24 ogre3d.org/2012/10/30/ogre-now-supports-windows-phone-8
25 unity3d.com/pages/windows
26 msdn.microsoft.com/library/windowsphone/develop/ff402558
27 msdn.microsoft.com/live
28 dev.windowsphone.com/en-us/featured/partners
Windows Phone y Windows RT
106
en segundo plano en un intervalo (cdigo que se conoce como
agentes en segundo plano o Background Agents). A dichos
agentes 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
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 Phone tiene un ciclo de vida de aplicaciones
bien documentado llamado Tombstoning
29
. Para hacer posible
Tombstoning, el framework de Windows Phone proporciona
lo necesario para realizar operaciones durante las diferentes
etapas del ciclo de vida de la aplicacin (por ejemplo, el
almacenamiento en cach y la restauracin de datos y estados
de interfaz de usuario). Windows Phone 8 ofrece a los desar-
rolladores una nueva funcionalidad para terminar aplicaciones
rpidamente.
Las aplicaciones de Windows Store tienen un ciclo de vida
similar
30
.
Testeo y Analticas
Las pruebas unitarias estn integradas en Visual Studio, slo
tienes que crear un proyecto de prueba unitaria (Unit Test) y
referenciarlo al proyecto que quieres testear.
Para desarrollos basados en comportamiento est disponible
el Windows Phone Test Framework por Expensify
31
.
Hay varias opciones para los desarrolladores que deseen
29 msdn.microsoft.com/library/windowsphone/develop/ff817008
30 msdn.microsoft.com/library/windows/apps/hh464925
31 github.com/Expensify/WindowsPhoneTestFramework/
Windows Phone y Windows RT
107
recopilar datos y anlisis en tiempo de ejecucin. Localytics
32

y Flurry
33
proporcionan herramientas de anlisis y servicios
compatibles con Windows Phone. Los desarrolladores tambin
pueden utilizar Silverlight Analytics Framework
34
para conec-
tarse a una variedad de servicios de seguimiento de terceros,
como Google Analytics. Tambin hay disponibles slidas
herramientas de monitorizado de rendimiento en Visual Studio.
Distribucin
Las aplicaciones para Windows Phone se distribuyen principal-
mente a travs del servicio Microsoft Windows Store. Aunque
el contenido de la aplicacin es revisado y restringido de una
manera similar a la App Store de Apple, Microsoft propor-
ciona directrices ms claras para la solicitud de publicacin,
disponibles en el Dev Center
35
. Aunque las herramientas de
desarrollo se proporcionan de forma gratuita, se requiere una
cuenta de pago para implementar una aplicacin en dispositi-
vos y distribuirla en Windows Store. Actualmente, una cuenta
cuesta $19 (USD) al ao para desarrolladores en solitario y
$99 (USD) al ao para empresas. Esas tarifas no se aplican a
los estudiantes miembros del DreamSpark
36
. Windows Store
tambin ofrece una distribucin de betas por tiempo limitado
y ofrece un hub corporativo para empresas
37
. Puedes utilizar
el Windows Phone Store Test Kit
38
para probar la aplicacin en
local antes de enviarla para su publicacin.
32 localytics.com/docs/sdks-integration-guides/#winphone7
33 furry.com/furry-analytics.html
34 msaf.codeplex.com
35 dev.windowsphone.com
36 www.dreamspark.com
37 msdn.microsoft.com/library/windowsphone/develop/jj206943
38 msdn.microsoft.com/library/windowsphone/develop/hh394032
Windows Phone y Windows RT
108
Los benefcios 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 utilizar tu aplicacin en
una gran variedad de plataformas, por ejemplo un ordenador de
sobremesa o un tablet.
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 especfcamente 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
disponibles
39
.
Para la monetizacin basada en anuncios hay varias
opciones. Microsoft tiene su propio Microsoft Advertising Ad
Control
40
(actualmente disponible en 18 pases), mientras
que Nokia
41
, Smaato
42
, Inneractive
43
, AdDuplex
44
y Google
45

ofrecen soluciones alternativas de publicidad. Para obtener ms
informacin acerca de la monetizacin, consulta el captulo
sobre el tema en esta gua.
39 msdn.microsoft.com/library/windowsphone/develop/ff967558
40 advertising.microsoft.com/mobile-apps
41 www.developer.nokia.com/Distribute/NAX
42 smaato.com
43 inner-active.com
44 adduplex.com
45 developers.google.com/mobile-ads-sdk/
Windows Phone y Windows RT
109
Aprende Ms
Visita dev.windowsphone.com para noticias, herramientas de
desarrollo y foros.
El equipo de desarrollo publica mensajes en su
blog windowsteamblog.com/windows_phone o en su
cuenta de Twitter @wpdev. Para encontrar una gran colec-
cin de recursos para desarrolladores y diseadores, visita
windowsphonegeek.com y reddit.com/r/wpdev.
Actualmente hay varios controles integrados en el sistema
operativo que no estn incluidos en el SDK de Windows Phone,
tales como mens de contexto, selector de fechas, y otros.
Estos controles estn disponibles como parte de la Phone Tool-
kit para Windows Phone, disponible en phone.codeplex.com.
Otros proyectos populares de Windows Phone son coding4fun.
codeplex.com, cimbalino.org y mvvmlight.codeplex.com. 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.
Podrs encontrar muchos tutoriales en video sobre Windows
y Windows Phone en channel9.msdn.com.
Tambin encontrars cdigo de ejem-
plo en code.msdn.microsoft.com/windowsapps,
code.msdn.microsoft.com/wpapps, en varios proyec-
tos 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 desar-
rollo de aplicaciones para Windows RT.
Si ests migrando desde iOS o Android, puedes encontrar
ms ayuda en dev.windowsphone.com/en-us/featured/porting y
msdn.microsoft.com/library/windows/apps/dn436165.
Hacia Multiplataforma
111
Hacia Multiplataforma
Tantas plataformas y tan poco tiempo: Esa frase defne
perfectamente la situacin que tenemos en el mundo mvil.
Hay plataformas ms que sufcientes para elegir: Android,
BlackBerry 10, Firefox OS, iOS, Tizen, Windows 8 y Windows
Phone 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.
P
O
R




R
o
b
e
r
t

V
i
r
k
u
s
Hacia Multiplataforma
112
Sin embargo, estos lenguajes tienden a pertenecer a alguna
de las pocas familias de lenguajes raz. La tabla siguiente
ofrece una descripcin general de stos y de las plataformas
que los soportan:
Lenguaje 1
st
class citizen 2
nd
class citizen
ActionScript BlackBerry 10,
BlackBerry PlayBook
OS (QNX)
ninguno
C, C++ BlackBerry 10,
Brew MP, Sailfsh
OS, Windows RT,
Windows Phone 8
Android (parcial-
mente, utilizando el
NDK), iOS (parcial-
mente)
C# Windows 8, Windows
Phone
ninguno
Java Android, BlackBerry,
dispositivos Java ME
ninguno
JavaScript BlackBerry PlayBook
OS, Firefox OS, Tizen,
Windows 8
BlackBerry
(WebWorks), Nokia
(WRT)
Objective-C iOS ninguno
Los frameworks multiplataforma pueden solventar las bar-
reras de lenguaje de diferentes maneras:

Tecnologas Web

Interpretacin
1 Compatible de forma nativa en la plataforma, ya sea el idioma primario o uno
especfco para la creacin de aplicaciones.
2 Se admite como opcin en la plataforma, se puede utilizar como alternativa
al lenguaje nativo, pero generalmente no proporciona el mismo nivel de
acceso a caractersticas de la plataforma
Hacia Multiplataforma
113

Compilacin Cruzada
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 plata-
forma, como por ejemplo a las capacidades de geolocalizacin.
Para funciones tales como mensajera SMS tambin puedes usar
APIs de red que son independientes del dispositivo
1
.
Versiones de SO
Las plataformas evolucionan y, tarde o temprano, ofrecern
caractersticas especfcas 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 agradable
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 flosofa 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 "autntica-
1 www.developergarden.com/apis/
Hacia Multiplataforma
114
mente 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 fnales directamente (B2C), a
menudo tienes que tener mucho ms en cuenta la experiencia
de usuario especfca 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 desafante de una estrategia multi-
plataforma.
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 identifcacin 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.
Hacia Multiplataforma
115
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 Sailfsh OS, hay ser-
vicios 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 automtica-
mente 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 aproximada-
mente cada dos aos (la Ley de Moore dice que el nmero
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
Hacia Multiplataforma
116
dispositivos va desde lo dolorosamente lento hasta lo super-
rpido.
Servicios Push
Los servicios push son una estupenda manera de aparentar que
tu aplicacin est activa, incluso cuando no est en funcio-
namiento. 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 Air-
ship
2
soportan el envo de datos a travs de varias plataformas.
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
especfcos 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.
2 urbanairship.com/
117
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 pro-
gresar hacia plataformas adicionales una vez que tu aplicacin
se ha defendido en el mundo real.
Las libreras de componentes pueden ayudarte a acelerar
el desarrollo nativo, ejemplos populares se muestran en la
siguiente tabla.
Librera de Componentes Plataformas Objetivo
cocoacontrols.com
iOS
chupamobile.com
Android, iOS
verious.com
Android, iOS, HTML5, Windows
Phone
windowsphonegeek.com/Marketplace
Windows Phone
Comparticin de Recursos
Cuando mantienes varios equipos para diferentes plataformas
puedes ahorrar mucho esfuerzo si compartes algunas estructu-
ras de la aplicacin:
Hacia Multiplataforma
118

Concepto y recursos: Esto se hace habitualmente de forma
automtica: compartir las ideas y los conceptos de la
aplicacin, el fujo de interfaz de usuario, input y output
y los recursos grfcos de la aplicacin (pero debes ser
consciente de la necesidad de dar soporte a las estructuras
especfcas 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 plata-
formas. Alternativamente, puedes utilizar un intrprete o
una mquina virtual y un lenguaje comn en un grupo de
plataformas.

Abstraccin completa: Algunas herramientas multiplata-
forma 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
119
a utilizar una aproximacin de mnimo comn denominador
respecto a las funciones ofertadas para mantener la unifor-
midad entre las implementaciones para varias plataformas.
Generadores de cdigo como Applause
3
llevan el concepto de
reproductor un paso ms all, a menudo son especfcos del
dominio y permiten generar aplicaciones a partir de datos.
Tambin suelen carecer de fexibilidad en comparacin con las
soluciones programables.
Compilacin Cruzada
La compilacin cruzada permite la programacin en un lenguaje
que es transformado en el lenguaje especfco de una platafor-
ma 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.
Hay tres enfoques habituales para la compilacin cruzada:
traduccin directa del cdigo fuente, de forma indirecta medi-
ante 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 aplicacio-
nes reales, incluyendo capacidades offine. Sin embargo, ten en
cuenta que las tecnologas tienen limitaciones cuando se trata
de aspectos como la integracin en plataforma o rendimiento.
3 applause.github.com
Hacia Multiplataforma
120
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
Phone
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 hard-
ware y elementos nativos de interfaz de usuario, por lo que en
nuestra opinin no cuentan como soluciones multiplataforma
reales; estas soluciones, por lo tanto, no aparecen en la tabla
al fnal 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).
Hacia Multiplataforma
121
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
especfcas de plataforma ni los controles de interfaz de usuario
desde dentro de ANSI C. Utilizar C es especialmente adecuado
para algoritmos complejos, como los codifcadores 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 mdgg@enough.de. Un 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 rel-
evantes 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
Hacia Multiplataforma
122
equipo de desarrollo. Research 2 Guidance tambin ha publi-
cado un informe sobre varias herramientas multiplataforma
4
.

Cmo funciona la herramienta multiplataforma? Qu
lenguajes de programacin y APIs puedo usar?

Puedo acceder a funciones especfcas de la plataforma?
En caso afrmativo, cules?

Puedo usar componentes nativos de la interfaz de usuario?
En caso afrmativo, cules?

Puedo usar una versin especfca de la plataforma como
base de mi desarrollo? Cmo es el cdigo fuente tradu-
cido/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
123
Solution License Input Output
Akula
verivo.com
Commercial (Visual) Android,
BlackBerry,
iOS, Windows
Phone
Application
Craft
applicationcraft.com
Commercial HTML, CSS,
JavaScript
Android,
BlackBerry 10,
iOS, Windows
Phone, mobile
sites
Codename One
codenameone.com
Commercial Java Android,
BlackBerry,
iOS, J2ME,
Windows Phone
Corona
coronalabs.com
(Corona Labs)
Commercial JavaScript Android, iOS,
Kindle, Nook,
Windows
Phone,
Windows RT
J2ME Polish
j2mepolish.org
(Enough Software)
Open Source +
Commercial
Java ME,
HTML, CSS
Android,
BlackBerry,
J2ME, PC
Flash Builder
adobe.com/devnet/
devices.html
(Adobe)
Commercial Flash Android,
BlackBerry
Tablet OS, iOS,
PC
Feedhenry
feedhenry.com
Commercial HTML, CSS,
JavaScript
Android,
iOS, HTML5,
Windows Phone
Kony One
kony.com/products/
develop/studio
Commercial HTML, CSS,
JavaScript, RSS
Android, Black-
Berry, iOS,
J2ME, Windows
Phone, PC, Web
Hacia Multiplataforma
124
Solution License Input Output
LiveCode
runrev.com
(RunRev)
Commercial English-like Android, iOS,
PC and Web
M2Active
service2media.com
(Service2Media)
Commercial Drag and Drop
+ Lua
Android,
BlackBerry,
iOS, Windows
Phone
MobiForms
mobiforms.com
(MobiForms)
Commercial Drag and Drop
+ MobiScript
Android, iOS,
PC, Windows
Mobile
MoSync
mosync.com
Open Source +
Commercial
C/C++, HTML5/
JS
Android,
BlackBerry,
iOS, J2ME,
Windows Phone
NeoMAD
neomades.com
Commercial Java Android,
BlackBerry,
iOS, J2ME,
Windows Phone
Orubase
orubase.com
Commercial ASP .NET MCV Android, iOS,
Windows
Phone,
Windows RT
PhoneGap/
Cordova
phonegap.com
(Adobe/Apache)
Open Source HTML, CSS ,
JavaScript
Android,
BlackBerry 10,
iOS, Windows
Phone
Qt
qt.digia.com
(Digia)
Open Source +
Commercial
C++ Android,
BlackBerry 10,
iOS, Sailfsh
OS, Windows
RT
Hacia Multiplataforma
125
Solution License Input Output
Rhodes
motorolasolutions.
com/US-EN/
RhoMobile+Suite/
Rhodes (Motorola)
Open Source +
Commercial
Ruby, HTML,
CSS, JavaScript
Android,
BlackBerry,
iOS, Windows
Phone
Titanium
appcelerator.com
(Appcelerator)
Open Source JavaScript Android, iOS,
Tizen, Mobile
Web
trigger.io
trigger.io
(Triggger Corp)
Commercial HTML5,
JavaScript
Android, iOS,
Windows Phone
webinos
webinos.org
Open Source JavaScript Android,
BlackBerry,
iOS, PC, TV
webMethods
Mobile Designer
(formerly Me-
tismo Bedrock)
metismo.com
(Software AG)
Commercial Java ME Android,
BlackBerry,
brew, Consoles,
iOS, PC, Win-
dows Phone,
Windows
Mobile
Xamarin
xamarin.com
Commercial C# iOS, Android,
Windows
Phone, PC
XDK
xdk.intel.com
(Intel)
Free to use HTML, CSS,
JavaScript
Android, iOS,
Windows
Phone,
Windows RT
XML VM
xmlvm.org
Open Source +
Commercial
Java, .NET,
Ruby
C++, Java, Ja-
vaScript, .NET,
Objective-C,
Python
Hacia Multiplataforma
126
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.
Solution License Input Output
Cocos 2D
cocos2d-x.org
Open Source C++, HTML5,
JavaScript
Android,
BlackBerry, iOS,
Windows 8,
Windows Phone
Corona
coronalabs.com
(Corona Labs)
Commercial Lua Android, iOS,
Kindle, nook,
Windows Phone,
Windows RT
EDGELIB
edgelib.com
(elements
interactive)
Commercial C++ Android, iOS, PC
Esenthel
esenthel.com
(elements
interactive)
Commercial C++ Android, iOS, PC
GameSalad
gamesalad.com
Commercial Drag and drop Android, iOS,
Tizen, Windows
Phone, PC, web
Gideros Mobile
giderosmobile.com
Commercial Lua Android, iOS
id Tech 5
idsoftware.com (id)
Commercial C++ Consoles, iOS, PC
Irrlicht
irrlicht.sourceforge.
net
Open Source C++ Android & iOS
con OpenGL-ES
versin, PC
Hacia Multiplataforma
127
Solution License Input Output
IwGame
drmop.com/index.
php/iwgame-engine
Open Source C++ Android, Black-
Berry Playbook
OS, iOS, PC
Marmalade
madewithmarmalade.
com (Ideaworks3D)
Commercial C++, HTML5,
JavaScript
Android,
BlackBerry 10,
iOS, LG Smart TV,
Windows Phone,
Windows RT
Moai
getmoai.com
(Zipline Games)
Commercial Lua Android, iOS, PC,
Web
MonoGame
monogame.
codeplex.com
Open Source C#, XNA Android, iOS, PC,
Windows Phone,
Windows RT
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
Commercial C++ Android, Black-
Berry 10, iOS, PC,
Consoles
SIO2
sio2interactive.com
(sio2interactive)
Commercial C, Lua Android, iOS, PC
Unigine
unigine.com
(Unigine corp.)
Commercial C++, Unigine-
Script
Android, iOS, PC,
PS3
Unity3D
unity3d.com
(Unity Technologies)
Commercial C#, JavaS-
cript, Boo
Android, Black-
Berry 10, iOS,
Windows Phone,
Windows RT, PC,
consoles, web
Sitios Mviles y Tecnologas Web
129
Sitios Mviles y Tecnologas
Web
El desarrollo continua 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 trfco global de Internet mvil est
creciendo rpidamente y ya ha {superado el 20% del total |
gs.statcounter.com. 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 EE.UU. dedican un 16% de su tiempo a
navegar desde dispositivos mviles, en China es un 34% y en
India un 79%. Muchas regiones donde el trfco 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. India es un buen ejemplo: slo el 15% de los indios
poseen un smartphone, lo que equivale a la espectacular suma
de 180 millones de usuarios, mientras que un 68% posee un
telfono de gama media, de los cuales un 9,5% pueden navegar
por Internet
1
. Esto quiere decir que con un site bsico para
mviles podras alcanzar a 116 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
intensiva en el desarrollo de aplicaciones web e hbridas,
soluciones multiplataforma y, recientemente, aplicaciones
nativas (Firefox OS). Para ms informacin sobre el desarrollo
1 discovermobilelife.com
P
O
R




D
a
n
i
e
l

K
r
a
n
z
Sitios Mviles y Tecnologas Web
130
multiplataforma y en nuevo sistema operativo Firefox OS
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 signifca, 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 refere 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 defciencias. Las tecnologas web
luchan por igualar el nivel de integracin en plataforma y el
acceso directo a funciones de hardware que ofrece el desar-
rollo de aplicaciones nativas. An ms, el rendimiento de las
tecnologas web es altamente dependiente de la conectividad,
grandes sites como Facebook y LinkedIn tienen difcultades
para bregar con las limitaciones de memoria, y hay un def-
ciencia de herramientas de desarrollo en comparacin a las
disponibles para desarrollo de aplicaciones nativas.
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 y Tecnologas Web
131
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 fnal.
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.
Desde la perspectiva de la experiencia de usuario, Google
ofrece las 10 directrices ms importantes para que pequeas y
medianas empresas consigan conversiones
2
:

Be thumb friendly - disea tu sitio de manera que incluso
unas manos grandes puedan interactuar con l

Design for visibility - asegrate de que tu contenido pu-
ede ser ledo si el usuario extiende su brazo completamente

Simplify navigation - navegacin, jerarqua y scrolling
vertical claros facilitan el acceso a la informacin
2 www.dudamobile.com/webinar/Google_DudaMobile_Webinar.pdf
Sitios Mviles y Tecnologas Web
132

Make it accessible - idealmente, tu sitio mvil debera
funcionar en cualquier dispositivo y en ambas orientacio-
nes, vertical y horizontal

Make it easy to convert - destaca la informacin que te
ayudar a conseguir conversiones

Make it local - incluye funcionalidades que ayuden a la
gente a encontrarte y contactarte

Use mobile site redirects - da a los usuarios la opor-
tunidad de utilizar el site desktop original, pero tambin
facilita volver al site mvil

Keep it quick - 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 superfcial

Make it seamless - ofrece el mayor nmero de funcionali-
dades de la versin completa como sea posible

Learn, listen and iterate - los buenos sitios mviles
estn centrados en el usuario; es decir, han sido creados
contando con el feedback de la audiencia
Google ya ha implementado cambios en su modelo de
bsqueda mvil y ha anunciado que penalizar a los sitios que
no sigan stas recomendaciones. Echa un vistazo al site de
desarrolladores de Google
3
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.
3 developers.google.com/webmasters/smartphone-sites
Sitios Mviles y Tecnologas Web
133
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 HTML5
4
. 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 de
hardware y la gestin de derechos digitales se implementan de
manera inconsistente. Eso hace que sea difcil para los desarrol-
ladores escribir software que funcione en muchas plataformas
diferentes y llegue a un pblico amplio.
Recientemente, LinkedIn cambi 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 fguring out the basics.'
5
.
Para ms informacin acerca de la compatibilidad con
4 gs.statcounter.com/
5 venturebeat.com/2013/04/17/linkedin-mobile-web-breakup
Sitios Mviles y Tecnologas Web
134
navegadores, visita el site HTML5Test online
6
. 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 lanzado ringmark
7
,
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. ABI Research
estima que los dispositivos mviles compatibles con HTML5
existentes en el mundo sern 1.400 millones a fnales del
2013.
8
. Los sistemas operativos incrementarn gradualmente
el soporte a HTML5 y los navegadores web incrementarn la
velocidad de su adopcin. Las plataformas de cdigo abierto,
tales como Firefox OS, Sailfsh y Ubuntu deberan favorecer di-
cha adopcin. Adems, el Worldwide Web Consortium (W3C) ha
declarado fnalmente a HTML5 como completo en funcionalidad
y prev que HTML5 sea un estndar ofcial web para el 2014
9
.
El informe Developer Economics 2014
10
ya identifca HTML5
como la tercera plataforma ms popular (tras iOS y Android,
por supuesto), con un 52% de capacidad de permanencia en la
mente del consumidor.
6 html5test.com/results/mobile.html
7 rng.io/
8 www.abiresearch.com/press/14-billion-html5-capable-mobile-devices-in-
2013-bu
9 www.w3.org/
10 DeveloperEconomics.com
Sitios Mviles y Tecnologas Web
135
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 combi-
nacin 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.
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 fexible, imgenes fexibles y CSS
media queries para comportarse adaptativamente a una serie de
resoluciones de pantalla o tipos de dispositivos.
Sitios Mviles y Tecnologas Web
136
En solitario, sto slo puede proporcionar una experiencia
sensible a dispositivo en un rango limitado de ellos y no puede
adaptarse a contenido sofsticado. 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 signifcativo en
trminos de rendimiento en los dispositivos mviles.

Es una aproximacin general ms que una optimizacin real
a un entorno mvil.
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
Sitios Mviles y Tecnologas Web
137
un nico documento HTML se enva a todos los dispositivos. Un
entorno muy conocido que hace uso de la mejora progresiva es
jQuery Mobile
11
.
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.
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 capa-
cidades 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 fables. Algunas populares
11 jquerymobile.com
138
bases de datos de dispositivos son WURFL
12
y DeviceAtlas
13
. 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 detec-
cin (un simple User-Agent no es sufciente).
Adaptacin Hbrida
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.
Las soluciones hbridas de adaptacin estn disponibles
comercialmente de compaas como Sevenval
14
o Netbiscuits
15
,
12 wurf.sourceforge.net/
13 deviceatlas.com/
14 www.sevenval.com
15 www.netbiscuits.com
Sitios Mviles y Tecnologas Web
139
o como soluciones en la nube respaldadas por la comunidad,
por ejemplo FITML
16
.
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 especifcar 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. 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
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 elimina-
dos. El cdigo se acorta, pero se comporta de la misma manera.
16 www.ftml.com
Sitios Mviles y Tecnologas Web
140
Todo esto puede resultar en un menor nmero de llamadas y,
fnalmente, 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, aadir JavaScript pipes y
cache de aplicaciones. Benefcios clave son que los scripts se
transmiten en una sola llamada por pgina, el trfco HTTP se
minimiza y los scripts bsicos se almacenan en 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
Slideshare
17
.
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 online gs.statcounter.
com/#mobile_browser-ww-monthly-201207-201306. El
conjunto de dispositivos se puede refnar mediante el anlisis
de datos de los registros web existentes, y otras herramientas.
17 www.slideshare.net/sevenval/mobile-web-performance-dwx13
141
Adems, las pruebas en varios factores de forma ayuda a
descubrir problemas de diseo y formato.
En cuanto a las pruebas automatizadas, WebDriver
18
es el
entorno predominante. Existen dos enfoques complementarios:
1. Testeo automtico utilizando controles WebView en Android
e iOS.
2. Falseo del User-Agent (spoofng) utilizando Google
Chrome o Mozilla Firefox confgurados para emular a varios
navegadores web mvil.
Ambas aproximaciones tienen pros y contras:

WebViews incrustadas se ejecutan en la plataforma de
destino. Es probable encontrar en ellas muchos errores
de comportamiento. Sin embargo, la confguracin 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.
18 seleniumhq.org/projects/webdriver/
Sitios Mviles y Tecnologas Web
142
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

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 defne
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
Accesibilidad
144
Accesibilidad
Alrededor del 20% de la poblacin mundial tiene algn tipo
de discapacidad. La accesibilidad tiene que ver con crear una
espectacular experiencia de usuario para todos tus usuarios y
conseguir que tu aplicacin sea utilizada por tantas personas
como sea posible.
Algunas de las razones por las que querras hacer tu
aplicacin accesible son, entre otras:

Implementar la accesibilidad a menudo mejora la usabi-
lidad global. Por ejemplo, incluir el modo lectura en tu
aplicacin puede ayudar tanto a personas ciegas como
permitir su uso en automviles.

Tu aplicacin podr acceder a sectores del mercado
fnanciados por instituciones pblicas, tales como edu-
cacin, donde la legislacin puede obligar al uso de una
solucin accesible, como es el caso de la seccin 508 de la
Rehabilitation Act en los Estados Unidos.

Las plataformas mviles de Apple, Google y Microsoft
aprovechan sus APIs de accesibilidad para la automa-
tizacin de las pruebas de interfaces de usuario, as que
hacer tu aplicacin accesible puede facilitar las pruebas
automatizadas sobre tu aplicacin.
Muchos de tus usuarios potenciales pueden tener una
discapacidad que hace que sea ms difcil para ellos utilizar
la tecnologa mvil. Estas discapacidades incluyen, pero no
se limitan a, diversos niveles de deterioro visual o auditivo,
discapacidades cognitivas, problemas de destreza, tecnofobia
y similares. Muchos de estos usuarios confan en aplicaciones
de terceros para asistirles en el uso de sus dispositivos, a
P
O
R




G
a
r
y

R
e
a
d
f
e
r
n
-
G
r
a
y

&

J
u
l
i
a
n

H
a
r
t
y
Accesibilidad
145
veces llamado Tecnologa Asistiva, e incluye aplicaciones tales
como lectura de pantalla y aplicaciones de lupa. iOS incluye
VoiceOver
1
, que es la favorita en trminos de proporcionar
una interfaz accesible en telfonos mviles. Android tiene una
aproximacin en formato plugin a este tema, siendo el ms
popular TalkBack. Muchas otras plataformas mviles incluyen
funcin de lupa y algunas otras que hacen las interfaces de
usuario ms accesibles.
Para estos usuarios, la experiencia global est condicionada
por cmo de compatible es la aplicacin con las tecnologas
asistivas.

Las APIs de accesibilidad buscan textos en atributos
especfcos de elementos estndar de la interfaz de usuario.
Lectores de pantalla tales como VoiceOver y TalkBack transfor-
man el texto en audio, el cual es escuchado por el usuario. Los
programas de lectura de pantalla tambin determinan el tipo
1 www.apple.com/accessibility/iphone/vision.html
App
Assistive
Technologies
+
+
User Settings
=
UI
UI: la suma de varios factores
Accesibilidad
146
de control y atributos relacionados para proveer al usuario con
ms informacin contextual, especialmente si no hay texto
disponible.
Los gestos pueden verse afectados cuando los lectores de
pantalla estn activados. Muchos de ellos, incluidos VoiceOver y
Explore-By-Touch de Android, permiten al usuario la exploracin
de la pantalla para descubrir qu elemento se est tocando
antes de decidir si interactuar con l. Los cambios pueden
afectar de manera adversa cmo los usuarios interactan con tu
aplicacin. Probar tu aplicacin con estas herramientas puede
ayudarte a detectar problemas fcilmente, antes de que afecten
a los usuarios fnales. Tambin, debers ser capaz de redisear
la aplicacin y elegir gestos adecuados que funcionen bien con
y sin lectores de pantalla.
Para hacer que tu software sea accesible para los usuarios
con discapacidad, debes seguir algunas pautas generales. Si te
atienes a ellas, tambin le dars a tu aplicacin mayores posibi-
lidades de interoperar con aquella tecnologa asistiva que el
usuario pueda estar ejecutando en conjuncin con tu software:

Descubre las capacidades y APIs de accesibilidad que tu
plataforma ofrece y sigue las prcticas recomendadas para
aprovechar dichas APIs, si existieran.

Usa elementos de interfaz estndares en vez de los
personalizados siempre que sea posible. De esta manera te
aseguras de que si la plataforma tiene una infraestructura
de accesibilidad, o la adquiere en el futuro, tu aplicacin
tendr muchas probabilidades de ser renderizada de manera
accesible para tus usuarios.

Sigue las directrices para interfaces estndares de la
plataforma. Esto refuerza la consistencia y puede a implicar
un diseo ms accesible.

Etiqueta todas las imgenes con una descripcin corta
147
de su contenido, por ejemplo Play para un botn de
reproduccin.

Evita utilizar colores como nico mtodo de diferenciar
una accin. Por ejemplo, un usuario ciego al color no ser
capaz de identifcar errores si se le solicita corregir los
campos de un formulario que estn marcados en rojo.

Asegrate de tener un buen contraste de tonos de color en
toda la aplicacin.

Usa la API de accesibilidad en tu plataforma, si la hay. Esto
te permitir hacer interfaces de usuario personalizadas ms
accesibles y signifcar menos carga de trabajo para t.

Da soporte a la navegacin programtica de tu interfaz de
usuario. Esto no slo permitir que tus aplicaciones sean
utilizadas con un teclado externo, sino que tambin mejo-
rar la accesibilidad de tu aplicacin en plataformas tales
como Android, donde la navegacin puede ser realizada por
un trackball o un d-pad virtual.

Prueba tu aplicacin en el dispositivo de destino con
tecnologa de asistencia, como por ejemplo VoiceOver en
el iPhone.
Puedes encontrar una lista de directrices ms completa
online.La BBC tambin ha publicado una gua detallada para
desarrollar aplicaciones mviles accesibles
2
Recientemente, Apple y Google han aumentado la im-
portancia de su apoyo a este rea mediante una interfaz de
accesibilidad para mejorar sus entornos de automatizacin de
pruebas de interfaz grfca. Esto proporciona un incentivo para
que los desarrolladores consideren el diseo de sus aplicaciones
de manera ms accesible, lo que es muy positivo.
Mirando las diferentes plataformas mviles con ms deten-
imiento, se hace evidente que diferen ampliamente en cuanto
a sus caractersticas y APIs de accesibilidad.
2 bbc.co.uk/guidelines/futuremedia/accessibility/mobile_access.shtml
Accesibilidad
148
Controles y Elementos Personalizados
Si ests utilizando elementos de interfaz de usuario personal-
izados en tu aplicacin, aquellas plataformas que tienen una
API de accesibilidad activada te permitirn hacer tus controles
personalizados accesibles. Puedes hacer esto exponiendo
los controles a la supervisin de la tecnologa asistiva de un
dispositivos de manera que puedas consultar las propiedades
del control y renderizar la interfaz de manera accesible.
Tienes ms informacin acerca de ste proceso para Android
en las presentaciones del Google IO 2012 presenttions
3
Si eres un miembro del Apple Developer Program, echa un
vistazo a las presentaciones en vdeo sobre accesibilidad de las
WWDC 2012 y 2013 disponibles en el iOS Developer Center
4
.
Aplicaciones Android Accesibles
La ltima distribucin de Android, la versin 4, trae una
serie de mejoras de accesibilidad. Estas incluyen el foco de
accesibilidad, soporte Braille y otros. La documentacin de
desarrollo tambin se ha mejorado. Las consiguientes versiones
menores, incluyendo la 4.3, continuan mejorando el soporte a
accesibilidad.
stas incluyen nuevas capacidades y cambios de comporta-
miento para sericios Android
5
.
Para maximizar el alcance de tu aplicacin, incluyendo a
aquellos usuarios de versiones previas de Android:

Usa controles de estndar de interfaz de usuario cuando sea
prctico hacerlo.
3 youtube.com/watch?v=q3HliaMjL38 and youtube.com/watch?v=ld7kZRpMGb8
4 developer.apple.com/wwdc/videos
5 developer.android.com/about/versions/android-4.3.html#A11y
Accesibilidad
149

Sopesa utilizar la Support Library
6
, que ofrece maneras de
mejorar la accesibilidad de vistas personalizadas.

Asegrate de que los usuarios puedan navegar por tu
aplicacin con un trackball o un D-pad, lo que dar a tu
aplicacin mayor probabilidad de ser renderizada de manera
accesibles por herramientas tipo TrackBack, as como otras
aplicaciones de tecnologa asistiva.
Para obtener detalles sobre cmo utilizar la API de accesibil-
idad de Android, y los datos de las mejores prcticas en materia
de accesibilidad de la plataforma, consulta el documento de
Google titulado Creando Aplicaciones Accesibles
7
.
Tambin encontrars ms ejemplos en el rea de aprendizaje
de la documentacin para desarrolladores, en una seccin
titulada Implementado la Accesibilidad
8
. Testear la accesibili-
dad tambin est contemplado online en
9
.
Para obtener ms informacin acerca de accesibilidad An-
droid, incluyendo cmo utilizar la API de texto a voz, consulta
el proyecto Eyes-Free
10
.
Aplicaciones BlackBerry Accesibles
Si tu objetivo es desarrollar para BB OS 7.1, descubrirs
detallada informacin sobre el uso de su API de accesibilidad,
y muchos consejos sobre el diseo de interfaces de usuario
accesibles en su sitio web para desarrolladores
11
.
En mayo del 2012, BlackBerry lanz el BlackBerry Screen
6 developer.android.com/tools/support-library/index.html
7 developer.android.com/guide/topics/ui/accessibility/apps.html
8 developer.android.com/training/accessibility/index.html
9 developer.android.com/tools/testing/testing_accessibility.html
10 code.google.com/p/eyes-free
11 developer.blackberry.com/java/documentation/intro_
accessibility_1984611_11.html
Accesibilidad
150
Reader
12
para los ltimos modelos de BlackBerry Curve. Est
disponible gratuitamente y puede que quieras utilizarla para
probar la accesibilidad de tus aplicaciones.
BlackBerry 10 ofrece varias funciones de accesibilidad para
permitir a los usuarios ajustar su dispositivo a sus necesidades,
entre las que se encuentran Magnify Mode, que amplifca los
gestos de control y la navegacin por pantalla, as como la
capacidad de variar el tamao de las fuentes. Intenta utilizar tu
aplicacin con esta herramienta y vara los tamaos de fuente
de muy pequeos a grandes para comprobar cmo de bien se
ve tu aplicacin y cmo de fcil es utilizarla. BlackBerry 10.2
ahora incluye un lector de pantalla. Puedes encontrar documen-
tacin sobre cmo crear aplicaciones BlackBerry 10 accesibles
en Accessibility features and best practices - BlackBerry
Native
13
.
Aplicaciones iOS Accesibles
iOS tiene un buen soporte en accesibilidad. Por ejemplo, los
dispositivos iOS incluyen:

VoiceOver es un lector de pantalla que menciona los
objetos y el texto en pantalla, permitiendo a tu aplicacin
ser utilizada por aquellos que no pueden ver la pantalla
con claridad.

Zoom ampla los contenidos en pantalla.

Blanco sobre Negro invierte los colores, lo que ayuda a
muchas personas que necesitan el contraste del blanco
y negro pero que encuentran el fondo blanco demasiado
brillante.
12 blackberry.com/screenreader
13 developer.blackberry.com/native/documentation/cascades/best_practices/
accessibility/accessibility_features_best_practices.html
Accesibilidad
151

Subtitulado para personas con problemas auditivos.

Alertas auditivas, visuales y de vibracin permiten a los
usuarios elegir las que mejor se adaptan a sus necesidades.

Control por voz y Siri permite a los usuarios realizar
llamadas de telfono y operar varias otras capacidades de
su dispositivo utilizando comandos de voz.
iOS ofrece mltiples opciones de accesibilidad confgurables
por el usuario, incluyendo fuentes dinmicas y APIs para acceso
guiado
Si ests trabajando en iOS, asegrate de seguir las directri-
ces de Apple respecto a accesibilidad
14
. Estas directrices detal-
lan la API y proporcionan una excelente fuente de consejos y
sugerencias para maximizar la experiencia del usuario con tus
aplicaciones.
Aplicaciones Windows Phone y Windows
8 Accesibles
Existen dos caminos de desarrollo para escribir aplicaciones
accesibles en la plataforma Windows Phone/Windows 8. Son
XAML y HTML5/JavaScript.
Si tu aplicacin est escrita en C#, C++ o Visual Basic, en-
contrars informacin completa sobre cmo hacer tu aplicacin
accesible en el documento Accessibility in Metro style apps
using C++, C#, or Visual Basic
15
.
Si has optado por utilizar HTML5 y JavaScript, entonces
tendrs que consultar el documento Accessibility in Metro style
apps using JavaScript
16
.
14 developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/
iPhoneAccessibility
15 msdn.microsoft.com/en-us/library/windows/apps/xaml/hh452680.aspx
16 msdn.microsoft.com/en-us/library/windows/apps/hh452702.aspx
Accesibilidad
152
Una vez que hayas probado la accesibilidad de tu apli-
cacin
17
, Microsoft nicamente te permitir declarar tu apli-
cacin como accesible en la tienda Windows
18
, que le permitir
ser descubierta por los que que estn fltrado por accesibilidad
en sus bsquedas.
Windows Phone 8 incluye varias funcionalidades encargadas
de facilitar el uso de las aplicaciones, entre otras: incrementar
el contraste, lupa en pantalla y tamao de texto. Se aplican
en diversos niveles a las aplicaciones que podemos desarrollar,
as que vale la pena probar tu aplicacin para asegurarte de
que son tan usables como prcticas con stas herramientas.
Windows Phone 8.1 tambin ofrece un lector de pantallas
independiente y un paquete limitado de funcionalidades, pero
no soporta aplicaciones de terceros.
Aplicaciones Web Mvil Accesibles
Mucho se ha escrito sobre el tema de la accesibilidad web; sin
embargo, en el momento de escribir esta gua, no existe una
norma que incorpore las mejores prcticas de desarrollo para
una web mvil accesible.
Si tu aplicacin est destinada a simular el look-and-feel
de una aplicacin nativa, entonces debes seguir las pautas ya
mencionadas en este captulo.
Si eres un desarrollador de contenidos web, entonces debes
echar un vistazo a la Web Content Accessibility Guidelines
(WCAG) Overview
19
.
Como el soporte a HTML5 se est incrementando en las
plataformas mviles, te ser til leer el artculo Mobile Web
17 msdn.microsoft.com/en-us/library/windows/apps/xaml/hh994937.aspx
18 msdn.microsoft.com/en-us/library/windows/apps/xaml/jj161016.aspx
19 w3.org/WAI/intro/wcag
153
Application Best Practices
20
, ya que es probable que forme
parte de cualquier estndar de accesibilidad de aplicaciones
web mviles que emerja en el futuro.
Tambin es un recurso til el documento Relationship
between Mobile Web Best Practices (MWBP) and Web Content
Accessibility Guidelines (WCAG)
21
.
20 w3.org/TR/mwabp
21 www.w3.org/TR/mwbp-wcag/
Aplicaciones Empresariales: Estrategia y Desarrollo
155 155
Aplicaciones Empresariales:
Estrategia y Desarrollo
Los responsables de decisiones corporativas ven actualmente
las aplicaciones empresariales mviles como un factor estrat-
gico, 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 compro-
meterse con sus clientes, proveedores y consumidores fnales,
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 Todo 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.
El concepto Bring Your Own Device (BYOD, en castellano Trae Tu
Propio Dispositivo) se est afanzando, permitiendo al personal
utilizar sus dispositivos personales para conectarse a la
P
O
R




I
a
n

T
h
a
i
n

&

D
a
v
o
c

B
r
a
d
l
e
y
Aplicaciones Empresariales: Estrategia y Desarrollo
156
infraestructura TIC, descargar contenido seguro y usar aplica-
ciones 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 bien pensada y ejecutada es clave para
asegurarse de que los datos estn protegidos en todo momento.
Puntos Clave de las Aplicaciones Mviles para Defnir
Iniciativas Empresariales

Reduccin de costes comparados con los sistemas exis-
tentes

Racionalizacin de los procesos de negocio

Ventaja competitiva con el acceso directo a datos actual-
izados 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 Offcer
(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 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)
Aplicaciones Empresariales: Estrategia y Desarrollo
157
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 fnales 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).

Especifcaciones de las aplicaciones.

Libro de ruta de las aplicaciones.

Planifcacin presupuestaria.

Visto bueno: aprobacin de las aplicaciones para produc-
cin.

Despliegue de aplicaciones: feedback temprano de demos y
prototipos, testeo y despliegue masivo.

Incentivos: Promocionar la adopcin de entornos mviles.
En cuanto a la adopcin comercial, el desarrollo de aplica-
ciones corporativas se encuentra todava en sus inicios, y como
tal 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 ms probable es "Todo esto suena muy bien, pero por
qu lo necesitamos?", por lo que tienes que estar preparado
Aplicaciones Empresariales: Estrategia y Desarrollo
158
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 Manifesto de Defnicin de Aplicacin (ADS,
del ingls Application Defnition Statement) para cada
aplicacin, especifcando 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 fable a futuro, por ejemplo MEAP/
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 para
movilizar tu producto pueden ser por ejemplo utilizar el equi-
pamiento 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 fjos.
Aplicaciones Empresariales: Estrategia y Desarrollo
159
Puntos Clave Decidiendo Movilizar un Sistema

Defne con claridad las razones para ello y asegrate de
que son sufcientemente 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 flosofa mvil.

Asegrate de que conoces qu dispositivos utilizarn tus
clientes y qu funcionalidades son las que ms interesa
movilizar.

Ten bien defnida tu estrategia de pruebas en mviles,
la cual debe cubrir pruebas multiplataforma y variados
dispositivos y sistemas operativos.
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 confdenciales 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).
MDM ofrece un control total corporativo sobre un disposi-
tivo, por lo que cuando un dispositivo se pierde, se roba o
160
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.
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
161

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
Ejemplos de proveedores de MDM y MAM:

Airwatch
1

App47
2

Apperian
3

Good
4

Microsoft
5

MobileIron
6

Mocana
7
1 air-watch.com
2 app47.com
3 apperian.com
4 good.com
5 microsoft.com/en-us/windows/windowsintune/explore.aspx
6 mobileiron.com
7 mocana.com
Aplicaciones Empresariales: Estrategia y Desarrollo
162
Plataformas de Aplicaciones Mviles
Empresariales (MEAP/MADP)
Por lo general, un elemento clave de las aplicaciones empresari-
ales 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 confdencialidad. En cualquier caso,
la sincronizacin tiene que ser segura, ya que los datos de las
empresas son uno de sus activos ms preciados. An ms, una
aplicacin integrada en toda la empresa debe ser multiplata-
forma. Para compensar las defciencias 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 Aplicaciones Mviles Corporati-
vas (MEAP, del ingls Mobile Enterprise Application Platform, y
MADP, del ingls Mobile Application Development Platform). Las
MEAP/MADP son entornos mviles que proporcionan el middle-
ware 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 simplifcar el desarrollo y reducir
sus costes, en entornos donde las habilidades tcnicas se deben
mantener para mltiples plataformas, herramientas y compleji-
dades, como la sincronizacin de datos y autenticacin.
Algunas soluciones disponibles son:

Amp Chroma by Antenna
8
8 http://www.antennasoftware.com
Aplicaciones Empresariales: Estrategia y Desarrollo
163

IBM MobileFirst Platform
9

Kony KonyOne
10

SAP Mobile Platform
11

Spring Mobile Solutions
12
Seguridad en Aplicaciones Empresariales
Una de las funciones principales de cualquier departamento de
TIC es asegurarse de que todos los aspectos de la infraestruc-
tura 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 MDM y MAM 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 platafor-
mas, permiten a las empresas bloquear de manera remota sus
aplicaciones y mantenerse al da en cuanto al voluble panorama
9 http://www.ibm.com/mobilefrst/us/en/why-ibm-for-mobile/platform.html
10 http://www.kony.com/products
11 http://www.sap.com/mobileplatform
12 http://www.springmobilesolutions.com
Aplicaciones Empresariales: Estrategia y Desarrollo
164
de la seguridad mvil sin tener que invertir demasiado esfuerzo
y dinero en esta tarea.
Puntos Clave para Asegurar Aplicaciones Empresariales

Si usas un proveedor de MDM o MAM, verifca de que tienen
las funcionalidades en seguridad sufcientes 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 verifca-
ciones de puntos fnales tanto en la aplicacin como en el
servicio web, para confrmar que tanto el servidor como el
dispositivo son vlidos.

Siempre verifca 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.
Analticas Mviles
166
Analticas Mviles
Nuestras aplicaciones son utilizadas por personas a las que
probablemente nunca conoceremos, as que las analticas para
mviles te pueden ayudar a descubrir cmo tu aplicacin se
est utilizando para poder mejorar las futuras versiones de la
aplicacin. Ms de la mitad de las mejores aplicaciones mviles
ya incluyen analticas
1
.
Estamos realmente malcriados, al menos 20 empresas
ofrecen un amplio catlogo de soluciones en analticas web y
con mltiples facetas, incluido el seguimiento de campaas
para mejorar la calidad del software. BlackBerry incluso ofrece
analticas tanto para la versin antigua de su plataforma basada
en Java
2
como para la versin 10.2 de su nueva paltaforma
3
.
Mucho incluyen capacidades extra, tales como el informe de
notifcacin de fallos y el seguimiento de benefcios. Casi la
mitad ofrecen implementaciones de cdigo abierto de sus
libreras, posiblemente para minimizar los temores sobre el
comportamiento de las mismas
4
.
Contina leyendo para obtener recomendaciones y ayuda
sobre cmo las analticas mviles pueden ayudarte a descubrir
cmo tus aplicaciones estn siendo utilizadas. Aprenders cmo
elegir en implementar una solucin apropiada en tu aplicacin.
1 blog.velti.com/mobclix-index-the-when-where-what-of-apps, static.usenix.
org/event/sec11/tech/slides/enck.pdf
2 github.com/blackberry/WebWorks-Community-APIs/tree/master/Smartphone/
Analytics
3 devblog.blackberry.com/2013/08/discover-whats-coming-in-the-blackberry-
10-2-sdk/
4 readwrite.com/2013/12/05/why-mobile-developers-need-open-source-
analytics-embedded-in-their-applications
P
O
R




J
u
l
i
a
n

H
a
r
t
y
Analticas Mviles
167
Ponindote En Marcha
Muchos de los proveedores de soluciones de analticas para
mviles incluyen un apartado 'Getting Started' donde se apre-
nde cmo comenzar a utilizar sus productos. Algunos ejemplos
son Flurry
5
y KISSmetrics
6
. En general, es necesario registrarse
antes de que puedas utilizar cualquiera de los productos de
manera til, ya que necesitan ser confgurados 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.
Probablemente desees consistencia en el informe de
analticas para aplicaciones multiplataforma; de otra manera,
puede que te encuentres intentando comprar paquetes de
datos que diferan, 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.io
7

abstrae un amplio abanico de mtricas, y tienen publicado su
cdigo con licencia de cdigo abierto en github.com/segmen-
tio, donde muestran maneras de implementar su herramienta
de forma que se reduzca el esfuerzo necesario para adaptarla a
5 support.furry.com
6 support.kissmetrics.com/getting-started/overview
7 segment.io/
Analticas Mviles
168
diferentes proveedores de analticas. Count.ly
8
ofrece imple-
mentaciones 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.
Debes ser consciente de que la mayora de proveedores de
soluciones de analtica mvil tambin estn extrayendo y uti-
lizando los datos comunicados por tu aplicacin, y que pueden
suministrarlos y venderlos a otros. Puede que controlen la vida
de esos datos, lo que signifca que podran hacerlos inac-
cesibles a ti o, por el contrario, podran conservarlos y usarlos
mucho tiempo despus de que hayas retirado de circulacin
tu aplicacin. Adems, si hay informacin de identifcacin
personal en los datos tambin pueden darse otras implicaciones
legales. As que vale la pena considerar cmo terceros utilizarn
y compartirn los datos comunicados a travs de su software y
APIs.
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 benefcio 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?
8 count.ly/
Analticas Mviles
169

Mtricas de usabilidad: Cundo se quedan bloqueados
tus usuarios en el fujo de uso? Alcanzan rpidamente su
objetivo cuando utilizan tu software?
Una vez defnidas las principales reas de inters tendrs que
disear las mtricas de anlisis, por ejemplo, cules elementos
de los datos deberan ser reportados.
Defnir Cmo Medir
Crea nombres signifcativos 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 grfco.
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 confguracin o utilizando un tiempo global
como el UTC
9
?
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 confar en estos elementos
reportados automticamente.
Las etiquetas personalizadas de eventos enriquecen aquellos
predefnidos, y muchas de las soluciones de analtica mvil pro-
porcionan medios para que tu aplicacin los genere. Es posible
9 en.wikipedia.org/wiki/Coordinated_Universal_Time
Analticas Mviles
170
que necesites formatear los mensajes de eventos personaliza-
dos. Si es as, pon atencin a la codifcacin de los elementos
y los separadores, es posible, por ejemplo, que deban pasar por
codifcacin URL
10
cuando se envan mensajes como REST
11
.
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 fabilidad y exactitud de
los datos suministrados. 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.
Adaptando tu Cdigo
Puede que tengas que declarar capacidades adicionales nece-
sarias para que los anlisis mviles funcionen correctamente
cuando se integran con tu aplicacin.
Para Android, a stos se les conoce como permisos. Prob-
ablemente 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 regis-
tre la ubicacin del telfono. Si tu aplicacin ya est utilizando
esos permisos, no es necesario especifcar su uso de nuevo.
Para iOS, UI Requi r edDevi ceCapabi l i t i es indica a
iTunes y a la App Store qu caractersticas de dispositivo requi-
ere la aplicacin. Se implementa como un diccionario donde los
elementos se especifcan utilizando claves, que incluyen WiFi,
servicios de localizacin y GPS.
En Windows Phone, se utilizan capacidades para decidir lo
que la aplicacin utiliza. Localytics tiene online una
10 en.wikipedia.org/wiki/Percent-encoding
11 msdn.microsoft.com/en-us/library/live/hh243648
Analticas Mviles
171
gua de arranque rpido
12
que incluye un ejemplo de
confguracin de la capacidad I D_CAP_I DENTI TY_DEVI CE.
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
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 fcil-
mente, as que puede ser necesario el uso de tres bloques de
resultados para diagnosticar las diferencias por triangulacin
13
.
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.
Privacidad
Recuerda que debes explicar a los usuarios fnales que la
aplicacin est diseada para registrar y compartir informacin
acerca de cmo la aplicacin se est utilizando, a ser posible
12 www.localytics.com/docs/windows-phone-7-integration/
13 en.wikipedia.org/wiki/Triangulation_(social_science)
Analticas Mviles
172
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.
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 identifcacin en sus trminos de
servicio
14
. Otros proveen de ejemplos, incluidos fragmentos de
cdigo, que demuestran cmo grabar datos de identifcacin
personal. Por ejemplo, KISSmetrics provee el siguiente cdigo
15
:
] i dent i f y: @" name@emai l . com" ] ; , y Mixpanel ofrece un
ejemplo de cmo actualizar el registro de analticas personales
de un usuario
16
.
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
mviles
17

El libro de Kord Davis "Ethics of Big Data"

El sector minorista ha publicado un cdigo de conducta
con gua de trabajo generales para aplicaciones mviles,
disponible en futureofprivacy.org/issues/smart-stores
14 www.google.com/analytics/terms/us.html
15 support.kissmetrics.com/apis/objective-c
16 mixpanel.com/docs/people-analytics/android
17 http://jnorthrop.me/2012/07/2/privacy-considerations-mixpanel-people-
analytics/
Analticas Mviles
173
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:

The Mobile Developer's Guide to the Parallel Universe,
un libro gemelo a ste, que trata analticas mviles desde
la perspectiva del marketing. Disponible en descarga PDF
desde www.wipconnector.com.

9 tools to help you measure mobile analytics
18
es otro
til punto de inicio para adentrarse en el tema desde la
perspectiva de un desarrollador.

Kontagent
19
ofrece una amplia gama de estudios, webinars
on-demand y otros materiales sobre analticas mviles, que
probablemente vale la pena leer sea cual sea la implement-
acin que decidas llevar a cabo.
18 thenextweb.com/dd/2013/08/11/9-tools-to-help-you-measure-mobile-
analytics/
19 kontagent.com/resources/
Implementando Rich Media
175
Implementando Rich Media
Implementando Rich Media
Decir hay tantos estndares como telfonos es un autntico
tpico cuando se habla de la lista de formatos multimedia
soportados en telfonos mviles. A diferencia de los orde-
nadores personales, donde la mayora de formatos de audio
y vdeo son compatibles o se puede instalar fcilmente un
cdec para soportar alguno, los dispositivos mviles son una
historia diferente. Los formatos y protocolos especfcos para
estas plataformas se han desarrollado durante los ltimos aos
para permitir la optimizacin respecto a tamao de pantalla y
ancho de banda. Pequeas variaciones en la resolucin, tasa de
bits, contenedor, protocolo o cdec puede causar fcilmente
un fallo de reproduccin, por lo que se recomienda probar en
dispositivos reales.
Dicho esto, la mayora de los smartphones actuales soportan
MP4 h.264 640x480 AAC-LC, aunque mltiples variaciones son
posibles de un dispositivo a otro, incluso entre fabricantes o
versiones de frmware. Nuevos formatos se aaden a diario an
hoy en da, tales como WebM/vp8
1
, un estndar abierto de
vdeo sobre Android 4+, aunque adolece del soporte necesario
por parte de los desarrolladores, que argumenta que es slo una
mera variacin de h.264. La tendencia es que las resoluciones
de pantalla aumenten, forzando resoluciones full HD TV en pan-
tallas mviles a expensas de consumir ms batera y memoria.
A continuacin mostramos los formatos de pantalla completa
recomendados para una ptima compatibilidad:
1 en.wikipedia.org/wiki/VP8
P
O
R




M
i
c
h
e
l

S
h
u
q
a
i
r
Implementando Rich Media
176
Contenedor
mp4, 3gp, avi (slo BlackBer-
ry), wmv (slo Windows Phone
+ BB10)
Protocolo HTTP (progresivo o en descarga)
o RTSP (streaming)
Vdeo H.264, H.263
Audio AAC-LC, MP3, AAC+
Resoluciones clsicas 176x144 (telfonos ms
antiguos), 320x240, 480x320
(J2ME)
Resoluciones comunes 480x800, 640x480 (Blackberry),
960x640 (iPhone), 1024x768
(iPad 1+2), 2048x1536 (iPad
3+4)
Resoluciones HD 1280x720 (BB10, Samsung,
Windows Phone 8), 1136x640
(iPhone 5)
Full HD / 1080p 1080x1920 (HTC One, Samsung
Galaxy S4)
Quad HD / 2K o 1440p 1440x2560 (Samsung Galaxy S5,
Vivo xPlay)
Para una lista detallada de dispositivos que soportan
resoluciones HD vase el artculo de Wikipedia
2
2 http://en.wikipedia.org/wiki/List_of_mobile_phones_with_HD_display
Analticas Mviles
177
Streaming versus Almacenamiento Local
Hay dos opciones para llevar contenido multimedia a disposi-
tivos mviles: reproducirlo de forma local o en streaming en
tiempo real desde un servidor.
Para realizar streaming de contenido a travs de redes
mviles relativamente inestables, se desarroll un protocolo
especfco denominado RTSP que resuelve los problemas de
latencia y buffering. Las frame rate tpicas son 15 fps para MP4
y 25 fps para 3gp, con velocidad de datos de hasta 48 kbps
para GPRS (slo audio), 200 kbps para Edge, 300 kbps para
3G/UMTS/WCMDA y 500 kbps para HSDPA, WiFi y 4G. HD-vdeo
comienza en 2Mbps y no se recomienda para el streaming.
Cuando el objetivo es Windows Mobile/Phone, Windows
Media Services
3
es el preferido para soportar streaming HTTP.
Android 3.0 y superiores tambin soportan streaming HTTP.
Ten en cuenta que se requiere atomic hinting (ver Descarga
Progresiva) y que los archivos mp4 son muy estrictos en la
codifcacin (utilizan 15 fps H.264 AAC-LC estreo de 48 kHz).
Slo los dispositivos HTC Android y Android 4.0 son menos
estrictos en formatos de streaming y reproducirn muchas ms
variaciones de codifcacin que otras marcas.
Cuando el modo streaming no est disponible en el telfono,
bloqueado por la operadora o en el caso de que desees que el
usuario pueda ver el contenido sin establecer una conexin
cada vez que lo abra, por supuesto puedes simplemente
conectar y descargar el archivo. Esto es tan fcil como el enlace
a una descarga en una web estndar, pero los telfonos mviles
pueden ser ms estrictos a la hora de comprobar los tipos MIME
correctos. Utiliza audio/3gp o video/3gp para archivos 3GP y
video/mp4 para archivos MP4.
Algunos telfonos slo tienen que utilizar las extensiones
3 http://technet.microsoft.com/en-us/windowsserver/dd448620.aspx
Analticas Mviles
178
de archivo para la deteccin del tipo de datos, por lo que
cuando se utiliza una secuencia de comandos, como download.
php, un truco muy conocido es aadir un parmetro como
downl oad. php?dummy=. 3gp para garantizar el correcto
procesamiento del contenido. Algunos telfonos no pueden
reproducir audio 3gp sin video, pero una solucin es incluir
una pista de vdeo vaca en el archivo o una imagen fja de la
portada del lbum.
Dependiendo de la extensin y el protocolo, los diferentes
reproductores podrn manejar la peticin. En algunos telfonos,
como los Android, si hay mltiples reproductores multimedia
disponibles se abre una ventana popup para permitir al usuario
seleccionar uno. Para mejorar la experiencia de usuario, utiliza
objetos reproductores incrustados con funcionalidad limitada.
Finalmente, puedes simplemente incluir archivos multimedia
en tu aplicacin mvil como recursos. En dispositivos Android,
asegrate de dar soporte a archivos localizados en tarjetas
SD (Android 3.1 y superiores), lo que requiere el permiso
andr oi d. per mi ssi on. READ_EXTERNAL_STORAGE.
Descarga Progresiva
Para evitar tener que confgurar un servidor de streaming, una
buena alternativa es ofrecer descargas progresivas para que los
archivos multimedia puedan ser distribuidos desde cualquier
servidor web. Para hacer esto, tienes que hacer hint en tus
archivos. Hinting es el proceso de marcar varios lugares en el
archivo, de manera que un reproductor mvil pueda comenzar a
reproducirlo tan pronto como se haya descargado una pequea
parte de l (por lo general los primeros 15 segundos). sta se
ha convertido en la manera ms popular de gestiona archivos
multimedia con las actuales capacidades de los dispositivos y
redes de datos. Nota: un archivo mp3 no necesita, ni permite,
este procesamiento.
Analticas Mviles
179
Probablemente, el software de hinting de cdigo abierto ms
fable es Mp4box
4
.
Conversores de Medios
Para convertir una amplia variedad de medios existentes a
formatos compatibles con telfonos mviles, el conversor de
formatos FFMPEG (open source) es bsico. Puede ajustar a la
vez frame rate, bit rate y canales. Asegrate de incluir soporte
a los codifcadores H263, H264, AAC y AMR. Hay buenos
conversores disponibles en FFMPEG, tales como Super de
eRightSoft
5
. Para usuarios Mac, QuickTime pro (versin de
pago) es una buena alternativa para codifcar y realizar hints
sobre archivos 3go y mp4. Si buscas una solucin completa de
servidor con base Java/opensource, echa un vistazo a Alembik
6
.
4 gpac.wp.institut-telecom.fr/mp4box/
5 www.erightsoft.com/super
6 www.alembik.sourceforge.net
Servicios Basados en Localizacin
181
Servicios Basados en
Localizacin
Los servicios basados en localizacin continan siendo uno de
los temas candentes en las aplicaciones mviles.
Conocer la ubicacin de un usuario signifca que puedes
enviarle informacin ms relevante, ayudando a los usuarios a
encontrar un restaurante vegetariano cercano teniendo en cuen-
ta el pronstico local del tiempo, encontrando a sus amigos en
medio de una convencin, o facilitando el descubrimiento de
rutas pintorescas para bicicleta que hayan sido recomendadas
por otros ciclistas. Obtener datos de localizacin es slo la
mitad de la historia, y ofrecer al usuario una representacin con
signifcado es un factor clave en muchas de las aplicaciones.
Habitualmente esto implica mostrar una representacin grfca
superpuesta con rutas, puntos de inters, etctera. Pero no
subestimes la simplicidad, una lista completa de recursos selec-
cionados por proximidad puede ser muchas veces ms fructfera
que una lenta vista de mapa con scroll (particularmente cuando
el roaming cuesta 5 por megabyte).
Cmo Obtener Datos de Posicin
Las aplicaciones basadas en localizacin pueden adquirir
informacin de ubicacin de varias fuentes: a travs de una de
las conexiones de red disponibles, satlites GPS, sistemas de
corto alcance basado en etiquetas visibles o radio de alcance
local, o introduciendo datos a travs de la pantalla o el teclado,
a la manera antigua.
P
O
R




A
l
e
x

J
o
n
s
s
o
n
Servicios Basados en Localizacin
182

Posicionamiento por red: Cada estacin base GSM o UMTS
contiene un identifcador nico, que contiene su cdigo
de pas, ID de red, cinco dgitos de Location Area y dos
dgitos de Routing Area. Las coordenadas de una estacin
de base pueden obtenerse consultando la declaracin
de la operadora en una base de datos. La localizacin
resultante no es particularmente exacta para sealar
nuestra ubicacin exacta y depende del tamao de la celda
(cobertura de la estacin base): Las celdas se colocan
ms densamente en las reas urbanas, que proporcionan
una mayor precisin que en las zonas rurales. Tcnicas,
tales como la medicin de la diferencia en el tiempo de
llegada de las seales de varias estaciones base cercanas
(conocido como multilateracin) pueden ayudar a mejorar
la precisin, aunue que los proveedores de telefona cobran
por estos servicios premium de red. En los telfonos con
capacidades WiFi, las listas de puntos conocidos de acceso
LAN inalmbrico pueden ser utilizadas como alternativa
o suplemento al posicionamiento por red. Esta tcnica es
utilizada por muchas empresas.

Posicionamiento GPS: Un mdulo de GPS a bordo (o uno
externo) normalmente da una precisin del 50%, que va
oscilando entre 5 y 50 metros, dependiendo de la calidad
del hardware y el nmero de los satlites que el mdulo
GPS epuede encontrar. La precisin se ve afectada tambin
por el terreno, el follaje o los materiales de los muros; cu-
alquiera de ellos puede ocultar las seales satlite: En las
ciudades, caones urbanos creados por grupos de edifcios
altos pueden distorsionar la seal, dando lecturas falsas o
imprecisas. La combinacin de GPS con el posicionamiento
de la red es cada vez ms comn: el GPS asistido, o A-GPS,
utiliza un intermediario llamado servidor de asistencia con
el fn de minimizar el retardo en la identifcacin de la
Servicios Basados en Localizacin
183
primera posicin GPS. El servidor utiliza los datos orbitales,
el tiempo exacto de red y anlisis de la informacin GPS.
Sin embargo, el A-GPS no signifca obligatoriamente una
posicin ms precisa, sino ms bien un resultado ms
rpido cuando el GPS est activado inicialmente, o cuando
la cobertura del satlite GPS es pobre. Esto acorta el
tiempo necesario para la fjacin de la ubicacin. Nota: la
mayora de las soluciones A-GPS requieren una conexin red
activa en el mvil.

Posicionamiento de Corto Alcance: Los sistemas basados
en sensores, NFC (del ingls Near Field Communication),
Bluetooth (incluyendo Bluetooth Low Energy) y otros
sistemas de etiquetado basados en radio, utilizan sensores
activos o pasivos en la proximidad de los puntos de
inters, como exposiciones en museos o tiendas en un
centro comercial. Soluciones tecnolgicas de bajo nivel
incluyen los cdigos de barra y otras etiquetas visuales
(como los cdigos QR) que pueden ser fotografados y
analizados en un servidor o localmente en el telfono; esas
etiquetas pueden contener un identifcador desde el que
se puede buscar una posicin. El usuario puede especifcar
su posicin mediante la seleccin de una ubicacin en un
mapa, ingresar un cdigo de rea o una direccin fsica.
Esta opcin se utiliza tpicamente para las aplicaciones en
los telfonos de gama media, que pueden carecer de otros
medios para determinar una ubicacin.
ltimamente, la implementacin de Bluetooth 4.0, incluy-
endo iBeacon de Apple, combina identifcadores de radio con
un indicador de la fuerza de la seal recibida (RSSI) como
sistema de triangulacin. A pesar de ello, la precisin de stas
tcnicas est an por determinar, aunque colocar dispositivos
Bluetooth en equipamiento, bienes valiosos e incluso mascotas,
con el propsito de posicionar y controlar inventario en tiempo
Servicios Basados en Localizacin
184
real ser cada vez ms popular a lo largo del 2014 con nuevos
gadgets y servicios.
Servicios de Mapas
En general, un servicio de mapas toma una posicin y un
puado de metadatos como parmetros de entrada y devuelve
un mapa en formatos bitmap o vectorial con capas adicionales
de metadatos contextuales. Los datos en vector tienen varias
ventajas sobre los bitmaps: las representaciones vectoriales
consumen menos ancho de banda y permiten hacer zoom
arbitrariamente. Sin embargo, requiere ms procesamiento en
el lado del cliente. Los bitmaps a menudo se proporcionan en
niveles de zoom discretos, cada una con un nivel de aumento
fjo, nombrados segn sus coordenadas y nivel de zoom.
Mapas gratuitos, tanto bitmaps como vectores, son Open
Street Map
1
o CloudMade
2
. Los comerciales incluyen mapas de
Garmin
3
o los recursos Bing de Microsoft
4
, entre otros.
Algunas soluciones, como Google Maps
5
, son gratuitas
cuando la aplicacin est disponible sin coste alguno, pero
requieren que obtengas una clave de mapa. Otros servicios
de mapas, como los mapas estticos de Google, se limitan a
mostrar una serie de secciones de imagen (tiles) para una clave
de mapa o direccin IP. Muchos de estos recursos comparten
formatos similares formatos de mapa y son por tanto intercam-
biables.
1 wiki.openstreetmap.org/wiki/Software
2 www.cloudmade.com
3 garmin.com
4 www.microsoft.com/maps/developers
5 www.code.google.com/apis/maps
Servicios Basados en Localizacin
185
Implementando del Soporte a
Localizacin
La API de localizacin para Java ME ofrece detalles tales como
latitud y longitud, precisin, tiempo de respuesta, y la altitud
derivada del GPS de a bordo, as como la velocidad basada en la
realizacin de lecturas consecutivas.
iOS tiene integrado soporte a la ubicacin, pero con
restricciones acerca de cmo los datos de localizacin pueden
ser generados por sus funciones, y en cmo los servicios de
mapas pueden ser utilizados. En la actualidad, tambin hay un
debate en curso sobre cmo los datos de ubicacin se registran
y almacenan en los dispositivos iOS y en cmo Apple planea
utilizar tales datos para sus propios fnes. Los desarrolladores
de Android tambin tienen acceso a las libreras de alto nivel,
y esos dispositivos son ms liberales con la eleccin de las
fuentes de mapas, aunque usan por defecto la API de mapas de
Google. En los dispositivos Windows Phone 7 y Windows 8, cabe
destacar que la nueva API de Mapas de Windows Phone 8 no es
la misma que Bing Maps de Windows Phone 7. Windows Phone 8
an soporta Bing Maps, pero est en desuso.
Desde iOS 3.x y Android 2.0, los desarrolladores de aplicacio-
nes web han sido capaces de acceder a informacin geogrfca
a travs de la interfaz navigator.geoposition, por ejemplo
llamando a navi gat or . geol ocat i on.
get Cur r ent Posi t i on( my_handl e) puedes
capturar las my_handl e. coor ds. l at i t ude y la
my_geo_handl e. coor ds. l at i t ude, siempre que el usuario
lo autorice y los satlites estn disponibles. Como ejemplo,
a continuacin se muestra cmo sera un snippet utilizando
sintaxis JavaScript:
Servicios Basados en Localizacin
186
f unct i on i ni t _geol ocat i on( ) {
/ / e. g. cal l ed f r oma r eady( ) or onLoad f unct i on
navi gat or . geol ocat i on. get Cur r ent Posi t i on(
get _geol ocat i on, pr ocess_er r or s) ;
}
f unct i on pr ocess_er r or s( er r or ) {
swi t ch( er r or . code) {
case er r or . PERMI SSI ON_DENI ED:
al er t ( user not shar i ng geol ocat i on) ;
br eak;
case er r or . POSI TI ON_UNAVAI LABLE:
al er t ( coul d not cal cul at e cur r ent
posi t i on) ;
br eak;
case er r or . TI MEOUT:
al er t ( r et r i evi ng posi t i on t i meout ) ;
br eak;
def aul t :
al er t ( mi sc. geol ocat i on er r or ) ;
br eak;
}
}

f unct i on get _geol ocat i on( posi t i on) {
al er t ( Lat i t ude: + posi t i on. coor ds. l at i t ude +
Longi t ude: + posi t i on. coor ds. l ongi t ude) ;
}
En vez de levantar un error genrico, un error puede ser
combinado con fallbacks a bsquedas de red, introduccin del
cdigo postal, etc. Adems de las coordenadas geogrfcas, los
datos a menudo se presentan con otro tipo de informacin,
disponible en mltiples formatos. Uno de los estndares ms
extendidos se llama geoRSS, y para identifcar un punto de
inters se parecer al siguiente cdigo:
Servicios Basados en Localizacin
187
<ent r y>
<t i t l e>Byvi ken' s f or t r ess</ t i t l e>
<descr i pt i on>Swedi sh 1900- cent ur y ar my
i nst al l at i on, w. deep mot e
</ descr i pt i on>
<geor ss: poi nt >18. 425 59. 401</ geor ss: poi nt >
</ ent r y>
Existen otros formatos de datos geogrfcos, pero la idea
bsica es similar, armonizando fujos de datos y servicios
web, se pueden crear mashups slidos para ser ejecutados sin
problemas en diversos contextos. Otros formatos importantes
para incluir geoinformacin son el Geography Markup Language
(GML), una codifcacin XML especfca para la transmisin y
almacenamiento de informacin geogrfca, as como KML, un
elaborado geoformato que se utiliza en Google Earth y servicios
web relacionados.
Herramientas para Aplicaciones LBS
Varias compaas ofrecen herramientas y APIs cmodas para
desarrolladores como un servicio de valor aadido; utilizarlas
acelera drsticamente el desarrollo y despliegue de servicios ba-
sados en localizacin. Cada herramienta se enfoca normalmente
a una o una pequea seleccin de las plataformas mviles.
Empresas de publicidad como AdMob ofrecen a los desarrol-
ladores programas independientes de publicidad sensibles a
localizacin para orientar mejor sus ofertas; aunque no se
visualizan interfaces de mapas, slo las coordenadas enviadas y,
si hay suerte, la publicidad resultante.
187
Servicios Basados en Localizacin
188
A continuacin, ms enlaces a mapas y recursos sobre
servicios basados en la localizacin:

Proyecto de mapas offine de Android:
code.google.com/p/big-planet-tracks

BlackBerry: us.blackberry.com/developers (search for map
api)

Garmin Mobile XT SDK: developer.garmin.com

Recursos de Google Maps: developers.google.com/maps

iBeacon: support.apple.com/kb/HT6048

Nutiteq: www.nutiteq.com

Nokia Maps: developer.here.net

TeleAtlas: developerlink.teleatlas.com

Mapas y navegacin para Windows Phone 8:
http://msdn.microsoft.com/en-us/
library/windowsphone/develop/jj207045
Comunicaciones de Campo Cercano (NFC)
190
Comunicaciones de Campo
Cercano (NFC)
Aunque el primer telfono que inclua un dispositivo para Co-
municaciones de Campo Cercano se comercializ en el 2007 (el
Nokia 6131 NFC), sta tecnologa slo ha alcanzado popularidad
recientemente. El primer movimiento signifcativo vino de la
mano de Nokia y Samsung en el 2010 cuando aadieron NFC a
sus smartphones y, actualmente, la mayora de telfonos con
Android, BlackBerry y Windows Phone son compatibles con NFC
(con la excepcin de los telefonos de Apple).
Al principio, NFC se publicit como una prometedora manera
de dotar a los smartphones de la habilidad de sustituir de
manera segura una cartera fsica, lo cual era una comodidad
por la que la gente estaba dispuesta a pagar. Adems, segn
un estudio de Allied Market Research
1
predice que el mercado
global de carteras electrnicas alcanzar los $5.250 billones
(USD) en el 2020, con una tasa compuesta de crecimiento
anual del 127,5% desde el 2013 al 2030.
En cualquier caso, el mayor impacto de NFC hasta la fecha
ha sido, probablemente, ofrecer capacidad de compartir y
conectar con un toque de dispositivo.
Breve Ojeada al Interior de NFC
La tecnologa NFC es una evolucin de la Identifcacin por
Radiofrecuencia (RFID, del ingls Radio Frequency Identifca-
tion), en uso desde principios de los aos 90
2
. NFC extiende la
capacidad de RFID manteniendo compatibilidad con tecnologas
antiguas. Durante aos, RFID ha sido utilizadaobsicamente
1 alliedmarketresearch.com/mobile-wallet-market
2 nearfeldcommunication.org/history-nfc.htm
P
O
R




R
i
c
h
a
r
d

B
l
o
o
r
Comunicaciones de Campo Cercano (NFC)
191
para el seguimiento de objetos y con la fnalidad de aplicarlo a
un sistema de pago sin contacto.
NFC es una interfaz y protocolo construido sobre RFID y
dirigido a dispositivos mviles. La tecnologa opera en banda
ISM (del ingls Industry Scientifc Medical) a 13,56 MHz, lo
que limita su rango de operacin entre 3 cm y el contacto
fsico directo, proveyendo a los dispositivos porttiles de una
comunicacin segura sin necesidad de confgurar una red. Esto
es un punto a favor respecto a la tecnologa Bluetooth, que
requiere parear los dispositivos para que se puedan comunicar.
NFC funciona por induccin electromagntica. Cuando las
ondas electromagnticas en una bobina cambian, se induce
un voltaje. Desde el punto de vista del hardware, una serie
de voltajes altos y elevados representan bits. As es como se
envan los paquetes de datos entre dispositivos. En el ao
2006, el NFC Forum, que supervisa el ecosistema NFC, defni
las especifcaciones de las NFC. El Forum estableci un estndar
para el formato de intercambio de datos en NFC, el NDEL
(del ingls NFC Data Exchange Format), un formato ligero de
mensajes en cdigo binario que encapsula datos. Por ejemplo,
para codifcar una URL son necesarios un encabezado de 5
bytes y al menos 12 bytes (para transmitir una URL corta). Se
puede encontrar ms informacin online
3
.
Ventajas de NFC sobre Bluetooth
4
:
Cuando se compara con Bluetooth, NFC ofrece las siguientes
ventajas:
1. Seguridad: El corto campo de operacin de NFC es en
realidad una ventaja. Algunas implementaciones en
3 www.developer.nokia.com/Community/Wiki/Understanding_NFC_Data_
Exchange_Format_(NDEF)_messages y www.nfc-forum.org/specs/
4 nearfeldcommunication.org/bluetooth.html
192
smartphones requieren que la pantalla est activa y que se
haya introducido el PIN para obtener permiso de acceso a
hardware NFC.
2. Bajo consumo de energa: Debido al pequeo radio de
operacin, slo es necesario generar un campo electromag-
ntico muy dbil para escribir o leer etiquetas NFC.
3. Pareado rpido: Los dispositivos NFC pueden conectarse en
una dcima de segundo.
Modos de operacin NFC
5
Hay tres modos de operacin disponibles en NFC: Lectura/
Escritura, Punto-a-Punto y Emulacin de Tarjeta. Esta seccin
describe dichos modos y sus usos.
Modo Lectura/Escritura
En este modo, el smartphone acta como un lector, gene-
rando campos electromagnticos para leer las etiquetas NFC.
Slo es posible escribir en un mensaje NDEF en una etiqueta
NFC si la etiqueta no es de slo lectura.
Aplicaciones sencillas de lectura pueden involucrar etiquetas
que guardan datos generales o especifcos de la aplicacin. Un
ejemplo son los psters inteligentes, en los que una etiqueta
NFC est insertada en un pster publicitario que provee de un
enlace al sitio web del proveedor de productos o servicios. En
este caso, los datos de la etiqueta tienen un formato especfco
y el telfono sabe, por ejemplo, que tiene que abrir una URL
en un navegador web. Los usos especfcos para aplicaciones
slo estn limitados por tu imaginacin (y la cantidad de
datos que una etiqueta NFC pueda almacenar). Puedes utilizar
aplicaciones de lectura/escritura para enviar mensajes o escribir
etiquetas para ser ledas por otras aplicaciones.
5 nfc.cc/technology/nfc/
Comunicaciones de Campo Cercano (NFC)
193
Modo Punto-a-Punto
Se trata de una importante ampliacin de la tecnologa
RFID. En el modo P2P, dos smartphones son capaces de
intercambiar pequeas cantidades de informacin, tales como
vCards, URLs o iniciar una conexin Bluetooth para la trans-
ferencia de datos de gran tamao. Android Beam normalmente
funciona en modo P2P de manera que el pareado de un usuario
invisible se realiza con NFC, y la transferencia de datos se
ejecuta a travs de la conexin Bluetooth con mayor rapidez.
Utilizando ste modo, las aplicaciones pueden intercambiar
datos entre dos smartphones con NFC. Muchos smartpgones
incluyen aplicaciones para tareas como pareado Bluetooth e
intercambio de informacin, por ejemplo tarjetas comerciales.
En tus aplicaciones puedes, por ejemplo, usar ste modo para
transmitir informacin sobre movimientos en un juego.
Modo Emulacin de Tarjeta
En este modo, el smartphone acta como un etiqueta NFC
pasiva. El modo de emulacin de tarjeta es crucial para fnes
de pago en los que se almacena informacin sensible en un
elemento seguro (ver ms adelante). Google Wallet y Microsoft
Wallet son ejemplos de aplicaciones que permiten a un telfono
inteligente equipado con NFC ser utilizado para realizar pagos
por contacto basndose en la emulacin de la tarjeta.
Aunque ste modo es mucho ms especializado que los
anteriores, y suele requerir una relacin con el proveedor de
pasarelas de pago o de servicios, puede ser utilizado para
gestin de tickets, pagos, operaciones de conmutacin (por
ejemplo abrir una puerta), y reemplazar tarjetas fsicas (como
tarjetas sanitarias, de crdito o licencias de conduccin, entre
otras).
Comunicaciones de Campo Cercano (NFC)
194
El Elemento Seguro
En el corazn de cualquier dispositivo de tarjeta emulada se
encuentra el elemento seguro (o SE, del ingls Secure Element)
6

que contiene los datos asegurados (informacin de tarjetas de
crdito, entre otros
7
). Hay tres posibles lugares en los que el SE
puede ser almacenado:
1. En la SIM/UICC (va un protocolo de cable nico, del ingls
Single Wire Protocol, una especifcacin que permite la
conexin entre la tarjeta SIM y el chip NFC).
2. En el interior del chip NFC.
3. En una tarjeta SD.
Como nota al margen, Google Wallet
8
slo almacena las
credenciales de una tarjeta de prepago Google en el elemento
seguro del chip NFC. Slo los nmeros de las tarjetas de Google
se pasan a los vendedores reales, mientras que los nmeros de
tarjeta de crdito reales se almacenan en servidores seguros de
Google. Microsoft Wallet, por el contrario, almacena elementos
sensibles en el elemento seguro de la tarjeta SIM. Segn
Microsoft, este mtodo permite a las personas mover su cartera
de un telfono a otro.
En todo el mundo, un nmero creciente de entidades de
crdito y operadoras de redes mviles (MNOs, del ingls Mobile
Network Operator) estn cooperando para implementar mtodos
de pago que utilicen NFC. MasterCard PayPass y Visa PayWave
son ejemplos de tales soluciones implementadas. Operadoras de
redes mviles tales como A1 (Austria), Orange Francia y China
Mobile estn emitiendo tarjetas NFC SIM.
6 mp-nfc.org/nfc_near_feld_communication_architecture.html
7 smartcardalliance.org/
8 www.google.com/wallet/faq.html
195
Comunicaciones de Campo Cercano (NFC)
Difcultades actuales
NFC es una tecnologa fascinante que atraer transacciones
econmicas. Sin embargo, antes de que veamos un amplio
despliegue de medios de pago mediante NFC, son necesarias su
plena comprensin y la cooperacin entre todas las entidades
bancarias, fabricantes de hardware, operadores de redes mviles
y desarrolladores de sistemas operativos.
Adems, algunos fabricantes de telfonos importantes no
han adoptado an la tecnologa NFC. Los dispositivos actuales
de Apple, por ejemplo, no son compatibles con NFC. La
compaa ha decidido confar en la aplicacin Passbook, que
tiene un modo completamente diferente de operar respecto a
las aplicaciones centradas en NFC.
An ms, el elemento seguro tiene un espacio de almace-
namiento limitado, y no est claro cmo este espacio debe ser
compartido entre todos los implicados. Por ltimo, debido a la
falta de estndares aceptados, algunos bancos han desplegado
sus propias soluciones y quieren convencer a los comerciantes
de aceptar su nuevo sistema de pago.
Comunicaciones de Campo Cercano (NFC)
196
APIs de NFC

Android: Desde la API nivel 9 (Gingerbread 2.3), Android
provee un conjunto de APIs de alto nivel que facilitan
su uso. Ms informacin en la pgina de Android para
desarrolladores
9
.

BlackBerry: Su ltimo SDK provee de APIs de alto
nivel para interactuar con NFC. Ejemplos de cdigo para
implementar un lector y grabador de etiquetas NFC
10
, e
informacin adicional en los sitios web de BlackBerry sobre
cmo usar el modo emulacin en BlackBerry
11
.

Windows Phone 8: El Windows Phone 8.0 SDK incluye
los paquetes Proximity, que proporcionan un conjunto de
clases con las APIs necesarias para habilitar el intercambio
de datos P2P entre aplicaciones WP8. Tambin es posible
transferir pequeos paquetes de datos desde un dispositivo
Android a un dispositivo WP8 y viceversa. En la actualidad,
su implementacin se encuentra todava en sus inicios y no
es posible transferir gran cantidad de datos.
Puedes encontrar ms detalles online sobre la implementacin
en
12
.
9 developer.android.com/reference/android/nfc/package-summary.html
10 docs.blackberry.com/en/developers/deliverables/34480/Near_Field_
Communication_1631111_11.jsp
11 supportforums.blackberry.com/t5/Java-Development/NFC-Card-Emulation-
Primer/ta-p/1596893
12 msdn.microsoft.com/en-us/library/windowsphone/develop/jj207060
Implementando la Vibracin Hptica
198
Implementando la
Vibracin Hptica
Consideraciones de Diseo de Vibracin
Hptica
Por qu deberas usar efectos hpticos de vibracin? Tu
aplicacin va a funcionar igual de bien sin la retroalimentacin
tctil, verdad? S, tal vez, pero perder el nico elemento
sensorial que hace su entorno virtual ms realista y convin-
cente. Margaret Atwood escribi una vez: "El tacto va antes que
la vista, antes que hablar. Se trata de la primera lengua y la
ltima, y siempre dice la verdad. Es este sentido de retroali-
mentacin tctil, ms que la vista o el odo, el que nos ensea
qu esperar de las interacciones en el mundo real.
Son nuestras experiencias en el mundo real las que defnen
las expectativas de un usuario en el mundo virtual que se
encuentra dentro de tus aplicaciones.
Toma, como ejemplo, pulsar un botn. Una pulsacin real
de botn es una experiencia muy tctil. Tiene un comienzo y
un fnal. Sientes una satisfactoria confrmacin de tu accin.
En comparacin, pulsar un botn virtual se percibe hueco,
sin efecto hptico para simular esa misma confrmacin de la
accin. An ms, sin una confrmacin tctil hptica obligas al
usuario a confar en las seales visuales o auditivas, que son
ms estresantes que el simple uso del sentido del tacto.
La retroalimentacin hptica es an ms importante en
los videojuegos mviles; lo sabemos por nuestra experiencia
con los juegos de consola. Recuerdas cuando Sony lanz la
PS3 sin "DualShock" rumble pad? Los jugadores expresaron su
P
O
R




B
o
b

H
e
u
b
e
l
Implementando la Vibracin Hptica
199
descontento y, poco despus, Sony incorpor la retroalimen-
tacin DualShock a PS3. La misma satisfaccin respecto a la
retroalimentacin hptica se aplica a los juegos mviles. El
uso de efectos hpticos en tus juegos te ayudar a dar a tus
usuarios mviles lo que ya esperan de las consolas y, si diseas
bien tus juegos, tus usuarios los percibirn como ms realistas
y convincentes.
Al disear una experiencia hptica, ten en cuenta la ltima
experiencia del usuario. Dedica algn tiempo a la planifcacin
antes de iniciar tu implantacin hptica. Una vez que el
proyecto est defnido y tomando forma en tu mente, considera
las siguientes pautas:

Las sensaciones simples son a menudo las ms efectivas.
A veces es sorprendente darse cuenta de que algo como
una muy simple sensacin Pop o Click puede mejorar las
interacciones del men y aumentar la confanza del usuario
en la aplicacin.

Sensaciones sincronizados con los eventos de audio
e imagen, como un sencillo evento de click sobre un
botn, hacen que el total sea mayor que la suma de sus
partes. Ver, or, y sentir un objeto o actividad favorece la
armona sensorial de una manera superior a slo viendo y
escuchando.

Es malo molestar al usuario. Las sensaciones tctiles mal
elegidas pueden ser molestas y contraproducentes. Mientras
que un zumbido agudo puede ser muy efcaz como parte de
una alerta, si es continuo o recurrente puede causar que el
usuario abandone la aplicacin irritado.

Es malo confundir y abrumar al usuario. As como
reproducir demasiados sonidos bonitos simultneamente
se convierte en una cacofona, demasiadas sensaciones
convincentes ejecutadas a la vez o demasiado seguidas en
Implementando la Vibracin Hptica
200
tiempo y espacio pueden llegar a ser confusas y agobi-
antes.

La familiaridad facilita la experiencia del usuario. Los
efectos hpticos pueden transmitir informacin importante
al usuario que puede no ser posible o prctico proporcionar
a travs de grfcos o de sonido. Normalizacin y consisten-
cia son importantes. La limitacin del lenguaje de efectos
hpticos a un rango de sensaciones manejable hace que el
proceso de aprendizaje del usuario sea ms fcil porque hay
menos efectos hpticos que reconocer.
Casi todas las plataformas mviles permiten alguna forma de
control de retroalimentacin hptica por vibracin. Esta seccin
ser tu recurso para la comprensin de las clases y mtodos en
ellas.
Android
Android es nico para controlar las vibraciones. Ofrece soporte
nativo y tiene ms control de la vibracin que iOS. Adems,
hay maneras de extender este control de vibracin para crear
experiencias de retroalimentacin al estilo de consolas como
X-Box o PlayStation. Pero, tanto si utilizas los mtodos bsicos
como los extendidos indicados a continuacin, por favor ten
en cuenta que un usuario puede tener habilitados los efectos
hpticos con fnes de accesibilidad. Por ejemplo, el Servicio de
Accesibilidad KickBack proporciona retroalimentacin hptica
y est disponible como parte del proyecto de cdigo abierto
eyes-free
1
. Por lo tanto, ten en cuenta cmo los efectos
hpticos generados por tu aplicacin puede interactuar con, o
perturbar, tales servicios.
Para un control bsico de la vibracin en Android, primero
1 code.google.com/p/eyes-free
Implementando la Vibracin Hptica
201
debes habilitar el permiso andr oi d. per mi ssi on. VI BRATE
para permitir a tu aplicacin vibrar. A continuacin, usa
la clase Vi br at or
2
con la funcin get Syst emSer vi ce y
Cont ext . Vi br at or _Ser vi ce para llamar al servicio de
vibracin.
En el mtodo anterior se puede variar la duracin del evento
en milisegundos y establecer patrones de vibracin mediante
la creacin de tantos eventos de inicio y reposo como desees.
El mtodo bsico de control de vibracin Android slo permite
controlar la duracin de los eventos de vibracin.
Control Extendido de Vibracin en Android
Debido a que la plataforma Android es de cdigo abierto, hay al
menos una empresa que ofrece mtodos gratuitos para extender
el control de la vibracin en ella. Haptic SDK
3
de Immersion
Corporation permite un control total de la duracin del motor
de vibracin, su amplitud y frecuencia pulsante con una librera
de ms de 124 efectos predefnidos de retroalimentacin
hptica de vibracin. Con este tipo de control, los desarrol-
ladores de aplicaciones tienen la capacidad de disear efectos
de vibracin que rivalizan con los de consolas de videojuegos,
al mismo tiempo que ahorran batera.
Para los desarrolladores Android utilizando Unity3D, Mar-
malade o el GameMaker Studio de YoYo Games Pro, Immersion
ofrece ste mismo mtodo de inmersin prolongada a travs
de un plug-in que tambin se puede encontrar en la pgina
web del SDK. Los desarrolladores interesados en este control
de vibracin prolongada pueden descargar la gua de empresa
Quick Start Guide
4
, que explica cmo confgurar tu entorno
Eclipse y utilizar el mtodo Launcher para llamar a los efectos
2 developer.android.com/index.html#q=Vibrator
3 www.immersion.com/haptic/sdk
4 www.immersion.com/haptic/guide
Implementando la Vibracin Hptica
202
hpticos de la librera predefnida. En Google Play tambin se
puede descargar un par de aplicaciones de demostracin para
probar los efectos hpticos prediseados antes de usarlos en el
cdigo. Una de las aplicaciones se llama Haptic Muse y la otra
Haptic Effect Preview.
Otro de los benefcios de usar una librera de efectos
predefnidos es contar con una capa de abstraccin sobre el
hardware que compensa los diferentes tipos de motor entre
dispositivos, de tal manera que las sensaciones que creas se
mantienen similares para diversos fabricantes.
BlackBerry 10
BlackBerry ofrece el mismo control bsico
de vibracin que Android, pero sin extensio-
nes. Utiliza la clase Vi br at i onCont r ol l er
5

con st ar t Vi br at e( i nt dur at i on) y
st opVi br at e( i nt dur at i on) .
Adems, ahora BlackBerry incluye un parmetro de intensi-
dad (1-100) a disposicin de los desarrolladores.
Firefox OS
Firefox Mobile de Mozilla usa una API de webview que permite
generar arrays de vibraciones sencillas o pautadas en la forma
de una llamada a la funcin wi ndow. navi gat or . vi br at e
6

con parmetros de duracin en milisegundos. Los arrays de vi-
braciones pautadas usan duraciones alternativas de activacin y
pausa. Por ejemplo, el array wi ndow. navi gat or . vi br at e( )
puede reproducir vibraciones por un segundo, una pausa de
200 milisegundos, y volver a reproducir la vibracin por otros 2
5 developer.blackberry.com/search/?search=VibrationController
6 developer.mozilla.org/en-US/docs/WebAPI/Vibration
Implementando la Vibracin Hptica
203
segundos adicionales. Cuando el valor de la duracin es cero o
el array est vaco se cancelan todas las vibraciones en marcha.
iOS
La plataforma iOS permite a los desarrolladores muy poco
control sobre la vibracin de los dispositivos. El mtodo de
vibracin iOS indicado a continuacin se aplica slo a los
iPhones. iPads e iPods no tienen soporte a las vibraciones
actualmente.
Utiliza la clase SysSoundVi ewCont r ol l er
7
con la
funcin Audi oSer vi cesPl aySyst emSound y la constante
kSyst emSoundI D_Vi br at e para iniciar la vibracin en
el iPhone. La llamada a esta constante mantendr el
motor activo durante unos 400 mili-segundos. Adiciona-
lmente, existe el entorno iOS AudioToolbox, que utiliza
Audi oSer vi cesPl aySyst emSound method
8
para llamar a la
constante kSyst emSoundI D_Vi br at e que lanzar tambin
una vibracin de 400 mili-segundos.
PhoneGap
PhoneGap es una API webview propiedad de Adobe
Systems (vase el captulo sobre multiplataforma). El
mtodo de vibracin de PhoneGap es la llamada a la funcin
navigator.notifcation.vibrate function call
9
,que
incluye parmetros de duracin en milisegundos. Dado que
PhoneGap funciona en mltiples sistemas operaivos, necesi-
tars asegurarte de que tienes permisos de vibracin en cada
plataforma.
7 developer.apple.com/search/index.php?q=SysSoundViewController
8 developer.apple.com/search/index.php?q=AudioServicesPlaySystemSound
9 docs.phonegap.com/en/2.1.0/cordoba_notifcation_notifcation.md.html
Implementando la Vibracin Hptica
204
Es necesario tener en cuenta que en iOs el parmetro de
duracin de PhoneGap es ignorado y el dispositivo vibrar
utilizando la constante de iOS.
Tizen
Tizen, el nuevo sistema operativo impulsado por Samsung e
Intel, tiene dos entornos principales de desarrollo
10
; uno para
el desarrollo de aplicaciones nativas y otro para el desarrollo de
aplicaciones web utilizando la API de vibracin del W3C.

Los desarrolladores de aplicaciones nativas utilizan los
mtodos de inicio y parada de la clase Vi br at or
11
para el
control de la vibracin. El desarrollador puede especifcar
la intensidad y el pulso aadiendo valores en un array
de pautas que se pasa como argumento a la funcin
st ar t ( ) . Cada elemento en esa array tiene dos campos: el
de duracin indica la longitud de la vibracin en milise-
gundos, y el de intensidad marca la fuerza con la que se
ejecuta dicha vibracin. Los valores de intensidad van de 1
a 100 (mnimo a mximo), -1 es para la confguracin por
defecto del sistema, y 0 es para el modo silencio. Si deseas
renderizar ms de un efecto hptico, necesitas aadir
elementos adicionales tras el primero en el array de pautas.
El mtodo st op( ) slo es necesario si quieres terminar un
efecto de manera prematura (por ejemplo, en el caso de
una llamada entrante).

Los desarrolladores de aplicaciones web utilizan la
10 developer.tizen.org/documentation/dev-guide
11 developer.tizen.org/help/topic/org.tizen.native.appprogramming/html/
guide/system/vibrator_mgmt.htm
Implementando la Vibracin Hptica
205
llamada a la funcin navi gat or . vi br at e( ) .
12

El mtodo ofrece dos variantes: una que toma la
duracin de un efecto simple en milisegundos,
si ngl eVi br at i on( i nt dur at i on) , y otro que toma
un arra de tiempos de duracin. La segunda funcin,
pat t er nVi br at i on( i nt dur at i on on,
i nt dur at i on of f ) , permite controlar los pulsos de los
efectos pero no ofrece acceso al control de intensidad, al
contrario que en el caso de aplicaciones nativas.
Web/HTML5
Como en el caso de Tizen, el control de vibracin en HTML5
para el desarrollo de aplicaciones web se basa en utilizar la API
de vibracin del W3C, por lo se se usan tambin las mismas
llamadas a sus funciones.
Windows 8
Windows ofrece un mtodo bsico de control de vibracin, pero
actualmente sin extensiones de mtodo. Usa la
clase Vi br at eCont r ol l er
13
con los mtodos St ar t
& St op para hacer vibrar el motor del dispositivo de 0 a 5
segundos. Para un control ms afnado de la duracin, necesi-
tars aadir un mtodo Ti meSpan para poder usar valores de
milisegundos.
La clase mencionada de Windows 8 es la misma que la clase
previa en Windows 7.
12 developer.tizen.org/help/topic/org.tizen.web.appprogramming/html/
tutorials/w3c_tutorial/device_tutorial/managing_vibration.htm
13 social.msdn.microsoft.com/search/en-us?query=VibrateController
Implementando Realidad Aumentada
207
Implementando Realidad
Aumentada
La realidad aumentada (RA, del acrnimo ingls AR del trmino
Augmented Reality) es algo de lo que probablemente hayas
odo hablar bastante los ltimos aos. Aparece por todas
partes: juegos RA, catlogos RA, posters RA, tatuajes RA, RA en
coches, en aplicaciones, en publicidad, etctera. El mercado de
la RA est creciendo exponencialmente: para el 2020 el nmero
de consumidores que usen RA llegar a un billn. Durante la
conferencia TED de Tomi Ahonen del pasado ao, Tomi declar
que la RA sera el octavo medio de masas, y afrm que con
la popularizacin de las gafas inteligentes, la demanda de
aplicaciones de RA crecera signifcativamente. Esta opinin
est soportada por estudios de varias empresas, por ejemplo
el informe de Semico 'Augmented Reality: Envision a More
Intelligent World'
1
que predice benefcios derivados por valor
de $600 billones (USD) para el 2016. Adicionalmente, Research
and Markets ha vaticinado un crecimiento anual del 95,35%,
con benefcios de $5.144 millones (USD) para el 2016 genera-
dos directamente por aplicaciones RA
2
.
Pero, qu es exactamente la Realidad Aumentada? Es una
tecnologa que ampla el mundo real aadiendo un elemento
virtual. La realidad aumentada visual es su forma ms comn,
e incluye objetos tridimensionales o capas bidimensionales con
textos o imgenes que se funden con el entorno real.
1 www.semico.com/content/augmented-reality-envision-more-intelligent-world
2 www.researchandmarkets.com/reports/1963197
P
O
R




M
o
s
t
a
f
a

A
k
b
a
r
i
Implementando Realidad Aumentada
208
Escenarios de RA en Contextos Mviles
La RA Mvil se utiliza en situaciones en que la informacin
adicional puede aumentar la efciencia, la efectividad y la satis-
faccin mientras se est utilizando. Es especialmente adecuada
para aquellas aplicaciones en las que las personas se enfrentan
con una gran cantidad de datos y necesitan procesarlos en
un corto perodo de tiempo. Integrando informacin virtual
en la transmisin en tiempo real en pantalla, la atencin del
usuario ya no necesita cambiar entre la pantalla del disposi-
tivo mvil y el entorno. Las soluciones mviles de Realidad
Aumentada tienen un muchas reas de aplicacin, tales como
la corporativa, el marketing, la educacin o simplemente para
entretenimiento. A continuacin algunos ejemplos:

Navegadores de Realidad Aumentada: Navegadores-RA
como Layar
3
y Wikitude
4
pueden sobreimprimir la visin
en directo del mundo fsico real que te rodea con datos
basados en la localizacin. Por ello, la ubicacin del
usuario se determina por GPS y la informacin sobre los
PDIs (puntos de inters o POIs, acrnimo del trmino
ingls Point Of Interest) cercanos se muestra en la pantalla
del smartphone. En la mayora de casos, la informacin se
muestra como iconos seleccionables o fragmentos de texto.
Wikitude, adems, ofrece una conexin a la Wikipedia para
ms informacin. Blippar
5
es otro ejemplo de uso de RA
para darle vida a la publicidad.

Aplicacin de Catlogo IKEA: El usuario puede utilizar
su dispositivo mvil para escanear determinadas pginas
del catlogo de Ikea para mostrar informacin adicional
de productos, como las opciones de personalizacin e
3 layar.com/products/app/
4 wikitude.com/app/
5 blippar.com/
Implementando Realidad Aumentada
209
imgenes adicionales. La aplicacin utiliza software de
reconocimiento de imgenes de Metaio
6
en vez de emplear
cdigos QR, ms habituales. La aplicacin permite a los
usuarios colocar muebles virtuales directamente en su
hogar u ofcina.

AR Jump'N'Run: Es una aplicacin basada en localizacin
para smartphones Android desarrollada con DroidAR
7
. Se
puede jugar en interiores y exteriores, ya sea usando el
sistema de posicionamiento global (GPS), reconocimiento
de pasos, o ambos. El jugador camina a travs de un mundo
enriquecido virtualmente utilizando su dispositivo Android
como visor y recogiendo objetos en 3D; estos pueden ser
hostiles o amigables. El juego tambin incluye un editor de
mapas que permite a los jugadores crearlos y editarlos (por
ejemplo, aadiendo objetos en 3D).

Ingress: El mundo que te rodea no es lo que parece.
Nuestro futuro est en peligro y debes elegir un bando.
sta es la introduccin al juego de RA Ingress
8
desarrollado
por Niantic Labs, una startup de Google. El juego se basa
en portales colocados por todo el mundo. Los usuarios se
unen a un equipo y su misin es destruir portales de los
oponentes y, por supuesto, proteger los suyos.

Audi eKurzinfo: Tambin creada por Metaio. Audio ofrece
un manual para su modelo A3 a travs de una aplicacin de
6 metaio.com
7 github.com/bitstars/droidar
8 www.ingress.com
Implementando Realidad Aumentada
210
realidad aumentada para iOS
9
. Cubre ms de 300 elementos
diferentes del coche, todos ellos fcilmente identifcables
con la cmara del mvil. Si, por ejemplo, se muestra un
smbolo de alerta en el interior del vehculo, el usuario
puede escanearlo con la aplicacin para poder dilucidar el
problema con ese componente.
Bases del Desarrollo RA
Esta seccin te ofrece una introduccin general a los conceptos
clave necesarios para crear aplicaciones RA. Una vez los
comprendas, debers ser capaz de elegir el entorno de desar-
rollo adecuado para tu proyecto.
El Mundo Real y el Virtual
La RA implica colocar objetos artifciales en el mundo real
utilizando una capa virtual. sta capa virtual, o mundo virtual,
y su sistema de coordenadas, est conectado al mundo real por
puntos de referencia. Puedes, por ejemplo, colocar un objeto
virtual en una localizacin GPS especfca y que el objeto
quede vinculado a esas coordenadas. Con marcadores visuales o
imgenes, enlazas la realidad aumentada al objeto del mundo
real. Por ejemplo, un juego impreso en una caja de cereales
puede ser colocado en cualquier lugar del mundo utilizando una
referencia relativa a la caja de cereales.
Los puntos de referencia se determinan con seguimiento.
Tecnologas de seguimiento comunes incluyen el GPS, sensores
pticos, brjula, acelermetro, girscopo y deteccin de
pasos. Otros conceptos son aquellos basados en marcadores,
sin marcadores, o en el seguimiento hbrido. Los marcadores
son una solucin simple y econmica para identifcar objetos.
9 youtube.com/watch?v=TDTWOlbWBXI
Implementando Realidad Aumentada
211
Procesando la informacin con la referencia del tamao real
del marcador, un sistema de procesado de imagen calcula la
distancia entre el dispositivo y el marcador. El sistema sin mar-
cadores utiliza elementos naturales en vez de los marcadores
artifciales, los cuales pueden ser pautas bidimensionales (por
ejemplo carteles publicitarios) o incluso tridimensionales (por
ejemplo edifcios). Las imgenes capturadas se cotejan en una
base de datos para detectar una concurrencia, lo que requiere
complejos algoritmos y una alta capacidad de procesamiento.
La hbrida combina diferentes fuentes de datos de posicin,
tales como GPS, deteccin de objetos en 3D, de marcadores y
de pasos. Esto permite un mayor nivel de precisin tanto en la
posicin como en la deteccin del movimiento.
Mapeando Dos Mundos
Para aplicaciones de RA basadas en localizacin, es necesario
un mapeo mutuo entre la siempre cambiante posicin en el
mundo real y la posicin en el mundo virtual. Motores de Ren-
derizado como OpenGL reducen la complejidad de este proceso
e incrementan su velocidad y precisin en tiempo real. El motor
tambin se encarga de mapear la posicin de la cmara virtual
contra la real y garantiza unas transiciones fuidas de cmara
cuando dichas posiciones cambian. Para hacerte la vida ms
fcil como desarrollador, puedes utilizar motores extendidos
como gameplay
10
o Unity
11
.
Como elemento central, los datos de cmara tambin pueden
ser enviados a otros componentes. Por ejemplo, uno de colisin
puede calcular fcilmente la distancia entre objetos virtuales y
la imagen capturada por la cmara.
10 www.gameplay3d.org/
11 unity3d.com
Implementando Realidad Aumentada
212
Creando Elementos Virtuales
Los elementos virtuales estn presentes como objetos 3D y 2D
que pueden presentar diferentes lgicas de comportamiento:
Algunos pueden ser recogidos, otros serguir al usuario, y otros
pueden permanecer estticos y no aceptar interaccin alguna.
Es posible crear tu propio contenido de RA fcilmente con
software como Metaio Creator, Layar Creator o Wikitude Studio.
Con una aplicacin web puedes colocar aumentos de realidad en
una imagen objetivo y, cuando hayas elegido y colocado todos
los aumentos, exportarlos a tu proeycto como una aplicacin
de RA. Con esta aplicacin, los aumentos aparecern cuando la
imagen objetivo sea reconocida por la aplicacin.
Las herramientas de Metaio, Wikitude y Layar slo ofrecen
aumento basado en imgenes. Si quieres crear otros escenarios
debers emplear una tcnica llamada Localizacin y Mapeado
Simultneos (o SLAM, acrnimo del trmino en ingls Simul-
taneous Localization And Mapping). Se trata de una potente
tcnica de visin por computadora basada en secciones nicas
e identifcables en una imagen, llamadas celdas o celdillas
(en ingls se utiliza el trmino features). stas se unen al
mundo real en un espacio 3D en el cual el dispositivo puede
moverse. La nube 3D creada puede utilizarse para aumentar
objetos del mundo real o detectar formas. Otra parte de la
visin por computador es el reconocimiento de imgenes. La
imagen en cuestin puede ser utilizada como referencia de
posicin para el mundo virtual (compralo con el ejemplo de la
caja de cereales). Tanto SLAM como la visin por computador
exigen elevadsimas capacidades de computacin para poder ser
utilizadas en tiempo real. Las limitaciones y las capacidades del
hardware deben ser tenidas en cuenta.
Implementando Realidad Aumentada
213 213
Combinando Capas de Aplicacin
Un importante elemento de la RA es poder colocar algo sobre la
imagen capturada por la cmara. Dependiendo de los requisitos
de tu aplicacin, querrs colocar grfcos 2D o 3D y utilizar
sus respectivas APIs. Una capa superpuesta en 2D suele ser
sufciente para navegadores de POIs.
Recomendamos fervientemente utilizar un entorno de
renderizado como OpenGL, antes que intentar volver a inventar
la rueda. se entorno utiliza la posicin del usuario, orientacin
del dispositivo, otros datos de sensores, o el anlisis de imagen
y traduce la informacin para mostrar el contenido de manera
acorde. Si el componente de renderizado queda aislado del
resto del cdigo de la aplicacin podr ser cambiado con mayor
facilidad en el futuro, por ejemplo para sustituirlo por una
solucin de renderizado ms avanzada.
Quizs quieras aadir elementos tales como la interfaz de
un pequeo radar para visualizar la posicin de los objetos
virtuales o algn botn sencillo para interactuar con el mundo
virtual. Asegrate de ceirte a los patrones y diseos propios
de la plataforma, e implementarlos en una capa aparte para
mantenerte fexible.
Implementando Realidad Aumentada
214
Componiendo un Mundo Virtual con Mltiples Capas
La mejor prctica para componer un mundo virtual es utilizar
una estructura arbrea y colocar los objetos virtuales en
diferentes capas: una para objetos fjos en el fondo, que no
necesita ser actualizada ni interacciona con el usuario, y
otras capas para objetos mviles o elementos de la interfaz de
usuario.
Slo debera actualizar y renderizar objetos cercanos al
usuario, y asegurarte de hacer uso de estructuras quad (cuater-
narias). Un rbol quad es una estructura de datos que permite
a tu aplicacin obtener todos los objetos en un cuadrante
(bounding box) de manera efcaz. Dependiendo del hardware del
dispositivo, se puede utilizar un radio diferente para mantener
el rendimiento de la aplicacin.
Tambin recomendamos utilizar un mecanismo de actual-
izacin que dispare las actualizaciones y llame a los correspon-
dientes mtodos, por ejemplo cada 20 mili-segundos. Los nodos
en el rbol deciden de manera individual qu hijos deberan ser
objeto de esas llamadas de actualizacin. Un rbol quad, por
ejemplo, slo actualizar aquellos objetos cercanos al usuario
para mantener el proceso de manera efciente. Una estructura
bsica de lista podra actualizar todos sus hijos y es por tanto
ms adecuada para elementos que no tienen una posicin
virtual (tales como las estadsticas de un juego de lgica), o
que no tienen que ser actualizados en absoluto. El concepto
exacto de composicin del objeto depende del escenario de la
aplicacin y no puede ser identifcado de manera universal.
Implementando Realidad Aumentada
215
SDKs de Realidad Aumentada
ARLab
ARLab ofrece SDKs separados para diferentes mtodos de
seguimiento, uno para localizacin en 2D y contenido basado
en sensores tales como POis, similar a las primeras versiones
de Layar y Wikitude, asi como SDKs para identifcar y trazar
imgenes y objetos, crear botones virtuales y usar un motor de
3D. Cabe destacar que las licencias para los SDKs tienen que
ser adquiridas por separado para iOS y Android, y que cada una
tiene un coste diferente, desde los 99 a los 299.
www.arlab.com
ARPA SDK
El ARPA SDK provee de seguimiento de imgenes, marcadores,
GPS y un mdulo de seguimiento facial. Ofrece tambin una
extensin Unity, de manera que posibilita escenarios en RA.
No dan informacin concreta acerca de sus precios y todas
las aplicaciones que utilizan el SDK deben ser licenciadas de
manera independiente. Otra importante restriccin es que slo
soporta dispositivos Android 4.0 o superiores. Hasta la fecha,
hemos visto un buen rendimiento en aplicaciones de RA creadas
por ellos tanto para ordenadores de sobremesa como el iPad.
www.arpa-solutions.net/ARPA_SDK
DFusion
El DFusion SDK de Total Immersion ofrece desde extraccin
de celdas en 2D al aumentado de imgenes y es muy similar a
otros SDKs, como por ejemplo los de metaio, Qualcomm y Layar.
Algunos paquetes del SDK tambin incorporan seguimiento
facial y libreras de deteccin de movimiento. Otra ventaja
sobre la mayora de SDKs es su licencia gratuita.
www.t-immersion.com
Implementando Realidad Aumentada
216
DroidAR
DroidAR SDK se ha creado para el desarrollo de aplicaciones
de RA Android basadas en localizacin y marcadores. Permite
trazar posicionamiento en 3D va SLAM y detectar y reconstruir
objetos en 3D. Para el seguimiento, utiliza una combinacin
de trazado de localizacin, de marcadores, y un algoritmo de
deteccin de pasos para permitir tambin grandes escenarios
en interiores. DroidAR v1 es uno de los pocos SDKs de RA
completamente open source y se puede extender gratuitamente.
DroidAR est respaldado por una comunidad de alrededor de
6.000 desarrolladores y se ha utilizado en varias aplicaciones,
como la CHIO app 2013.
github.com/bitstars/droidar
Layar
En sus comienzos, Layar era una plataforma RA basada
nicamente en la localizacin, con capas de fundido de entrada
y muy limitadas posibilidades de interaccin para el usuario.
Actualmente, Layar ha cambiado su enfoque hacia la extracci
de celdas en 2D para aumentar imgenes. Su nuevo Vision SDK
y la herramienta Layar Creator estn especialmente diseadas
para extender contenido impreso. El Layar Player SDK para iOs
hace posible construir aplicaciones Layar que no requieren
el explorador Layar. El Vision SDK puede ser licenciado por
2.500/ao y el Geo SDK por 7.500/ao. Los SDKs vienen con
una marca de agua que puede ser eliminada por un importe
adicional de 7.500/ao.
layar.com
Metaio
Metaio GmbH fue pionero en el mercado de la Realidad
Aumentada. El SDK de Metaio se centra en el aumento de
imgenes en 2D, como aquellas de revistas o catlogos. La
Implementando Realidad Aumentada
217
versin profesional del SDK tambin soporta reconocimiento
de objetos en 3D tales como el empaquetado de un producto,
una estatua o la fachada de un edifcio. Su SDK viene con un
potente motor de renderizado en 3D. Es posible usar el SDK
gratuitamente si se muestra una marca de agua de Metaio y la
versin profesional sin marcas de agua cuesta 4.950. El SDK
ha sido descargado ms de 50.000 veces y es utilizado en ms
de 1.000 aplicaciones.
metaio.com
PointCloud SDK
El PointCloud SDK se especializa en seguimiento SLAM a
pequea escala para juegos de mesa y otros espacios reducidos.
El plugin Unity se encuentra disponible en estado beta. El SDK
an est en sus inicios pero parece prometedor, puede usarse
gratuitamente pero el logo de PointCloud debe ser mostrado
permanentemente en el aplicacin. Si deseas eliminarlo,
debers contactar a 13th Lab para ms detalles. La versin iOS
puede ser descargada desde el site de PointCloud, y tambin se
puede solicitar la versin alpha para Android.
developer.pointcloud.io/sdk
Vuforia
El Vuforia SDK de Qualcomm puede usarse de manera gratuita
y tiene una extensin Unity, as que es una buena eleccin
para la deteccin de imgenes y escenarios aumentados. Ten
en cuenta que slo soporta deteccin de imgenes en 2D y el
reconocimiento de imgenes guardadas localmente. Se pueden
componer mltiples mercados en 2D para montar uno slo, pero
an no es posible detectar objetos 3D arbitrarios. Adems, no
puede ser usado para crear aplicaciones basadas en localizacin
que utilicen los movimientos del usuario o geo-referencias. Ex-
isten unos 80.000 desarrolladores registrados, y el Vuforia SDK
218
ha sido descargado m de 100.000 veces. Muchos proyectos
comerciales lo utilizan.
vuforia.com
Wikitude SDK
Wikitude es un explorador de POIs basado de localizacin. Un
escenario clsico de uso donde Wikitude ofrece una solucin
adecuada es la bsqueda de POIs (por ejemplo respondiendo a
la pregunta Dnde est la ofcina de correos ms cercana?).
Wikitude est diseado enfocado al contenido esttico y no
permite escenarios interactivos. Si usas nuevas versiones
para construir tu propio explorador Wikitude, tambin puedes
usar HTML5, Titanium o Phonegap. Incluso es compatible con
BlackBerry 10. Wikitude estdisponible en 32 lenguas y tiene
ms de 13 millones de usuarios en todo el mundo. Adems del
navegador RA, Wikitude ofrece una herramienta para aumentar
imgenes con Wikitude Studio, lo que ofrece un funcionamiento
similar a Metaio Creator y Layar Creator.
wikitude.com/developer
Seguridad de la Aplicacin
220
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 confanza.
Muchas de estas aplicaciones se aprovechan de tal cercana
y confanza. 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 junio
del 2013 Kaspersky Lab inform de que haba contabilizado
100.000 extractos de cdigo malicioso (malware) en aplica-
ciones Android pertenecientes a 629 familias de malware
1
. Los
datos histricos de la red y las defensas de punto fnal (como
antivirus) no son sufcientes. Incorporar medidas de seguridad
en una aplicacin mvil es un tema crtico.
La arquitectura de las aplicaciones mviles sigue evolucio-
nando. 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 combi-
nacin de funcionalidad de aplicacin nativa con webviews. La
1 securelist.com/en/analysis/204792299/IT_Threat_Evolution_Q2_2013#16
P
O
R




D
e
a
n

C
h
u
r
c
h
i
l
l
Seguridad de la Aplicacin
221
mayora de aplicaciones mviles necesitan conectarse con los
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 fltrado de informacin sensible. Las
pruebas de penetracin en aplicaciones son necesarias para
asegurarse que los controles de identifcacin, 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 confguracin 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 confdencial, como por
ejemplo los contactos, o hacer llamadas telefnicas de manera
encubierta y enviar mensajes SMS a nmeros de tarifcacin
adicional.
El desarrollador de la aplicacin puede estar preocupado
por su reputacin, prdida de ingresos y de propiedad intelec-
tual, 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
222
Amenazas a tus Aplicaciones
En algunas plataformas (iOS y Android en particular), desactivar
la verifcacin de frmas es una prctica bastante comn.
Necesitas considerar si es relevante o no el que alguien pueda
modifcar tu cdigo y ejecutarlo en un dispositivo jailbreakeado
o ruteado. Un punto obviamente clave sera la eliminacin
de una verifcacin 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
223
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 imple-
mentar algunas de las caractersticas del lenguaje (por ejemplo,
la refexin). 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 confguracin 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 correcto del
Seguridad de la Aplicacin
224
conmutador del compilador - f vi si bi l i t y
2
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 grfca 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 grfca 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 recodifcando 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 fujo
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
225
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 trfco de red. Considera
la posibilidad de proteger las comunicaciones sensibles en
red, por ejemplo mediante el uso de SSL para el trfco HTTP
entre tu aplicacin y los servidores. El protocolo SSL protege
los datos en trnsito, pero slo desde la aplicacin hasta el
servidor web, donde termina la sesin SSL. 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 fabilidad en cuanto
autenticacin y transporte de datos respecto a SSL.
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 criptogrfco 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 con-
Seguridad de la Aplicacin
226
oca. Se necesita una tcnica para detectar cundo el cdigo ha
sido manipulado. Hay herramientas disponibles que encriptan/
desencriptan cdigo sobre la marcha, ejecutan las sumas de
verifcacin 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 SSL, un proxy web interceptor (como Paros)
puede ser confgurado con una conexin WiFi que inspeccionar
el trfco SSL. Los atacantes pueden entonces manipular los
datos en trnsito, con fnes 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 Criptogrfcos
Una herramienta activa contra la manipulacin puede ayudar
a detectar o prevenir algunos ataques a claves criptogrfcas,
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
227
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 aplicacio-
nes, pero vigila no violar la privacidad de los usuarios mediante
el almacenamiento de informacin de ubicacin, o registrar
informacin personalmente identifcable de los mismos. Algunos
pases tienen leyes que restringen la informacin de segui-
miento 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.
No confes en que los almacenes nativos de claves mantendrn
Seguridad de la Aplicacin
228
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 especifcados 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 Proguard
3
, una herramienta de cdigo abierto, y
GuardIT de Arxan
4
.
Dos comercializadores de herramientas de proteccin de
cdigo gestionado (Java y .NET) son Arxan Technologies
5
y
PreEmptive Solutions
6
.
La mayora de vendedores de herramientas de proteccin de
cdigo nativo y libreras criptogrfcas de caja blanca son Arxan
e Irdeto
7
.
3 www.proguard.sourceforge.net
4 arxan.com
5 arxan.com
6 preemptive.com
7 www.irdeto.com
Seguridad de la Aplicacin
229
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.
Sniffng
Una herramienta web proxy estndar es Paros
8
, y una her-
ramienta estndar de sniffng de red disponible en las platafor-
mas habituales es Wireshark
9
.
Decompilado
Vase el decompilador Hex Rays
10
.
Aprende Ms
A continuacin, algunos recursos y referencias tiles que
pueden ayudarte:

Apple ofrece una gua general de seguridad de software
11
.
Tambin incluye mltiples enlaces a temas ms detallados
de su plataforma.

Hay cursos comerciales de entrenamiento disponibles para
iOS y Android, y el Lancelot Institute
12
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 Platform
13

8 sourceforge.net/projects/paros
9 sourceforge.net/projects/wireshark
10 www.hex-rays.com
11 developer.apple.com/library/mac/navigation/#section=Topics&topic=Security
12 www.lancelotinstitute.com
13 shop.oreilly.com/product/0636920022596.do
Seguridad de la Aplicacin
230
y otro para iOS, Jonathan Zdziarski: Hacking and Securing
iOS Applications
14
.

Charlie Miller et al. publicaron el iOS Hackers Handbook
15
,
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 2011
16
.

Qualsys Labs
17
ofrece una herramienta de testeo SSL.

Extensas guas y herramientas de testeo gratuitas de
aplicaciones son ofrecidas por OWASP
18
, incluyendo el
OWASP Mobile Security Project
19
.

AT&T ofrece una herramienta de cdigo abierto de moni-
torizado de rendimiento de aplicaciones Android llamada
AT&T's Application Resource Optimization tool
20
.
Conclusiones
Cada vez hay mayor confanza en las aplicaciones mviles, pero
estn expuestas a mucha gente que quisiera aprovecharse de
tal confanza. El nivel adecuado de seguridad de una aplicacin
es algo que debe considerarse para cada caso en particular. Al
fnal, 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
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/
18 www.owasp.org
19 www.owasp.org/index.php/OWASP_Mobile_Security_Project
20 developer.att.com
Seguridad de la Aplicacin
231
como objetivo. Usa tcnicas como el modelado de amenazas
para identifcar 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.
Testeando tu Aplicacin
233
Testeando tu Aplicacin
Despus de todo ese duro trabajo creando tu aplicacin,
qu tal probarla antes de publicarla? Probar aplicaciones
mviles puede parecer una tarea tediosa pero los errores en tu
aplicacin sern siempre pblicos, y recuperar tu credibilidad
es difcil cuando tu aplicacin tiene una mala puntuacin en
la tienda de aplicaciones. Testear una aplicacin completa
de manera efectiva puede ser complejo cuando necesitas
combinar pruebas automatizadas e interactivas en un rango
de dispositivos. Afortunadamente, un gran nmero de las ms
plataformas de desarrollo mvil ms importantes incluyen la
automatizacin de pruebas en sus herramientas bsicas, entre
ellas iOS y Android, y existen herramientas de automatizacin
de pruebas multiplataforma para las plataformas ms populares;
algunas son gratuitas y de cdigo abierto mientras que otras
son de pago.
Publicar de manera continua exige testear de manera
continua, y las aplicaciones viables necesitan ser actualizadas
peridicamente. Las actualizaciones pueden incluir mejoras para
hacerlas compatibles con nuevas versiones de plataformas y
modelos, nuevas funcionalidades y otros aadidos. Por tanto,
testear no es una tarea puntual; las aplicaciones de alta calidad
tienen detrs un continuo y optimizado testeo, incluyendo
pruebas en produccin; dichas pruebas incluyen pruebas
participativas y validaciones, as como la deteccin temprana
de problemas antes de que arraiguen.
En este captulo se tratan los temas generales, las pruebas
para plataformas especfcas se explican en sus captulos
correspondientes.
P
O
R




J
u
l
i
a
n

H
a
r
t
y
Testeando tu Aplicacin
234
Testeabilidad: El Caballo Ganador
Si quieres encontrar la manera de probar tu aplicacin efcaz
y efcientemente, comienza por disear y emplear medidas
para testearla; esto se aplica especialmente en el caso de las
pruebas automatizadas. Por ejemplo, utilizar tcnicas como la
inyeccin de dependencias en el cdigo te permite reemplazar
servidores reales (tcnica lenta y precaria) con servidores simu-
lados (controlable y rpida). Usa identifcadores nicos y claros
para los elementos clave de la interfaz de usuario. Si mantienes
sin cambios tus identifcadores, tus pruebas requerirn menos
mantenimiento.
Separa el cdigo en mdulos testeables. Hace aos, cuando
los dispositivos mviles y herramientas de software eran muy
limitados, los desarrolladores optaban por "optimizar" su
cdigo mvil en monolticas gotas de cdigo; sin embargo, los
actuales dispositivos y plataformas mviles implican que esta
forma de "optimizacin" es innecesaria e incluso contraprodu-
cente.
Ofrece maneras de consultar el estado de la aplicacin,
posiblemente a travs de una interfaz de depuracin personal-
izada. De lo contrario, t o tu equipo de pruebas podrais pasar
mucho tiempo tratando de entender cules son los problemas
que se producen cuando la aplicacin no funciona como se
esperaba.
Desarrollo Guidado por Pruebas
Hay varias maneras de disear e implementar software. El
Desarrollo Guiado por Pruebas (o TDD, del trmino ingls Test-
Driven Development) es un enfoque donde los desarrolladores
escriben pruebas automatizadas en paralelo a la escritura del
cdigo principal de la aplicacin. Las pruebas automatizadas
Testeando tu Aplicacin
235
incluyen pruebas unitarias, que se tratarn en la siguiente
seccin.
TDD es a la vez una actitud y una prctica. Requiere una
cierta disciplina para escribir las pruebas, incluso cuando las
cosas se ponen difciles, pero mediante la diligente prctica
de TDD, los desarrolladores tienden a escribir cdigo de mejor
calidad, ms simple y limpio, que tambin es ms fcil de
mantener en el futuro (ya que estn protegidos y apoyados por
un conjunto de pruebas automatizadas que se pueden ejecutar
durante el mantenimiento y la revisin del cdigo fuente de la
aplicacin).
El enfoque puro se da cuando las pruebas se escriben
primero, y se ejecutan, antes de que se escriba nuevo cdigo de
la aplicacin. Se espera que las nuevas pruebas fallen, es decir,
que reporten fallos en el comportamiento de la aplicacin.
Dichos fallos expresan la discrepancia entre lo que la aplicacin
necesita hacer y lo que hace actualmente. Ahora, el desarrol-
lador tiene una forma simple, automatizada, para probar sus
modifcaciones en el cdigo fuente de la aplicacin. Una vez
que se ha escrito sufciente software para realizar todos los
tests a pasar, tenemos la confanza de que la aplicacin cumple
con los requisitos especifcados por esas pruebas.
Si bien es posible que hayan cumplido con los requisitos de
negocio, es posible que decidamos que nuestro trabajo no est
fnalizado todava. Por ejemplo, puede haber duplicaciones,
complejidad innecesaria, y otros defectos conocidos en la
implementacin. Ahora tenemos la oportunidad de revisar y
mejorar el cdigo fuente a travs de un proceso conocido como
"refactoring". Es en el refactoring donde los desarrolladores
mejoran la implementacin, y en l las pruebas automatizadas
siguen siendo ejecutadas contra el cdigo mejorado.
A pesar de que TDD es toda una batalla cuando se utilizan
las herramientas actuales de testeado automtico mvil,
muchas personas han aportado ejemplos del uso de TDD con
Testeando tu Aplicacin
236
xito, por ejemplo, el libro de Graham Lee Test-Driven iOS
Development
1
. Tambin puedes considerar usar TDD para los
aspectos genricos de la aplicacin.
Pruebas Unitarias
Consisten en escribir pruebas automatizadas que prueban
pequeas porciones de cdigo, por lo general slo unas pocas
lneas de cdigo fuente. Generalmente, deben ser escritas por el
mismo desarrollador que cre el cdigo fuente de la aplicacin,
ya que refejan cmo se espera que funcionen las seccione de
cdigo a nivel individual.
Las pruebas unitarias tienen una larga tradicin en el desar-
rollo de software, donde JUnit
2
ha generado entornos similares
para prcticamente todos los lenguajes de programacin que se
usan para desarrollar aplicaciones mviles.
Las pruebas unitarias son slo un aspecto de las pruebas
automatizadas, por lo que no son sufcientes en s mismas para
acreditar el funcionamiento de una aplicacin. Ayudan a los de-
sarrolladores a entender lo que se espera que hagan los bloques
individuales del software. Pruebas adicionales, incluyendo otras
formas de pruebas automatizadas, pueden ayudar a aumentar la
confanza en la aplicacin.
Prcticas Efcaces de Testeo
Necesitars probar de manera efcaz si quieres detectar
problemas antes de que sean descubiertos por tus usuarios.
Los equipos grandes suelen contar con especialistas. Los tests
efcaces implican conocimiento de los dispositivos, platafor-
mas, y cmo de similarmente se comportan las aplicaciones.
1 informit.com/store/product.aspx?isbn=0321774183
2 en.wikipedia.org/wiki/JUnit
237
Testeando tu Aplicacin
Necesitas maneras efcaces de confgurar los dispositivos, por
ejemplo para testear aplicaciones multilinges, y tambin
necesitars hacer las pruebas bajo condiciones realistas, que
sean similares a aquellas en las que tus usuarios utilizarn tu
aplicacin. Testdroid tiene una buena lista de verifcacin
3
para
infundir conocimiento experto de testeo en tu equipo.
A continuacin, algunos temas para comenzar.
Testeo Interactivo
La variedad y el movimiento pueden ayudar a exponer los
errores que permanecen latentes cuando se prueba la aplicacin
sobre un pequeo conjunto de dispositivos en un lugar fjo,
como tu lugar de trabajo. Aprende de tus usuarios, cmo
usan tu aplicacin, o aplicaciones similares? Entonces, disea
pruebas que imiten las maneras que tienen de utilizar aplicacio-
nes y dispositivos.
Vale la pena considerar las directrices en appqualityalliance.
org al disear casos de prueba. Por ejemplo, se incluyen prue-
bas de la aplicacin para ver lo que sucede cuando se recibe
una llamada entrante, y cuando el usuario cambia el telfono a
"modo de vuelo".
3 testdroid.com/testdroid/6336/get-the-superb-expertise-in-your-testingqa-
team
Testeando tu Aplicacin
238
Las prximas secciones describen tres aproximaciones
diferentes al testeo interactivo.

Dispositivos fsicos: por qu las pruebas con telfonos
reales son importantes.

Control remoto: utilizando telfonos que no estn en tus
manos fsicamente, ya estn a cientos o miles de kilmet-
ros e incluso en otro continente.

Testeo crowd sourced: en el que otros probadores
realizan tests en tu nombre.
Dispositivos Fsicos y Virtuales
Los dispositivos fsicos son aquellos reales, los que puedes
tener en la palma de tu mano. Los dispositivos virtuales son
software que simulan un dispositivo dentro de otro ordenador.
Ambos son plataformas tiles testear probar aplicaciones
mviles.
Los dispositivos virtuales son, generalmente, gratuitos
y disponibles de manera inmediata para instalar y utlizar
aplicaciones. Algunas plataformas, Android inclusive, permiten
crear dispositivos personalizados, por ejemplo con una nueva
resolucin de pantalla, que podemos usar para probar nuestras
aplicaciones incluso antes de que el hardware adecuado est
disponible. Proveen de capacidad de testeo para tu aplicacin.
Las mayores diferencias incluyen: rendimiento, seguridad y
modelo de interaccin con ellas comparado a lo que seran
dispositivos reales. Estas diferencias pueden afectar la validez
de los resultados de las pruebas.
El conjunto de dispositivos de pruebas tiene que ser revisado
de manera continua a medida que el ecosistema evoluciona.
Tambin puede que identifques nuevos dispositivos que tu
Testeando tu Aplicacin
239
aplicacin no soporta an. La siguiente imagen ilustra dichos
conceptos.
En ltima instancia tu software necesita funcionar en
telfonos reales, como aquellos utilizados por los usuarios de
tu objetivo de mercado. Las caractersticas de rendimiento de
diferentes modelos de telfono varan enormemente de unos a
otros y del dispositivo virtual en tu ordenador, as que debes
comprar, mendigar, pedir prestados, varios telfonos sobre los
que probar. Un buen comienzo es elegir una combinacin de
los populares, los ms recientes y los modelos que incluyen
caractersticas especfcas o caractersticas como: pantalla
tctil, teclado fsico, resolucin de pantalla, chipset de redes,
etctera. Prueba el software en al menos un dispositivo de
gama baja o antiguo si quieres que los usuarios con esos
dispositivos tambin estn contentos.
Algunos ejemplos de reas a probar en dispositivos fsicos:
Installed
Device
Database
Upcoming user group
The biggest grower compared
to the previous period
New user group
The most interesting
device or platform
Existing user group
The optimal mix to support
Externals
The biggest group that outside the
target and not using the app.
Target
Device
Database
Possible
Device
Database
Testeando tu Aplicacin
240

Navegacin de la interfaz de usuario: por ejemplo,
pueden los usuarios utilizar la aplicacin con una sola
mano? Efectos de las diferentes condiciones de ilumi-
nacin: la experiencia de la interfaz de usuario puede ser
diferente bajo luz solar real cuando se est en la calle.
Se trata de un dispositivo mvil, la mayora de usuarios
estarn en movimiento. Gira la pantalla y asegrate de que
la aplicacin sigue siendo atractiva y funcional.

Localizacin: si usas informacin de localizacin en tu
aplicacin, muvete, tanto rpido como despacio. Ve a
lugares con cobertura de red y GPS irregular y mira cmo se
comporta tu aplicacin.

Multimedia: el soporte a audio, la reproduccin de vdeo
y la facilidad de grabacin pueden diferir dramticamente
entre dispositivos y sus respectivos emuladores.

Conectividad a Internet: establecer una conexin a
Internet puede llevar una cantidad increble de tiempo. El
retardo en la conexin y el ancho de banda dependen de
la red, su fuerza y el nmero de conexiones simultneas.
Prueba los efectos de conectividad intermitente y en cmo
la aplicacin responde.
Dispositivos Remotos
Si no tienes dispositivos fsicos a mano o si necesitas probar
la aplicacin en otras redes, especialmente en el extranjero
y diversas localizaciones, a continuacin, un "servicio de
dispositivos remotos" podra ayudarte. Ellos pueden ayudar a
ampliar el alcance y la profundidad de tus pruebas a bajo o
ningn coste.
Muchos fabricantes ofrecen este servicio gratuitamente para
un subconjunto de sus modelos de telfono a los desarrol-
Testeando tu Aplicacin
241
ladores de software registrados. Tanto Nokia
4
para sus platafor-
mas, y Samsung
5
(para Android y Tizen) proporcionan acceso
restringido, pero diario y gratuito.
Tambin puedes utilizar servicios comerciales de em-
presas como SauceLabs
6
, be.devijver.wikipedia.parser.ast.
SpecialConstruct@1ce01a4, PerfectoMobile
7
o DeviceAnywhere
8

para pruebas similares en una amplia gama de dispositivos y
plataformas. Algunos fabricantes promueven estos servicios y
crean marca, sin embargo a menudo hay que pagar por ellos
despus de un corto periodo de prueba. Algunos de los servicios
comerciales proporcionan APIs que permiten crear pruebas
automatizadas.
Puedes incluso crear un respositorio privado de dispositivos
remotos, por ejemplo alojndolos en ofcinas y ubicaciones
remotas.
Ten cuidado con los temas de privacidad y confdencialidad
cuando usas estos servicios compartidos.
Testeo 'Crowd-Sourced'
Hay miles de millones de usuarios con telfonos mviles en
todo el mundo. Algunos de ellos son probadores profesionales
de software y, de stos, unos cuantos trabajan para compaas
de servicios de pruebas externalizadas como utest.com, test-
hub.com and mob4hire.com. Ellos pueden probar tu aplicacin
de forma rpida y relativamente econmica, en comparacin
con el mantenimiento de un amplio equipo especializado en
pruebas de software.
Estos servicios pueden mejorar tus otros testeos, por lo
4 developer.nokia.com/Devices/Remote_device_access/]
5 developer.samsung.com/remotetestlab/rtlDeviceList.action
6 saucelabs.com/
7 www.perfectomobile.com
8 www.deviceanywhere.com
Testeando tu Aplicacin
242
que no recomendamos su uso como nica prueba formal. Para
obtener buenos resultados debers dedicar parte de tu tiempo
y esfuerzo a la defnicin de las pruebas que quieres ejecutar,
trabajar con la empresa para revisar los resultados, etctera.
Cuidado con lo Especfco
Plataformas, redes, dispositivos, e incluso frmware, todos son
especifcaciones. Cualquiera de ellos puede causar problemas
para tus aplicaciones. Prubalos primero manualmente,
suponiendo que tengas el tiempo y presupuesto necesarios para
hacerlo rpidamente y obtener feedback temprano.
Muchas aplicaciones mviles incluyen algoritmos y otros
elementos no vinculados a una tecnologa mvil. Este cdigo
genrico debera ser separado del cdigo especfco de la plata-
forma. Por ejemplo, en Android o J2ME la lgica de negocio
normalmente puede ser codifcada como estndares Java, para
despus escribir, y ejecutar, pruebas unitarias automticas en
tu entorno de desarrollo estndar utilizando JUnit. Considera
pruebas automatizadas especfcas de plataforma una vez que el
cdigo genrico tenga buenos tests automatizados.
Automatizacin de Pruebas
Automatizacin de Tests de BDD
BDD es el acrnimo original de Desarrollo Guiado por Compor-
tamiento, en ingls Behavior-Driven Development
9
, en el que el
comportamientos es descrito en archivos de texto formateado
que pueden ser ejecutados como tests automatizados. El for-
mato de los tests est pensado para ser legible y comprensible
por cualquier persona implicada en el proyecto de software. Pu-
eden estar escritos virtualmente en cualquier lenguaje humano,
9 en.wikipedia.org/wiki/Behavior-driven_development
Testeando tu Aplicacin
243
por ejemplo Japons
10
, y utlizan una estructura consistente,
simple, con declaraciones tales como Dado, Cuando, Entonces
para estructurar los scripts.
Hay varios frameworks BDD disponibles para testear
aplicaciones mviles. Incluyen:

Calabash para Android e iOS: http://github.com/calabash

Frank para iOS: www.testingwithfrank.com

RoboGerk para Android:
http://github.com/leandog/RoboGherk

Zucchini para iOS: www.zucchiniframework.org
y varias implementaciones que se integran con Selenium-
WebDriver para probar aplicaciones web, incluyendo aquellas en
iOS y Android.
A menudo, defniciones de pasos personalizadas (o 'step-
defnitions' en ingls, que son pequeos scripts que interactan
con la aplicacin que es testeada) necesitan ser escritas por
alguien con habilidades de programacin.
Automatizacin de Tests de GUI
La automatizacin de tests de la interfaz grfca de usuario
(o GUI, del trmino ingls Graphical User Interface) es donde
las pruebas automatizadas interactan con la aplicacin a
travs de la GUI. Es uno de los elixires de la industria de las
pruebas, muchos lo han intentado, pero pocos han tenido
xito en la creacin de pruebas automatizadas de GUI que para
aplicaciones mviles sean tiles y viables. Una de las razones
principales por las que la automatizacin de tests de GUI es
tan retadora es que la interfaz de usuario est sujeta a cambios
signifcativos que pueden romper la forma en que las pruebas
automatizadas interactan con la aplicacin.
10 github.com/cucumber/cucumber/tree/master/examples/i18n/ja
Testeando tu Aplicacin
244
Para que los tests sean efectivos a largo plazo, y conforme
cambie la aplicacin, lo desarrolladores necesitan disear,
implementar y dar soporte a etiquetas y otros elementos usados
por los tests automatizados de GUI. Tanto Apple, con UI Au-
tomation
11
, como ms recientemente Android
12
usan la etiqueta
Accessibility asignada a elementos de la interfaz de usuario
como interfaz de facto para la automatizacin de la misma.
Algunas empresas ofrecen sus herramientas en cdigo
abierto, tales como GorillaLogic's MonkeyTalk
13
y Xamarin's
Calabash
14
. Estas herramientas se enfocan a proveer de
soporte multiplataforma a Android e iOS particularmente. Otros
entornos de cdigo abierto que ha tenido xito son Robotium
15

y Frank
16
.
Clientes sin Cabeza
La interfaz de usuario de una aplicacin mvil moderna puede
constituir ms del 50% del cdigo completo. Si tu testeado
se limita a usar la interfaz grfca de usuario diseada para
usuarios, puedes complicar innecesariamente las pruebas y los
esfuerzos de depuracin. Un enfoque es crear una interfaz de
usuario muy bsica que sea un fno envoltorio alrededor del
resto del cdigo del ncleo (normalmente esto incluye la con-
exin en red y las capas de negocio). Este cliente "sin cabeza"
puede ayudarte a aislar e identifcar rpidamente errores, por
ejemplo aquellos relacionados con el dispositivo, la operadora,
y otros problemas del entorno.
11 developer.apple.com/library/ios/documentation/DeveloperTools/
Conceptual/InstrumentsUserGuide/UsingtheAutomationInstrument/
UsingtheAutomationInstrument.html
12 developer.android.com/tools/testing/testing_ui.html
13 gorillalogic.com/testing-tools/monkeytalk
14 github.com/calabash
15 code.google.com/p/robotium/
16 testingwithfrank.com/
Testeando tu Aplicacin
245
Otro de los benefcios de la creacin de un cliente sin cabeza
es que puede ser ms sencillo para automatizar algunos de los
tests, por ejemplo para probar todas las funciones clave del
negocio y/o para automatizar la captura y comunicacin de los
resultados de las pruebas.
Tambin puedes considerar la creacin de programas de
esqueleto que "sondan" las caractersticas y capacidades
bsicas a travs de una gama de modelos de telfono, por ejem-
plo, para que una aplicacin J2ME ponga a prueba la gestin
de archivos, donde al usuario se le puede pedir (mltiples
veces) autorizacin para permitir las operaciones de archivos
(IO). Dada la fragmentacin y peculiaridades de las plataformas
maduras, tales sondas pueden retornar rpidamente la inversin
que realices para crearlas y ejecutarlas.
Testear a Travs de Las Cinco Fases del
Ciclo de Vida de una Aplicacin
El ciclo de vida completo de una aplicacin mvil se defne en
5 fases: implementacin, verifcacin, lanzamiento, vinculacin
y validacin, y se testea en cada una de ellas. Algunas de las
decisiones tomadas en las primeras etapas pueden afectar
nuestras pruebas en etapas posteriores. Por ejemplo, si
decidimos que queremos pruebas automatizadas del sistema
en la primera fase, sern ms fciles 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 signifcativamente la calidad y el xito de la aplicacin
Testeando tu Aplicacin
246
al ayudarnos a asegurarnos de que nuestra implementacin se
hace correctamente.
En trminos de diseo, deberamos decidir sobre las
siguientes cuestiones:

Utilizar TDD?

Escribir pruebas unitarias incluso si no estamos utilizando
TDD?

Tendremos sistemas automatizados de pruebas? En caso
afrmativo, 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 fnes previstos, y tambin evitar cometer errores graves.
El documento de Phillip Armour Five Orders Of Ignorance
17
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 efcacia y efciencia. Prcticas tales
como pruebas unitarias y TDD se aplican en la fase de imple-
mentacin. Recuerda probar tu proceso de construccin y los
build scripts para asegurarte de que sean efcaces, fables y
efcientes; de lo contrario, es probable que sufras los efectos de
un desarrollo defciente a lo largo de la vida de la aplicacin.
Fase 2: Verifcacin
Esto incluye la revisin de las pruebas unitarias, instalacin
interna y pruebas de sistema.
17 www-plan.cs.colorado.edu/diwan/3308-07/p17-armour.pdf
Testeando tu Aplicacin
247
Revisa las pruebas unitarias y evala su potencia: son
realmente tiles y dignas de confanza? Nota: tambin deben
ser revisadas como parte de la fase de implementacin, sin
embargo ste es un buen momento para abordar las defciencias
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 especfcos para las pruebas
de pre-lanzamiento. Para algunas plataformas (incluyendo
Android, iOS y Windows Phone), los telfonos deben estar con-
fgurados 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
la versin 2.x de Android y nunca se actualizarn a 4.x
Tambin queremos probar diferentes factores de forma de los
dispositivos, por ejemplo cuando la relacin de las dimensiones
de pantalla difere. Las nuevas dimensiones de pantalla del
iPhone 5 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.
Testeando tu Aplicacin
248
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 fnales

Pruebas de internacionalizacin y localizacin
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
desafante 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 verifcaciones 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 verifcar que tu aplicacin
responde a sus criterios de presentacin. Estas directrices
pueden ayudarte incluso si tu objetivo son otras tiendas de
aplicaciones.
Testeando tu Aplicacin
249
App Store Guidelines

Apple (se necesita cuenta de Apple para acceder)
18

Android
19

Windows Phone
20

BlackBerry
21
Fase 4: Vinculacin
Esto incluye bsqueda, confanza, descarga e instalacin. Una
vez que tu aplicacin es de disponibilidad pblica, los usuarios
necesitan encontrarla, confar 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 mo-
tores 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 confar los usuarios en tu aplicacin
lo sufciente como para descargarla y probarla? Tu aplicacin
realmente necesita tantos permisos? Cmo de grande es la
descarga, es prctico descargarla mediante la 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
frmado que causen que sea rechazada por algunos dispositivos.
18 developer.apple.com/appstore/resources/approval/guidelines.html
19 developer.android.com/distribute/googleplay/publish/preparing.html#core-
app-quality
20 http://msdn.microsoft.com/en-us/library/windowsphone/develop/
hh394032(v=vs.105).aspx
21 http://developer.blackberry.com/devzone/appworld/tips_for_app_approval.
html
Testeando tu Aplicacin
250
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?
Monetizacin
252
Monetizacin
Finalmente, 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 la promocin de marcas, etctera, es el momento de
hacer algo de dinero. Pero, cmo se hace eso y cules son tus
opciones?
En general, tienes las siguientes opciones de monetizacin:
1. Pago por descarga: Vende tu aplicacin por descarga
2. Pago en aplicacin: Aade opciones de pago dentro de tu
aplicacin
3. Publicidad mvil: Gana dinero por publicidad
4. Patrocinios: Recibe un pago cada vez que uno de tus
usuarios se da de alta en un servicio de tu patrocinador
5. Participacin en ingresos: Obtn ingresos por servicios del
operador que se originen en tu aplicacin
6. Ventas indirectas: Afliados, venta de datos y bienes
fsicos, entre otros
7. Mercado de componentes: Vende componentes o una
versin marca blanca de tu aplicacin a otros desarrol-
ladores
Cuando planifques 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.
P
O
R




M
i
c
h
e
l

S
h
u
q
a
i
r

&

C
a
r
l
o

L
o
n
g
i
n
o
Monetizacin
253
Pago Por Descarga
Usando el pago por descarga (PPD, del ingls Pay Per Down-
load), 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 confgurado por ti mismo.
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 fjos para elegir por pas
y moneda ($0,99, 0,7 EUR, $3, etc.) a la hora de fjar el precio
de tu aplicacin.
El pago por la descarga de aplicaciones se gestiona habitu-
almente 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 confrmar que la venta se cargar a
su factura de telfono mvil o mediante el envo de un SMS Pre-
mium. En algunos casos, la facturacin va operador se gestiona
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 benefcios 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 de llevar adelante, sobre todo si quieres vender en varios
254
pases, ya que es necesario frmar contratos con un operador
en cada pas. Por razones desconocidas, algunos operadores,
como Vodafone, eliminan la opcin de facturacin a operador
de Android Play en algunos mercados, como Reino Unido y
Alemania. Posiblemente porque mejores alternativas, como por
ejemplo pagos bancarios va mvil, ya estn disponibles.
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 como para
Microsoft Windows Phone Marketplace. Google y BlackBerry
ofrecen tambin 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 signifcativa hacia la
facturacin va operador. Nokia, adicionalmente, asla a los
desarrolladores de las variaciones de la cuota de operador,
ofreciendo a los desarrolladores una tasa fja del 70% de los in-
gresos por facturacin (Nokia dice que sus estudios indican un
incremento por diez de los benefcios 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 fjo del 70% de la facturacin.
La facturacin mediante tarjeta de crdito se utiliza 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 benefcios 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
Monetizacin
255
PayPal mvil, la iniciativa de los Pases Bajos M! Payment
1
,
marcacin a nmeros fjos premium
2
y otros.
Para cada forma de pago es importante determinar la
elasticidad en el precio de demanda o PED
3
. Incrementar el
precio no signifca necesariamente incrementar los benefcios (y
viceversa), ya que tu precio debe encajar con las expectativas
de tu base de usuarios.
El uso de PPD se puede implementar sin un diseo o
requisitos de codifcacin 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.
Pagos en la Aplicacin
El pago dentro de la aplicacin es una forma de cobrar por
acciones o contenidos especfcos 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 justifcan un
precio ms alto. Alternativamente, puedes ofrecer las caracter-
sticas 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 aplicacio-
nes 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
1 empayment.com
2 daopay.com
3 en.wikipedia.org/wiki/Price_elasticity_of_demand
Monetizacin
256
cuidadosamente acerca de cmo, cundo y qu estn dispuestos
a pagar tus usuarios, y disear tu aplicacin en consecuencia.
Las compras dentro las aplicaciones se han convertido en
el ms prspero modelo de monetizacin en muchos mercados,
particularmente en los juegos "freemium", que se distribuyen
gratuitamente para enganchar a los usuarios antes de conver-
tirlos en clientes. En el 2013, el 92% de los benefcios globales
de iOS y un 98% de los de Android procedieron de compras en
aplicaciones, segn Distimo
4
.
Este tipo de pago es especialmente popular en los juegos
(para funciones como la compra de energa extra, niveles
adicionales, crditos virtuales y dems) y puede ayudar a lograr
una mayor base instalada ya que puedes ofrecer la aplicacin
bsica de forma gratuita. Ten en cuenta, sin embargo, que
algunas tiendas de aplicaciones (por ejemplo la de Apple) no
permiten implementar opciones de pago va terceros dentro de
tu aplicacin. Esto se hace para evitar que se utilice la tienda
de aplicaciones para una libre distribucin evitando el pago a la
tienda de la comisin por ingresos.
Tambin debera ser obvio que necesitars disear y desar-
rollar 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
4 http://www.distimo.com/publications, descarga el 2013 Year in review de
diciembre del 2013
Monetizacin
257
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 navegador
mvil. Admob.com, Buzzcity.com y inmobi.com son algunas de
ellas. Sin embargo, debido a la amplia gama de dispositivos,
pases y caractersticas, en la actualidad hay ms de 50 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 Madgic
5
, smaato
6

o inneractive
7
, ya que tienden a dar mejores resultados al
combinar y optimizar los anuncios de ms de 40 redes mviles
de publicidad. La mayora de las redes de publicidad tienen una
5 madgic.com
6 smaato.net
7 inner-active.com
Monetizacin
258
participacin del 30% al 50% en los ingresos por publicidad y
los agregadores de otro 15% o 20% adicional.
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 fun-
ciones de su tienda de aplicaciones, e igualmente vale la 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 pro-
grames 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 (opt-
out). Si los anuncios se vuelven demasiado intrusivos, puede
que los usuarios abandonen tu aplicacin, al tiempo que la
publicidad demasiado sutil signifcar 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".
Puedes necesitar experimentar un poco para encontrar el nivel
y las posiciones adecuadas para colocar los anuncios.
Patrocinios
La startup alemana Apponsor
8
ofrece una nueva manera de
ganar dinerp sin tener que mostrar publicidad o cobrar por
descargar la aplicacin: El usuario obtiene tu aplicacin de
8 apponsor.com
Monetizacin
259
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.
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 afliacin: Promover aplicaciones de pago
propias o de terceros en el interior de una gratuita. Ver
tambin MobPartner
9
. 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 herra-
mienta 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.
9 mobpartner.com
Monetizacin
260
Mercado de Componentes
Un mercado de componentes o CMP (del ingls Component
Marketplace) proporciona otra oportunidad para los desarrol-
ladores 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 defnida 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 modifcar 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 .NET
Monetizacin
261
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 Garden
10
, ChupaMobile
11

y Verious
12
son jugadores destacados en ste campo.
Eligiendo tu Modelo de Monetizacin
As que, con todas estas opciones, cul debera ser tu
estrategia? Depende de tus objetivos, veamos algunos:

Quieres una gran base de usuarios? Considera distribuir tu
aplicacin gratuitamente en primer trmino, con la opcin
de compra en aplicacin, o con publicidad mvil (podras
ofrecer una versin premium sin publicidad).

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.

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
manera gratuita con publicidad en la aplicacin, o una
versin bsica que desbloquee mediante compra en la apli-
10 www.developergarden.com/component-marketplace/
11 www.chupamobile.com
12 www.verious.com
Monetizacin
262
cacin nuevas capacidades, niveles, vehculos o cualquier
equipamiento de juego (freemium).

Es tu aplicacin mvil una extensin de una tienda web
o fsica tuya? Ofrece la aplicacin gratis y gana ingresos
de los productos y servicios que comercializas en el mundo
real.
Estrategias de 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 apli-
cacin 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.
Estrategias Bsicas para Llegar Alto
Lo ms importante a comprender acerca de las tiendas de
aplicaciones es que son canales de distribucin y mquinas de
marketing. Esto signifca que aunque son una gran manera de
conseguir introducir tu aplicacin en los dispositivos de los
usuarios, no van a promocionar tu aplicacin por t (a menos
que compres posicionamiento premium, ya sea a travs de
banners o posiciones de lista). No puedes confar en las tiendas
Monetizacin
263
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 entre-
tenida, 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 cui-
dadosamente palabras clave y categora. Si ests inseguro
o insatisfecho con los resultados, experimenta.

Obtener reseas de bloggers y revistas es una de las me-
jores 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.
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 trfco generado por personas que exploran
la tienda de aplicaciones, cercirate de conducir trfco a
tu aplicacin a travs de tu sitio web, SEO y social media.
Monetizacin
264
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 signifca
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 poten-
cialmente enorme, pero consiguiendo mucho ms tiempo para
cosas importantes, como la programacin! As que, debes ir a
mltiples tiendas o no?
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 con-
tenido.
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 trfco 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.
Monetizacin
265
Mltiples tiendas Tienda nica
Las tiendas de los operadores
tienen directrices para con-
tenidos notoriamente estrictas
y puede ser difcil entrar,
particularmente para algunos
tipos de aplicaciones.
Para contenidos sin nicho, la
tienda del operador o plata-
forma pueden ofrecer sufciente
exposicin para no justifcar el
esfuerzo extra de una estrategia
multi-tienda.
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 op-
eradores 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 benefcios
en Android vienen de fuera de
Android Market.
iLos 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
fel 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
Monetizacin
266
aplicaciones locales muy populares, por ejemplo la alemana
AndroidPit
13
o algunas dedicadas a Android en China.
Qu Puedes Ganar?
Una de las preguntas ms comunes de un desarrollador es acer-
ca 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 2012 por Forbes.com
14
, la mayora de los desarrolladores
de aplicaciones no estn generando sufcientes ingresos para
pagar los costes de desarrollo, y los desarrolladores dedicados
a una nica plataforma confrman que los ingresos generados
por su aplicacin de ms exito no resultaron sufcientes para
apoyar un negocio independiente. Segn el estudio Developer
Economics 2013 de VisionMobile realizado sobre ms de 6.000
desarrolladores mviles, el 67% de ellos se encuentran por
debajo del lmite de pobreza por aplicacin al obtener menos
de $500 al ms por cada una de sus aplicaciones
15
.
En ltima instancia, lo que puedes ganar depende de
satisfacer una necesidad y de un marketing efcaz. La ex-
periencia 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 ofcina, herramientas
de sincronizacin, herramientas de copia de seguridad y otras),
pero a menudo el xito (econmico) de una sola aplicacin no
13 androidpit.de
14 www.forbes.com/sites/tristanlouis/2013/08/10/how-much-do-average-apps-
make
15 www.visionmobile.com/products/research
Monetizacin
267
se puede predecir. El xito, por lo general, viene con un bagaje
en experimentacin y mucha perseverancia.
Aprende Ms
Si quieres ahondar ms en el tema de marketing de aplicacio-
nes, lee la "Mobile Developer's Guide To The Parallel Universe"
publicada por WIP
16
.
16 wip.org
269
Eplogo
Eplogo
Gracias por leer esta 14 edicin de nuestra Gua del Desarrol-
lador Mvil. Esperamos que hayas disfrutado de su lectura y
que te hayamos ayudado a clarifcar 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 o patrocinar prximas
ediciones, por favor enva tu feedback a .
Si ests usando Twitter, te invitamos a seguirnos en
twitter.com/enoughsoftware y pasar la voz acerca de este
proyecto utilizando el hashtag #mdgg.
Puedes, por supuesto conseguir sta edicin en formato ebook
(ingls solo) en amazon.com y kobobooks.com y, como siempre,
en versin imprimida (ingls solo) a travs de nuestro website:
www.enough.de/mdgg.
En el momento de escribir estas palabras, tambin estamos
en editar el contenido de ste libro como website en
www.mobiledevelopersguide.com, donde esperamos
que en breve encuentres nuevas maneras de
involucrarte y hacernos llegar tu feedback.
Acerca de los Autores
270
Acerca de los Autores
Acerca de los Autores
Mostafa Akbari / bitstars
Mo ha trabajado en ingeniera de software e investigacin de la interaccin
humana en los ltimos aos. Est involucrado en proyectos de movilidad verde.
Actualmente, Mo ha arrancado una spin-off con Simn Heinen en la Universidad
RWTH Aachen para la investigacin y el desarrollo de la realidad aumentada. Se
centra en las interacciones personales de RA con datos basados en la localizacin
y en visin por ordenador. Su pasin por los juegos de realidad mixta tiene origen
en su afcin por los juegos de mesa y el geocaching.
@mosworld www.bitstars.com
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 desde casa como
diseadora de interfaces y UX para productos de consumo en dispositivos mviles
y de sobremesa. Aparte de dibujar y pensar a travs de pantallas tambin hace
ilustraciones y disfruta de vivir en Londres.
www.alfutka.net
Andrej Balaz / Enough Software
Como graduado de la Universidad de Bellas Artes de Bremen, Andrej se centra
en interfaces de usuario, UX, diseo visual para aplicaciones mviles y otras
tecnologas interactivas. Tambin es el encargado de la distribucin y el diseo de
esta gua. Cuando no est involucrado en algo mvil, le encanta experimentar con
el arte digital y la ilustracin.
@Designamyte www.enough.de www.balaz.de
Acerca de los Autores
271
Richard Bloor / Sherpa Consulting Ltd
Richard lleva escribiendo sobre el desarrollo de aplicaciones mviles desde el
ao 2000. Ha contribuido a portales populares como AllAboutSymbian.com, pero
actualmente se centra en aconsejar a empresas sobre cmo crear recursos para
desarrolladores. Richard tiene una experiencia tcnica importante, habiendo
gestionado y testeado numerosos proyectos de peso, incluyendo el sistema de
monitorizacin y gestin integrada de Land Information NZ. Cuando no est
escribiendo sobre desarrollo mvil, se le puede encontrar cuidando del bosque
autctono de su propiedad al norte de Wellington, Nueva Zelanda.
Davoc Bradley / Rivo Software
Davoc ha estado trabajando como ingeniero de software desde 1999, especial-
izndose en arquitectura y diseo de webs y sistemas mviles de alta usabilidad.
Recientemente, se puso a los mandos de la arquitectura, el diseo y el desarrollo
de una galardonada plataforma de gestin de aplicaciones mviles y de la
arquitectura de Rivo Software. Davoc tambin es un msico entusiasta, fan vido
del cricket y le encanta viajar.
@davocbradley www.rivosoftware.co.uk
Marco Bttner / SciDev
Marco tiene 25 aos y es desarrollador mvil desde el 2011. Estudia informtica
en la Universidad Humboldt de Berlin y es miembro 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.
@scionbln www.scidev.eu
Acerca de los Autores
272
Eva Casado de Amezua / Universitat Oberta de Catalunya
Eva es la traductora al castellano de esta edicin de la gua, patrocinada por
la Universitat Oberta de Catalunya (UOC). Adems de trabajar como Head of
Customer Success en Typeform, es colaboradora docente en la UOC y consejera
de marketing y comunicacin en Vizzop. Eva ha sido desarrolladora RIA y web,
diseadora de interfaces, copywriter y creativo especialista en redes sociales,
entre otras cosas. Le apasiona la sociologa de los nuevos medios, las artes
plsticas y leer libros de divulgacin matemtica.
@ellaing www.uoc.edu
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.
Julian Harty / Commercetest
Julian fue contratado por Google en 2006 como su primer ingeniero de pruebas
fuera de EE.UU. 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.
@julianharty
Acerca de los Autores
273
Bob Heubel / Immersion Corp.
Bob Heubel es un evangelista de la tecnologa hptica en Immersion Corporation,
especializado en ayudar a los desarrolladores a implementar lo que se conoce
como efectos de retroalimentacin por fuerza, tctil o con estruendo. Posee unas
cuantas patentes en el campo de las tecnologas hpticas y ha pasado ms de
catorce aos trabajando con desarrolladores, operadores y hardware OEMs para
disearlas y aplicarlas en experiencias de juego e interaccin de usuario. Es prob-
able que hayas sentido algunos de los trabajos de Bob en famosos videojuegos
tales como Grand Theft Auto: Vice City, y Max Payne para Android. Bob se gradu
en la Universidad de California en Berkeley el ao 1989 con una licenciatura en
Literatura Inglesa.
@bobheubel www.immersion.com
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 desar-
rollos Java ME y BlackBerry para Enough Software desde 2009. Se emociona con
cualquier cosa relacionada con una programacin efcaz, algoritmos y grfcos por
ordenador.
@ovvyblabla www.enough.de www.ovidiuiliescu.com
Alex Jonsson / EvoThings
A Alex le gusta todo lo mvil, tanto aplicaciones como tecnologas web, as como
conectar inteligentemente objetos fsicos a otros digitales. 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. Jons-
son 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 CTO de EvoThings.
@dr_alexj www.evothings.com
Acerca de los Autores
274
Matos Kapetanakis / VisionMobile
Como Director de Marketing de VisionMobile, sus actividades incluyen la gestin
del sitio web y el blog, as como dar con los conceptos y marcoms para las
ilustraciones e infografas publicadas por la compaa. Matos tambin es el
director del proyecto de la lnea de investigacin Developer Economics, as como
de otros proyectos de investigacin sobre desarrollo.
www.visionmobile.com
Michael Koch / Enough Software
Michael viene desarrollando software desde 1988, unindose al equipo de desar-
rollo de Enough Software en 2005. Ocupa el cargo de Director de Tecnologa. Ha
dirigido numerosos proyectos de desarrollo de aplicaciones mviles (principal-
mente 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.
@linux_pinguin www.enough.de
Daniel Kranz / Sevenval
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 planifcacin
estratgica global aconsejando a marcas sobre cmo integrar lo mvil como parte
de su estrategia digital.
www.jouleww.com
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 enior para Floor64, una frma de anlisis con sede en
Silicon Valley, donde se especializ en las industrias mviles y de telecomunica-
Acerca de los Autores
275
ciones. 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.
@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.
LinkedIn: melenchon mosaic.uoc.edu multimedia.uoc.edu
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.
@seraandroid & @PayPalEuroDev www.timmesserschmidt.de
Acerca de los Autores
276
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.
@pmortara www.mortara.org
Gary Readfern-Gray / RNIB
Gary es un especialista en accesibilidad que trabaja para el Royal National
Institute of the Blind. Situado en la Unidad de Innovacin, tiene pasin por el
espacio mvil y, en particular, en el desarrollo de aplicaciones accesibles a travs
de una amplia gama de plataformas mediante la colaboracin con las comunidades
de desarrolladores.
www.rnib.org.uk
Alexander Repty
Alexander ha estado desarrollando software para Mac OS X desde 2004. Cuando
el iPhone SDK fue lanzado en 2008, fue uno de los primeros desarrolladores
registrados en el programa. Como empleado de Enough Software trabaj en una
serie de aplicaciones, una de las cuales fue destacada en un anuncio de Apple
TV. Ha escrito una serie de artculos sobre desarrollo en iPhone. En abril de 2011,
comenz su propio negocio como desarrollador de software independiente y
contratista.
@arepty www.alexrepty.com
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.
@zahlenhelfer www.zahlenhelfer-consulting.de
Acerca de los Autores
277
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 m.wauwee.com. 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. m.wauwee.com
fue adquirida posteriormente por MobiLuck.
www.appvalley.nl
Marco Tabor / Enough Software
Marco es el responsable de relaciones pblicas, ventas y mucho ms en Enough
Software. Es el coordinador de la gua, teniendo adems la responsabilidad de
encontrar patrocinadores y fusionar las aportaciones hechas por la comunidad
mvil.
@enoughmarco www.enough.de
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.
@ithain scn.sap.com/blogs/ithain/ www.sap.com
Marc van 't Veer / Polteq
Marc es un consultor especializado en pruebas en Polteq con ms de 7 aos de
experiencia como coordinador y testeador de sistemas. Tiene una gran experiencia
en pruebas orientadas a un contexto tecnolgico, por ejemplo en telecomunica-
ciones, SOA, automatizacin de pruebas, desarrollo de controladores y testeo de
APIs. En su trabajo actual, coordina todas las pruebas de aplicaciones mviles
para una importante cadena de supermercados de los Pases Bajos.
www.polteq.com
Acerca de los Autores
278
Robert Virkus / Enough Software
Robert ha estado trabajando en el espacio mvil desde 1998. Experiment la frag-
mentacin 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.
@robert_virkus www.enough.de www.j2mepolish.org
1
4
t
h
e
d
i
t
i
o
n
una iniciativa de
patrocinadores
UNA REVISIN NO COMERCIAL DE LAS
TECNOLOGAS MVILES PARA DESARROLLADORES
Y TOMADORES DE DECISIONES, REALIZADA POR
LA PROPIA COMUNIDAD.
Daniel Hudson, www.webtechman.com
Un trabajo espectacular! Te sorprender lo increblemente
rpido que puedes introducirte en el mercado mvil con los sencillos
pasos explicados en esta gua.
Monika Lischke, Community Manager, Intel AppUp developer program
Unos contenidos extremadamente tiles, tambin para los
no desarrolladores. Y con un diseo fantstico!
www.enough.de
www.wip.org

Vous aimerez peut-être aussi