GUA A LA GALAXIA
DE APLICACIONES
MVILES
PR
IM
ER
AV
ER
SI
NE
NE
SPA
NOL
12
publicada por:
Gua a la Galaxa de
Aplicaciones Mviles
Contenidos
Prlogo
1
2
6
13
13
15
15
17
23
23
25
26
29
31
32
32
33
35
35
37
37
40
41
41
42
44
44
45
53
53
54
56
56
57
60
61
64
64
65
66
70
71
73
75
76
79
79
80
86
87
88
91
91
92
97
98
100
100
106
110
115
118
120
122
126
128
130
132
133
134
135
135
136
Windows Phone
El Ecosistema
Implementacin
Testeo y Analticas
Distribucin
Aprende Ms
Windows 8
Prerrequisitos
Implementacin
Distribucin
Aprende Ms
Hacia Multiplataforma
Diferencias Clave Entre Plataformas Mviles
Estrategias Multiplataforma
Frameworks de Aplicaciones Multiplataforma
Motores de Juego Multiplataforma
Tecnologas Web
HTML5
La Fragmentacin Requiere Adaptacin
Testear Tecnologas Web
Aprende Ms
Accesibilidad
Aplicaciones Android Accesibles
Aplicaciones BlackBerry Accesibles
Aplicaciones iOS Accesibles
Aplicaciones Symbian/Qt Accesibles
Aplicaciones Windows Phone y Windows 8 Accesibles
Aplicaciones Web Mvil Accesibles
138
139
141
144
145
148
148
150
150
152
153
153
155
157
158
160
161
163
164
166
167
168
171
173
175
176
Implementacin de NFC
178
178
180
181
183
183
185
186
187
190
193
198
200
201
205
206
207
209
211
211
212
214
215
220
223
227
Testeo Interactivo
Automatizacin de Pruebas
Cuidado Con Las Especiicaciones
245
Monetizacin
Pago Por Descarga
Pagos En Aplicacin
Publicidad Mvil
Participacin en Ingresos
Indirect Sales
Mercado de Componentes
Eligiendo tu Modelo de Monetizacin
Tiendas de aplicaciones
Qu Puedes Ganar?
Aprende Ms
247
Eplogo
248
229
230
232
234
235
236
236
239
240
244
Prlogo
Han pasado exactamente cuatro aos desde que se public la
primera versin de esta gua. En el prlogo de aquella primera
edicin, dijimos: "Los problemas ms importantes para los
desarrolladores mviles son sin duda la fragmentacin y la
distribucin". Aunque el paisaje del ecosistema mvil ha
experimentado grandes cambios desde entonces, continuamos
pensando que esto sigue siendo cierto. Y el paisaje contina
cambiando: probablemente, esta 12 edicin introduce
ms cambios que las anteriores. Para relejar los cambios
recientes en el mercado, hemos decidido eliminar los captulos
dedicados a Qt y bada y reemplazarlos por nuevos captulos
independientes de plataforma, que cubren tecnologas clave
como realidad aumentada, analticas y prototipado. Adems, el
captulo de introduccin general ha sido ampliado de manera
signiicativa, y ahora ofrece una exhaustiva visin actualizada
sobre el siempre cambiante mundo mvil. Por ltimo, todos los
dems captulos tambin se han revisado y actualizado como de
costumbre. Es casi imposible encontrar una gua ms objetiva
y actualizada que ensee cmo empezar como proveedor de
aplicaciones o desarrollador, y cmo llevar la oferta mvil
existente al siguiente nivel.
Tambien estamos muy contentos de que sea la primera
edicin disponible en castellano. Muchas gracias por ello a
Javier y Eva, de la Universitat Oberta de Catalunya.
Qu ocurri en la industria mvil desde nuestra ltima
edicin? Apple lanz el iPhone 5 con gran xito, Android se
convirti en el lder mundial indiscutible en sistemas smartphone, y Microsoft lanz Windows 8 y Windows Phone 8.
Prlogo
Prlogo
II
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,
lo que incluye una serie de fases tales como: planiicacin y
especiicacin, prototipado y diseo, implementacin, testeo
interno y despliegue, publicacin en una tienda de aplicaciones,
descubrimiento por los usuarios, instalacin, uso y feedback.
En ltima instancia, queremos que nuestros usuarios disfruten
utilizando nuestras aplicaciones y que nos den valoraciones
positivas para alentar a otros a hacer lo mismo.
Sigue leyendo para aprender cmo desarrollar aplicaciones
para las principales plataformas. Si sta es la primera vez que
has considerado involucrarte en este tema, te recomendamos no
demorarlo ms ya que el mundo se est enfocando rpidamente
hacia el mvil como forma predominante en la informtica, y es
probable que otros te adelanten si esperas demasiado.
Aunque el desarrollo de aplicaciones mviles tiene algunos
puntos en comn con el de otro tipo de software, tambin
posee caractersticas especicas. Vamos a tratar algunas de
ellas a continuacin.
Aplicacin (app)
Sitio Web
SMS, USSD1 y STK2
Aplicaciones
Las aplicaciones se ejecutan directamente en el dispositivo. Se
pueden desarrollar como nativas, web o hbridas.
1
2
es.wikipedia.org/wiki/USSD
en.wikipedia.org/wiki/SIM_Application_Toolkit
Aplicaciones Nativas
Una aplicacin nativa est programada en un lenguaje
especico con APIs propias de la plataforma. Se suele comprar,
descargar y actualizar a travs de la tienda de aplicaciones
especica de la plataforma. Las aplicaciones nativas suelen
ofrecer mejor rendimiento, integracin ms completa y la mejor
experiencia de usuario en comparacin con otras opciones; sin
embargo, el desarrollo nativo suele ser tambin la opcin de
desarrollo ms compleja.
Aplicaciones Web
Una aplicacin web (web-app/web-based) se basa en HTML5,
JavaScript y CSS, y no depende de ninguna tienda de aplicaciones. Es un sitio almacenado localmente en el mvil que trata
de emular el look-and-feel (aspecto y comportamiento) de una
aplicacin. Un famoso ejemplo de una aplicacin web es la del
Financial Times, que abandon la tienda de aplicaciones con el
in de evitar compartir los ingresos de los suscriptores; justo a
la inversa, 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 de manera
www.phonegap.com
La Galaxia Mvil: Introduccin
blogs.windows.com/windows_phone/b/wpdev/archive/2012/11/15/adaptingyour-webkit-optimized-site-for-internet-explorer-10.aspx
www.developergarden.com/apis
memeburn.com/2012/03/how-m-pesa-disrupts-entire-economies/
La Galaxia Mvil: Introduccin
7
8
9
blog.nielsen.com/nielsenwire/online_mobile/nielsen-tops-of-2012-digital/
www.developereconomics.com
www.idc.com/getdoc.jsp?containerId=prUS23619612
La Galaxia Mvil: Introduccin
13
www.gartner.com/it/page.jsp?id=2237315
www.developer.nokia.com/Distribute/Statistics.xhtml
www.research2guidance.com/apps-on-nokias-ovi-store-had-2.5-times-higherdownload-numbers-in-q2-2011-compared-to-apps-on-apple-app-store/
phonearena.com/news/Wait-so-Windows-8-is-not-outpacing-Windows-7adoption-rate_id37212
La Galaxia Mvil: Introduccin
guardian.co.uk/technology/2012/oct/02/windows-phone-europe-market
news.cnet.com/8301-1035_3-57513651-94/alibaba-google-just-plain-wrongabout-our-os
La Galaxia Mvil: Introduccin
16
17
18
19
20
mozilla.org/irefoxos
rawkes.com/articles/there-is-something-magical-about-irefox-os
merproject.org
jolla.com
tizen.org
La Galaxia Mvil: Introduccin
10
Ventas en el
tercer trimestre de 2012
(millones de
unidades)
Base instalada
a inales de
2012 (millones de
unidades)
Android
(Google)
53%
129
710
iOS (Apple)
19%
27
260
Symbian
(Nokia)
14%
190
BlackBerry
(RIM)
8%
104
bada
(Samsung)
>2%
30
Windows
Phone
(Microsoft)
<2%
20
Plataforma
(Fuente: www.tomiahonen.com/ebook/phonebook.html)
ubuntu.com/devices/phone
La Galaxia Mvil: Introduccin
11
23
24
25
26
27
gulfnews.com/business/technology/apple-microsoft-to-steal-market-share-inmea-smartphone-sales-1.1112944
www.techinasia.com/android-market-share-china-2012/
comscoredatamine.com/category/mobile
gs.statcounter.com
visionmobile.com
gartner.com
La Galaxia Mvil: Introduccin
12
Perdido en el Espacio
Si ests perdido en la selva 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!
28
fairphone.com
13
14
Anna Alfut
POR
Capturando la idea
Escribe un resumen que describa tu concepto de aplicacin en
unas pocas frases. Trata de explicarla a varias personas (que no
sean miembros del equipo) para ver cmo de bien la comprenden y se relacionan con ella.
Deine tu contenido. Pregntate cul es el contenido
bsico de la aplicacin. Dependiendo del tipo de aplicacin,
podran ser fotografas (Pinterest), feeds generados por el
usuario (Twitter), textos (lectores de libros), etc. Una vez que
identiicas el valor principal que tu aplicacin va a ofrecer, es
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.
Diseo Conceptual para Mviles
15
16
17
18
Diseo visual
A menos que ests construyendo una solucin que slo utiliza
una entrada de sonido o interfaces hpticas, tu interfaz de
usuario se basar en los gricos. La aplicacin del diseo
visual no es simplemente colorear wireframes, un diseo visual
atractivo mejorar la experiencia de tu aplicacin y har que se
destaque de la masa.
Diseo Conceptual para Mviles
19
20
Pruebas de usuario
La mejor manera de validar tu interfaz y concepto es enfrentarlos con usuarios reales, tan pronto como sea posible. No tienes
que esperar hasta que haya un producto acabado y pulido. De
hecho, no deberas. Es mucho ms difcil aceptar comentarios
sobre algo que se considera casi terminado que en un prototipo
navegable 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 reproductor 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 lugar. Lo
principal es moderar, no guiar. Tambin puedes realizar sesiones
de pruebas en otras aplicaciones ya publicadas. Te sorprenders
de lo mucho que perciben los usuarios de tu aplicacin, cosas
que puede que nunca te hayas parado a pensar.
21
GALACTIC
FIGHTCLUB
Tim Messerschmidt
POR
Android
El Ecosistema
La plataforma Android ha sido desarrollado por la Open Handset
Alliance, liderada por Google, y ha estado a disposicin del
pblico desde noviembre de 2007. Su uso por muchos fabricantes de hardware la ha convertido en el sistema operativo
de smartphones con mayor crecimiento. De acuerdo con
IDC1, el 75% de todos los smartphones vendidos en el tercer
trimestre del 2012 en todo el mundo se basa en Android. En
otoo de 2012, Google anunci que hay 700.000 aplicaciones
disponibles en el Android Market2 y que quinientos millones
de dispositivos Android han sido activados hasta el momento3.
Android tambin se utiliza en tablets, reproductores multimedia, decodiicadores de televisin, telfonos de sobremesa y
sistemas de entretenimiento en automviles. Algunos dispositivos no-Android tambin son capaces de ejecutar aplicaciones
Android con funcionalidad reducida, como la Playbook de RIM
con su BlackBerry Adroid runtime o el nuevo sistema operativo
de cdigo abierto Sailish4 .
Android es un sistema operativo, una coleccin de aplicaciones 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 aproxima-
1
2
3
4
www.idc.com
www.nbcnews.com/technology/gadgetbox/google-says-there-are-700-000android-activations-day-118326
mashable.com/2012/09/12/500-million-android-devices-activated/
www.sailishos.org/
Android
23
developer.android.com/resources/dashboard/platform-versions.html
developer.android.com/guide/practices/screens_support.html#NewQualiiers
24
Prerrequisitos
El lenguaje de programacin principal para Android es Java.
Pero ten cuidado, slo un subconjunto de las libreras Java son
compatibles y hay muchas APIs especicas de la plataforma.
Puedes encontrar respuestas online a la preguntas "Qu y
Por qu?" en la Dev Guide para Android8 y a al "Cmo?" en la
documentacin de referencia9. Adems, Google ha introducido
una seccin en su documentacin llamada "Android Training"10
dirigida a los nuevos desarrolladores que quieran aprender sobre
prcticas recomendadas, conceptos bsicos como la navegacin
y comunicacin entre aplicaciones, o funciones ms avanzadas
como la descarga inteligente de bitmaps y la optimizacin para
reducir el gasto de batera.
Para empezar, necesitas el SDK de Android11, que est
disponible para Windows, Mac OS X y Linux. Contiene las
herramientas necesarias para crear, probar, depurar y analizar
aplicaciones. Es probable que tambin quieras un buen IDE
de Java. Las herramientas de desarrollo de Android (ADT)12
dan soporte a Eclipse; otros IDEs, como IntelliJ de jetbrains.
com, ofrecen buen soporte al desarrollo, despliegue y (muy
importante) proyectos de libreras que permiten la comparticin
de cdigo y recursos entre proyectos.
7
8
9
10
11
12
developer.android.com/training
developer.android.com/guide
developer.android.com/training/index.html
developer.android.com/training/index.html
developer.android.com/sdk
developer.android.com/tools/sdk/eclipse-adt.html
25
Implementacin
Arquitectura de la aplicacin
Una aplicacin Android puede incluir una mezcla de actividades,
servicios, receptores de mensajes y proveedores de datos, los
cuales tienen que ser declarados en el maniiesto 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, no ligadas
directamente a una representacin visual. Un receptor de
mensajes gestiona los mensajes transmitidos por el sistema u
otras aplicaciones. Un proveedor de datos es una interfaz para
el contenido de una aplicacin que abstrae de los mecanismos
de almacenamiento subyacentes.
Una aplicacin puede consistir en varios de estos componentes, por ejemplo, una actividad para la interfaz de usuario y
un servicio para tareas dilatadas en ejecucin. La comunicacin
entre los componentes se realiza por objetos intent.
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 ilosofa de bloques de construccin es que se puede
sustituir la funcionalidad por otra aplicacin, ya que Android
siempre utiliza la aplicacin por defecto para un propsito especico. 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 preferencias del usuario y de las
aplicaciones instaladas: se puede utilizar cualquier aplicacin
que declare un intent tipo share como interfaz.
Android
26
27
13
14
15
developer.android.com/reference/android/Manifest.permission.html
developer.android.com/guide/topics/fundamentals/fragments.html
android-developers.blogspot.com/2011/03/fragments-for-all.html
Android
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
modiicaciones aunque, sin embargo, algunos fabricantes de
hardware pueden realizar cambios en algunos elementos de la
plataforma; por tanto, probar la aplicacin en varios dispositivos fsicos es esencial. La lista de AppBrain17 puede ayudarte a
hacerte una idea de qu dispositivos son los ms populares.
16
17
http://developer.android.com/google/play-services/
www.appbrain.com/stats/top-android-phones
Android
29
developer.android.com/guide/topics/testing/testing_android.html
developer.android.com/guide/developing/tools/monkeyrunner_concepts.html
android-developers.blogspot.de/2012/11/android-sdk-tools-revision-21.html
code.google.com/p/robotium
pivotal.github.com/robolectric/
Android
30
Compilacin
Aparte de crear tu aplicacin directamente en el IDE que
preieras, hay maneras ms cmodas de construir aplicaciones
Android. El software Gradle24 es actualmente la herramienta
de creacin automatizada con soporte oicial para Android.
Tambin hay un plug-in de Maven25 que cuenta con un gran
apoyo en la comunidad de desarrolladores. Ambas herramientas
pueden tener dependencias de diferentes repositorios Maven,
por ejemplo del Maven Central Repository26.
23
24
25
26
wiki.hudson-ci.org/display/HUDSON/Android+Emulator+Plugin
ms informacin en tools.android.com/tech-docs/new-build-system/usingthe-new-build-system
code.google.com/p/maven-android-plugin/
www.maven.org/
Firma
Tu aplicacin tiene que haber sido irmada en el proceso de
compilacin, ya sea con una irma de depuracin o con una de
publicacin. Puedes utilizar un mecanismo de auto-irma, lo
que evita gastos relacionados con la irma (y seguridad).
La misma irma debe ser utilizada para las actualizaciones de
la aplicacin. Recuerda que puedes utilizar una nica clave para
todas tus aplicaciones o crear una nueva para cada una de ellas.
Distribucin
Una vez hayas creado la prxima aplicacin rompedora 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, lo que te permite vender contenido adicional, paquetes de funciones, etctera, dentro de tu aplicacin
mediante el uso de la infraestructura de Android Play27.
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 publicarla.
27
developer.android.com/guide/google/play/billing/
Android
32
Monetizacin
Adems de vender la aplicacin en una de las muchas tiendas
de aplicaciones disponibles, hay mltiples maneras diferentes
de monetizar una aplicacin Android. Una forma viable es mediante el uso de la publicidad, que puede ser basada en clics o
en nmero de visitas, y puede proporcionar un ingreso estable.
Aparte, hay diferentes posibilidades para facturar desde la
aplicacin, como el servicio propio de facturacin de Google29,
que utiliza la tienda Google Play o pagos mediante la librera
Mobile Payments Library de PayPal30. La mayora de los servicios
diieren en las comisiones por transaccin y las posibilidades
que ofrecen, por ejemplo suscripciones, pagos paralelos o pagos
previamente aprobados.
Asegrate de veriicar que el mtodo de pago de tu eleccin
est en armona con los trminos y condiciones de las diferentes tiendas en las que deseas publicar la aplicacin; en especial
vale la pena echarle un vistazo a aquellas que permiten
descargas digitales, ya que suelen tener diferentes directrices.
28
29
30
wipconnector.com/index.php/appstores/tag/android
developer.android.com/google/play/billing/
www.x.com/developers/paypal/products/mobile-payment-libraries
33
BlackBerry:
Aplicaciones Java
El Ecosistema
La plataforma BlackBerry es desarrollada por la compaa canadiense Research In Motion (RIM), que el pasado 30 de Enero del
2013 adopt la marca BlackBerry como nombre comercial de la
empresa (aunque sigue cotizando en los ndices NASDAQ y TSK
como RIMM y RIM, respectivamente)1. El ao de lanzamiento de
la plataforma BlackBerry es 1999, hacindose extremadamente
populares sus dispositivos debido a que estaban equipados con
un teclado completo para introducir texto cmodamente (que
dio lugar a una dolencia llamada Pulgar BlackBerry2), ofrece
un robusto servicio de push para email y otros datos, una larga
duracin de la batera e incluye BlackBerry Messenger, su red
social mvil. Suma a esto aplicaciones tipo PDA, como libreta
de direcciones, correo electrnico seguro, calendario, tareas y
bloc de notas a estas caractersticas y comprenders por qu
la plataforma era muy popular tanto en empresas como entre
usuarios comunes.
La cuota de mercado global de los telfonos BlackBerry ha
continuado su descenso en 20123. Para recuperar el terreno
perdido en el mercado, BlackBerry decidi tomar medidas radicales e introdujo un sistema operativo completamente nuevo:
BlackBerry 10. Los primeros dispositivos BB10 sehan lanzado
en el primer trimestre del 2013. Este captulo se centra en el
1
2
3
blackberry.com
en.wikipedia.org/wiki/Blackberry_thumb
gs.statcounter.com/
BlackBerry: Aplicaciones Java
35
36
Prerrequisitos
En cuanto al desarrollo de aplicaciones Java, necesitars Java
SDK4 (no el Java Runtime Environment). A continuacin,
te harn falta Eclipse y el plug-in de BlackBerry5. Puedes
descargarlos por separado o descargar el paquete que ofrece
BlackBerry, que incluye ambos, y que tambin contiene el SDK
y simuladores para el ltimo sistema operativo BlackBerry,
con instrucciones sobre cmo descargar los SDKs anteriores
disponibles en la pgina de descargas (necesarios para trabajar
en compatibilidad con dispositivos ms antiguos). Adems,
hay simuladores adicionales de dispositivos disponibles para
descarga en el sitio web de BlackBerry6.
Para implementar la aplicacin en un dispositivo de pruebas,
debes descargar e instalar el BlackBerry Desktop Manager7. Para
una implementacin ms rpida, se puede utilizar una herramienta llamada javaloader que viene con el JDE.
Implementacin
El BlackBerry JDE se basa parcialmente en Java ME y algunas de
sus extensiones JSR: el estndar MIDP 2.0 est integrado en el
SDK, con populares extensiones JSR que proporcionan APIs para
la interfaz de usuario, audio, vdeo y servicios de localizacin,
entre otros8. Esto signiica que las aplicaciones BlackBerry
pueden ser creadas utilizando slamente tecnologas Java ME.
4
5
6
7
8
www.oracle.com/technetwork/java
us.blackberry.com/developers/javaappdev/javaplugin.jsp
us.blackberry.com/sites/developers/resources/simulators.html
us.blackberry.com/apps-software/desktop/
www.blackberry.com/developers/docs/6.0.0api/index.html
BlackBerry: Aplicaciones Java
37
j2mepolish.org
glaze-ui.org
developer.blackberry.com/services/#platform
us.blackberry.com/developers/platform/pushapi.jsp
BlackBerry: Aplicaciones Java
38
39
Testeo
BlackBerry ofrece simuladores para varios telfonos, ya sea
incluidos con el plugin de Eclipse o como descargas independientes. Estos simuladores permiten ejecutar una aplicacin en
un PC de la misma manera que se ejecutara en un dispositivo.
Las capacidades de testeo y depuracin de Blackberry estn
a la par con las de otras plataformas como Android e iOS: los
simuladores 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 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 FledgeController13 para inyectar eventos
programticamente desde tu ordenador, o puedes utilizar la
13
docs.blackberry.com/en/developers/deliverables/15476/Using_the_
BBSmrtphnSmltr_programmatically_607582_11.jsp
BlackBerry: Aplicaciones Java
40
Firma
Muchas clases de nivel de seguridad crtico y algunas caractersticas de la plataforma (tales como trabajo con redes o APIs de
archivo) requieren una aplicacin para ser irmadas de manera
que quien publica pueda ser identiicado. Para lograr esto, es
necesario obtener una clave de irma directamente desde BlackBerry15. La irma en s se lleva a cabo mediante la herramienta
rapc, que tambin empaqueta la aplicacin para su distribucin.
Distribucin
El canal de distribucin de BlackBerry se llama App World16, y
es donde puedes publicar tus aplicaciones. Para aplicaciones
de pago, como desarrollador obtienes una participacin en
los beneicios del 70%. Adems, GetJar17 es un sitio web
independiente muy conocido que tambin publica aplicaciones
BlackBerry.
14
15
16
17
http://www.blackberry.com/developers/docs/4.1api/net/rim/device/api/
system/EventInjector.html www.blackberry.com/developers/docs/4.1api/net/
rim/device/api/system/EventInjector.html
www.blackberry.com/SignedKeys/
appworld.blackberry.com/
www.getjar.com/
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 ejemplo, 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 oicial de documentacin BlackBerry18
Los foros de desarrollo de BlackBerry19
Tambin hay una gran cantidad de conocimiento sobre
BlackBerry en Internet, que tratan algunos problemas y temas
mucho mejor que la documentacin oicial. Los motores de
bsqueda son tus amigos!
Libros
Obras impresas que se ocupan del desarrollo Java para BlackBerry:
BlackBerry Development Fundamentals20 por John Wargo
Beginning BlackBerry 7 Development 2nd Edition por
Anthony Rizk
Advanced BlackBerry 6 Development 2nd Edition por
Chris King
18
19
20
developer.blackberry.com/java/documentation/
supportforums.blackberry.com/t5/Java-Development/bd-p/java_dev
bbdevfundamentals.com/
BlackBerry: Aplicaciones Java
42
Marcus Ross
POR
BlackBerry 10
El Ecosistema
La plataforma BlackBerry 10 (BB10) es un relanzamiento global
de BlackBerry (marca comercial de Research In Motion, que el
pasado 30 de Enero del 2013 adopt la marca BlackBerry como
nombre comercial de la empresa, aunque sigue cotizando en los
ndices NASDAQ y TSK como RIMM y RIM, respectivamente). Los
dispositivos BB10 llegaron al mercado en el primer trimestre
del 2013, sin planes de actualizacin para los dispositivos de
la generacin anterior. BlackBerry ha adoptado este enfoque
con el in de ponerse al da con los sistemas operativos mviles
competidores: iOS, Android y Windows Phone 8. Otro objetivo
importante es la armonizacin de los telfonos mviles y las
tablets de BlackBerry, haciendo que funcionen con el mismo
sistema operativo y las mismas aplicaciones.
BlackBerry est sufriendo una gran presin por parte del
mercado y est invirtiendo mucho en este relanzamiento,
tienen que conseguir que sea un xito si no quieren perder
an ms terreno en el mercado mvil. Esto signiica 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 App World o el servicio push,
no han cambiado. Respecto a la seguridad, BB10 ha sido creado
con los mismos y elevados estndares por los que es bien
conocida la plataforma BlackBerry.
BlackBerry 10
44
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 (capa de compatibilidad Android 2.3.3)
BlackBerry App Generator
github.com/blackberry
developer.blackberry.com/platforms/bb10
www.qnx.com
BlackBerry 10
45
4
5
6
7
developer.blackberry.com/native/beta/
developer.blackberry.com/native/download
developer.blackberry.com/native/download
developer.blackberry.com/native/documentation/bb10/com.qnx.doc.
scoreloop.lib_ref/topic/overview.htm
BlackBerry 10
46
Peril de usuario
Tablas de clasiicacin
Retos
Premios y logros
en.wikipedia.org/wiki/QML
47
10
developer.blackberry.com/cascades/documentation/design/cascades_
exporter/
developer.blackberry.com/cascades/
BlackBerry 10
48
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 SDK11. Entre otras caractersticas,
permite escribir pginas web regulares y luego compilarlas
como aplicaciones nativas de BlackBerry con facilidad. Si
quieres imitar el estilo de la interfaz de usuario BlackBerry en
HTML, hay un proyecto en GitHub que te ayudar. Se llama
BBUi.js12 . 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.
La segunda herramienta es Ripple Emulator13. Se trata de
una extensin del navegador Chrome que acta como un simulador de dispositivos BlackBerry 10 para aplicaciones WebWorks.
Tambin emula caractersticas especicas de hardware, tales
como el acelermetro y el sensor GPS. Incluso puedes utilizarlo
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
perilado 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 Dev14 .
11
12
13
14
developer.blackberry.com/html5/download/sdk
github.com/blackberry/bbUI.js
developer.blackberry.com/html5/download/ripple
developer.blackberry.com/html5
BlackBerry 10
49
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 predeinidos, as como listeners de eventos
especicos 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, Powerlasher FDT o herramientas de lnea de comandos
Para mayor informacin, visita el website dedicado a ste
tema15.
Android en Tiempo de Ejecucin (Runtime)
Puedes utilizar el BlackBerry Runtime para ejecutar aplicaciones
Android 2.3.3 de la plataforma BlackBerry 10. Para utilizar el
runtime, primero debes volver a empaquetar tus aplicaciones
15
developer.blackberry.com/air/
BlackBerry 10
50
51
RSS feeds
Tumbler
Facebook
YouTube
Flickr
developer.blackberry.com/android
blackberryappgenerator.com/blackberry/
52
Testeo
BlackBerry contina proporcionando un simulador para telfonos BB10 como una descarga independiente18. 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 irmada para que
el desarrollador pueda ser identiicado. Este ltimo paso en
el desarrollo de una aplicacin para BlackBerry a menudo es
difcil.
Si quieres probar tu aplicacin sin irmar en un dispositivo
fsico, es necesario solicitar un archivo llamado token de
depuracin. Esta token permite a un dispositivo especico
BB10 ejecutar aplicaciones sin irmar. Para realizar este
procedimiento de coniguracin necesitas solicitar un archivo
de irma (cliente-PBDT-xxxxx.csj) a travs del BlackBerry Orden
Key Form19. Despus de recibir el archivo por email podrs
instalar un token de depuracin con las herramientas de lnea
de comandos.
18
19
developer.blackberry.com/devzone/develop/simulator/
www.blackberry.com/SignedKeys/codesigning.html
BlackBerry 10
53
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 World22 . La necesaria
cuenta de proveedor se puede crear en el Portal de Proveedores
para BlackBerry App World23.
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 dedicado24 .
20
21
22
23
24
www.blackberry.com/SignedKeys/codesigning.html
developer.blackberry.com/CodeSigningHelp/codesignhelp.html
appworld.blackberry.com/
appworld.blackberry.com/isvportal
developer.blackberry.com/distribute/enterprise_application_distribution.html
BlackBerry 10
54
Alexander Repty
POR
iOS
El Ecosistema
Breve Historia de iOS
Apple anunci iOS en la MacWorld 2007 (que por aquel
entonces se conoca simplemente como OS X, en base a Mac
OS X, el sistema operativo de la lnea de productos Macintosh),
junto con el primer iPhone, el cual fue lanzado, con iPhone OS
1.0, 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 septiembre de 2012 se hizo pblica la ltima versin
disponible hasta la fecha, la 6.0.
Dispositivos Ejecutando iOS
Actualmente, Apple vende mltiples dispositivos (con diversas
coniguraciones) que funcionan con iOS:
iPhone
iPod touch
iPad
iPad mini
Apple TV
Con la excepcin de Apple TV, todos estos dispositivos incluyen 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 lanzamiento inicial, por lo que los desarrolladores deben considerar
esto cuando crean una aplicacin. Utilizar hardware antiguo
iOS
56
1
2
en.wikipedia.org/wiki/List_of_iOS_devices
www.apple.com/pr/library/2013/01/07App-Store-Tops-40-Billion-Downloadswith-Almost-Half-in-2012.html
iOS
57
www.tiobe.com/index.php/content/paperinfo/tpci/index.html
developer.apple.com/devcenter/ios/
iOS
58
5
6
www.jetbrains.com/objc/
xamarin.com/monotouch
iOS
59
60
Aprende Ms
Blogs & Newsletters
Un buen nmero de desarrolladores publican regularmente
informacin valiosa sobre novedades en sus blogs. Uno muy
notable es el de Mike Ash9, en el que publica una serie muy
interesante de preguntas y respuestas sobre desarrollo en
Objective-C y Cocoa. Otros muchos blogs interesantes se pueden
encontrar a travs de www.planetcocoa.org.
iOS Dev Weekly10 es un importante boletn que recopila las
noticias ms interesantes, cdigo open source, herramientas,
asi como consejos de diseo y marketing en una cmoda lista,
y se la enva a los desarrolladores suscritos todos los viernes.
7
8
9
10
testlightapp.com/
hockeyapp.net
www.mikeash.com/pyblog/
iosdevweekly.com
iOS
61
Conferencias
Debido a la creciente popularidad de iOS, se producen numerosas 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)11. 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 NSConference12, 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
de ambas, planifcate con mucha anticipacin y suscrbete a
alertas sobre la salida a venta de tickets.
11
12
developer.apple.com/wwdc/about/
ideveloper.tv/nsconference/
62
l
a
s
s
o
l
o
C
caf
Ovidiu Iliescu
POR
Java ME (J2ME)
El Ecosistema
J2ME (o Java ME como se le llama oicialmente) 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. Ha tenido mucho xito en ese segmento del mercado, con una abrumadora mayora de telfonos compatibles.
J2ME tambin es compatible de forma nativa con Symbian y
smartphones BlackBerry que no se basen en BB10.
El mayor inconveniente de J2ME es que, debido a su
antigedad y segmento primario de mercado, no resulta
especialmente bien parada en comparacin a las plataformas
modernas de smartphones como Android, iPhone, BlackBerry
y Windows Phone: ofrece un conjunto de APIs con inferiores
capacidades, a menudo se ejecuta en hardware menos potente
y tiende a generar menos ingresos para el desarrollador. Como
consecuencia, la popularidad de J2ME en la comunidad de
desarrolladores ha disminuido signiicativamente en los ltimos
aos.
Entonces, por qu querras desarrollar para J2ME? Sobre
todo por una razn: el alcance del mercado. En el segundo
trimestre de 2012, las ventas de smartphones an representaban slo el 36,7% del total de las ventas de telfonos mviles
en todo el mundo1. La mayora de los dispositivos son an
telfonos de gama media que normalmente soportan Java ME.
1
gartner.com/it/page.jsp?id=2120015 gartner.com/it/page.jsp?id=2120015
gartner.com/it/page.jsp?id=2120015
Java ME (J2ME)
64
Prerrequisitos
Para desarrollar una aplicacin Java ME, necesitars::
2
3
4
5
6
7
8
9
10
11
65
Implementacin
La plataforma Java ME es bastante sencilla: comprende la
Connected Limited Device Coniguration (CLDC)13 y el Mobile
Internet Device Proile (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
Speciication Requests opcionales (JSR). Hay JSRs para todo,
desde el acceso al calendario, agenda y sistema de archivos
(JSR 75), hasta utilizar el GPS (JSR 179) y el NFC (JSR 257).
Para obtener una lista completa de JSRs relacionadas con el
desarrollo de Java ME, visita el Java Community Process' Lista
por JCP Technology15.
12
13
14
15
www.developer.nokia.com/Community/Wiki/Nokia_UI_API
java.sun.com/products/cldc/overview.html
java.sun.com/products/midp/overview.html
jcp.org/en/jsr/tech?listPOR=1&listPORType=platform
Java ME (J2ME)
66
Java ME (J2ME)
67
16
17
18
19
20
www.jcp.org/en/jsr/detail?id=226
jcp.org/en/jsr/detail?id=287
www.developer.nokia.com/Resources/Library/Full_Touch/
www.developer.nokia.com/Community/Wiki/Nokia_UI_API_1.1b
developer.samsung.com/java/technical-docs/Multi-Touch-in-Samsung-Devices
Java ME (J2ME)
68
j2mepolish.org
lwuit.java.net/
mewt.sourceforge.net
Java ME (J2ME)
Testeado
Debido a la fragmentacin de las distintas implementaciones
de Java ME, 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 algunas cosas que tienen que ser probadas en los
dispositivos.
Afortunadamente, fabricantes como Nokia25 y Samsung26 proporcionan acceso remoto de pago o incluso gratis a dispositivos
seleccionados.
24
25
26
pnggauntlet.com
forum.nokia.com/rda
developer.samsung.com
Testeado automtico
Hay varios entornos de pruebas unitarias para Java ME, incluyendo J2MEUnit27, MoMEUnit28 y CLDC Unit29; probar el sistema
y la interfaz de usuario es ms complejo dado el modelo de
seguridad de J2ME, sin embargo JInjector30 es un entorno
lexible de inyeccin de cdigo que soporta dichas pruebas. La
cobertura de cdigo tambin se puede obtener con JInjector.
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 individuales. 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.
Mnimo Comn Denominador
Puedes prevenir muchos problemas de portabilidad si limitas la
funcionalidad de tu aplicacin al mnimo comn denominador.
En el mundo J2ME, esto normalmente signiica CLDC 1.0 y MIDP
1.0. Si slo vas a publicar tu aplicacin en los pases/regiones
ms desarrollados, puedes centrarte en CLDC 1.1 y MIDP 2.0
como el mnimo comn denominador (sin ninguna API adicional
ni soporte JSR).
27
28
29
30
j2meunit.sourceforge.net
momeunit.sourceforge.net
snapshot.pyx4me.com/pyx4me-cldcunit
www.code.google.com/p/jinjector
Java ME (J2ME)
71
72
Firma
El estndar de Java para dispositivos mviles diferencia entre
las aplicaciones que han sido irmadas y las que no. Algunas
funciones de los telfonos estn disponibles slo para las
aplicaciones de conianza. Qu caractersticas se ven afectadas
y qu sucede si la aplicacin no est irmada pero utiliza una
de esas caractersticas, depende en gran medida de la implementacin. En un telfono, al usuario se le puede pedir que
habilite la funcionalidad slo una vez, en otro se le pedir
cada vez que se utilice esa caracterstica, y en un
tercer dispositivo no se podr utilizar la funcin en
absoluto. La mayora de las implementaciones
31
32
33
mobile-distillery.com
enough.de
mosync.com
34
35
36
37
javaveriied.com
verisign.com
thawte.com
www.intertek.com/wireless-mobile
Java ME (J2ME)
74
Distribucin
Las aplicaciones J2ME se pueden instalar directamente en un
telfono de mltiples maneras; los mtodos ms utilizados son
mediante una conexin Bluetooth, a travs de una conexin
directa por cable o Over-the-Air (OTA). Sin embargo, las tiendas
de aplicaciones son probablemente la forma ms eiciente de
distribuir tus aplicaciones. Ellos manejan los pagos, hospedaje
y publicidad, teniendo una participacin en los ingresos por
estos servicios. Algunas de las tiendas ms efectivas son:
38
39
40
41
42
43
44
store.handmark.com
mobilerated.com
getjar.com
publish.ovi.com
www.orangepartner.com/distribute
mobileapps.o2online.de
www.wipconnector.com/appstores/
Java ME (J2ME)
75
Vase tambin el captulo especial sobre tiendas de aplicaciones de esta gua para obtener ms informacin.
An mas, hay varios proveedores que ofrecen soluciones
para el aprovisionamiento de aplicaciones Java a travs de una
conexin Bluetooth, incluyendo Waymedia45 y Futurlink46.
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 tutoriales y recursos
relacionados, por ejemplo los disponibles en J2ME Salsa47.
Adems, el sector J2ME es un rico entorno open source. Se
pueden encontrar proyectos interesantes a travs del blog
opensource.ngphone.com.
Tambin encontrars proyectos fascinantes en la pgina de
Mobile and Embedded de java.net48, por ejemplo, el proyecto
sobre Bluetooth Marge49.
Libros
Con el paso de los aos se han llegado a escribir un buen
nmero de libros de Java ME, por ejemplo:
45
46
47
48
49
76
Java ME (J2ME)
77
Robert Virkus
POR
Windows Phone
El Ecosistema
Desde su introduccin a inales de 2010, la plataforma de
Windows Phone ha ganado altos ndices de satisfaccin entre
sus clientes, incluso superando al iPhone1, pero esa satisfaccin
no se convertido en una cuota de mercado signiicativa. En una
escala global, slo el 2% de todos los smartphones utilizaban
Windows Phone en el tercer trimestre de 20122 . Una notable excepcin es Italia, con una cuota de mercado de ms del 10%3.
La anterior cuota de mercado mxima, en Brasil, ha disminuido
por debajo del 10% con respecto a 2012, aparentemente debido
a algunas decisiones sobre precios OEM.
Los comercializadores de Windows Phone son Nokia, HTC,
Samsung y ZTE. LG no ha lanzado un dispositivo con esta
plataforma.
En el cuarto trimestre de 2012 Microsoft present Windows
Phone 8, que comparte ncleo con Windows 8 y Windows
RT, los sistemas operativos de sobremesa y tablets, respectivamente. Las aplicaciones existentes de Windows Phone 7
seguirn funcionando en Windows Phone 8, pero no podrn
acceder a nuevas caractersticas y capacidades de hardware
(a menos que utilices alguna inteligente carga dinmica de
clases). A partir de Windows Phone 8 tambin puedes desarrollar aplicaciones utilizando C/C++ y DirectX.
wmpoweruser.com/q3-2012-survey-inds-windows-phones-outscore-iphone-5in-customer-satisfaction
thenextweb.com/2012/11/01/android-grabs-75-0-market-share-in-q3followed-POR-14-9-for-ios-and-4-3-for-blackberry
guardian.co.uk/technology/2012/oct/02/windows-phone-europe-market
Windows Phone
79
Implementacin
El desarrollo de Windows Phone se lleva a cabo en C/C++, C# o
VB.NET, usando el Microsoft Visual Studio IDE o el Expression
Blend5. Las aplicaciones son creadas utilizando Silverlight,
principalmente para aplicaciones orientadas a eventos, y
DirectX, principalmente para juegos basados en un "bucle de
juego", aunque ambas tecnologas pueden ser utilizadas en
una sola aplicacin. En el caso de Windows Phone 7 tambin
se pueden crear juegos basados en XNA. Aunque este tipo de
juegos an funcionan en Windows Phone 8, sin embargo XNA
no es compatible con aplicaciones destinadas a Windows Phone
8 en exclusiva. Adems, puedes crear aplicaciones basadas en
HTML5 con PhoneGap6, sin embargo el desarrollo web no se
trata en este captulo.
4
5
6
blogs.windows.com/windows_phone/b/wpdev/archive/2012/12/26/
relecting-on-2012-scale-and-opportunity.aspx
dev.windowsphone.com
phonegap.com
Windows Phone
80
Metro/Modern UI
La caracterstica ms obvia de Windows Phone es la interfaz
fcil de usar que se centra en tipografa y contenido. Este
paradigma de interfaz de usuario llamado Metro o Modern UI7 se
ha extendido a la Xbox 360 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 fuentes en Metro. La fuente Segoe de Windows Phone inspirada
en Helvetica encaja con el enfoque moderno de la interfaz.
Authentically digital el diseo no trata de imitar objetos
del mundo real, sino que se centra en las interacciones
disponibles para soluciones digitales.
Debers aceptar los modernos principios de diseo Metro/
Modern UI en tu aplicacin, sobre todo cuando portes aplicaciones ya existentes. Los diseadores encontrarn inspiracin e
informacin en la documentacin de diseo de Microsoft8. Un
aspecto importante del diseo es la alineacin de los elementos
de tu interfaz de usuario a la rejilla estndar de Windows
Phone. Las actuales plantillas de diseo de Silverlight incluyen
la rejilla, slo tienes que quitar los comentarios en el cdigo
fuente de la pgina XAML. Tambin son importantes para la
experiencia global los live tiles, son widgets pequeos que
7
8
wikipedia.org/wiki/Metro_(design_language)
dev.windowsphone.com/diseo
81
Soporte a C/C++
Soporte a DirectX 9_3, XAudio2 y DirectXMath
Interoperabilidad entre DirectX/C++ y XAML/C#
Texto a voz
Voz a texto y comandos por voz
Bloqueo de pantallas personalizados, iconos e imgenes de
fondo
Nuevos tamaos de cuadrcula y plantillas
Nuevo control de mapas basados en Nokia, con mapas
ofline y gua a pie y en coche
Mejor integracin de la cmara con aplicaciones Lenses y
carga automtica de tareas en segundo plano
Mejor grabacin en video y mayor y ms preciso control de
la cmara
Integracin del monedero
Geotracking en segundo plano
Almacenaje de entradas de calendario
Salvar contactos sin necesidad de conirmacin del usuario
Comunicacin aplicacin a aplicacin o web a aplicacin
utilizando protocolos personalizados
Registro de extensiones de archivo
Acceso a tarjetas SD
Acceso por Bluetooth en bajo nivel; comunicacin
aplicacin a aplicacin y aplicacin a dispositivo
developer.nokia.com/Community/Wiki/Whats_new_in_Windows_Phone_8
Windows Phone
82
SDK
El SDK de Windows Phone SDK es gratuito e incluye ediciones
"Express" tanto de Visual Studio 2012 como de Expression
Blend, y requiere Windows 8 Pro para ejecutarse ya que el SDK
utiliza 'virtualizacin'. Mientras que las ediciones Express soportan todo lo necesario para desarrollar para Windows Phone,
muchas caractersticas adicionales slo estn disponibles en
las ediciones comerciales, siendo la ms destacada la opcin de
crear o utilizar las libreras de clases portables. El SDK tambin
incluye un emulador de dispositivos para ejecutar cdigo,
que utiliza la aceleracin por hardware y cuenta con un panel
de control para el control de la ubicacin, la simulacin del
acelermetro y otros.
Es importante tener en cuenta qu plataforma aprovechar en
la construccin de tu aplicacin.
Windows Phone
83
Usa C# o VB y Silverlight si
Motores de Juego
Hay algunos nuevos motores de juego para Windows Phone 8
con capacidades de aplicacin nativa:
Cocos2d-x10
Havok11
Marmalade12
OGRE13
Unity 3D14
Servicios
Hay disponibles notiicaciones push15 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 Live16 para tu aplicacin.
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 cambio rpido entre aplicaciones. Los nicos procesos que pueden
ejecutarse en segundo plano, despus de que una aplicacin se
haya abandonado, son la reproduccin de audio, el seguimiento
de la ubicacin y la transferencia de archivos. Las aplicaciones
tambin pueden programar la ejecucin de cdigo arbitrario
en segundo plano en un intervalo (cdigo que se conoce como
10
11
12
13
14
15
16
cocos2d-x.org/news/76
havok.com/products/havok-windows-ecosystem
madewithmarmalade.com/windows-phone-8
ogre3d.org/2012/10/30/ogre-now-supports-windows-phone-8
blogs.unity3d.com/2012/10/30/unity-windows-phone-8-demonstrated-atmicrosoft-build-conference
msdn.microsoft.com/library/windowsphone/develop/ff402558
msdn.microsoft.com/live
Java ME (J2ME)
85
Testeo y Analticas
Puedes hacer pruebas unitarias de las aplicaciones utilizando
el Windows Phone Test Framework18 o el Silverlight Unit Test
Framework19.
Para desarrollos basados en comportamiento est disponible
el Windows Phone Test Framework por Expensify20, pero el
proyecto parece haber quedado abandonado.
Hay varias opciones para los desarrolladores que deseen
recopilar datos y anlisis en tiempo de ejecucin. Localytics21
17
18
19
20
21
msdn.microsoft.com/library/windowsphone/develop/ff817008
wptestlib.codeplex.com
nuget.org/packages/WPToolkitTestFx
github.com/Expensify/WindowsPhoneTestFramework/
localytics.com/docs/windows-phone-7-integration
Java ME (J2ME)
86
Distribucin
Las aplicaciones para Windows Phone se distribuyen principalmente a travs del servicio Microsoft Marketplace. Aunque
el contenido de la aplicacin es revisado y restringido de una
manera similar a la App Store de Apple, Microsoft proporciona
directrices generales para la solicitud de publicacin, disponibles en App Hub24 . Aunque las herramientas de desarrollo
se proporcionan de forma gratuita, se requiere una cuenta de
pago de App Hub para implementar una aplicacin en dispositivos y distribuirla en el Marketplace. Actualmente, una cuenta
de desarrollador cuesta $99 (USD) por una suscripcin anual e
incluye 100 solicitudes de publicacin de aplicaciones gratuitas
e ilimitadas de aplicaciones de pago. La tarifa no se aplica a los
estudiantes en el DreamSpark25 ni durante el primer ao para
desarrolladores Nokia Publish. El Marketplace tambin ofrece
una distribucin beta por tiempo limitado y ofrece un hub
corporativo para empresas26. Puedes utilizar el Windows Phone
Marketplace Test Kit27 para probar la aplicacin en local antes
de enviarla para su publicacion.
22
23
24
25
26
27
lurry.com/lurry-analytics.html
msaf.codeplex.com
dev.windowsphone.com
www.dreamspark.com
msdn.microsoft.com/library/windowsphone/develop/jj206943
msdn.microsoft.com/library/windowsphone/develop/hh394032
Java ME (J2ME)
87
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 coleccin 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.
28
29
30
31
32
33
34
msdn.microsoft.com/library/windowsphone/develop/ff967558
advertising.microsoft.com/mobile-apps
www.developer.nokia.com/Distribute/NAX
smaato.com
inner-active.com
adduplex.com
developers.google.com/mobile-ads-sdk/
Java ME (J2ME)
88
36
blogs.msdn.com/b/uk_faculty_connection/archive/2011/11/23/windowsphone-free-ebook-amp-demos.aspx
windowsphonegeek.com/WPToolkitBook
Robert Virkus
POR
Windows 8
Windows 8 es primer sistema operativo de Microsoft que se
ejecuta en tablets y PCs por igual. Comparte la ilosofa de
diseo moderno de interfaz de usuario con Windows Phone,
y las nuevas aplicaciones Windows Phone se pueden ejecutar
tambin en cualquier sistema Windows 8. Las aplicaciones
Windows 8 se pueden desarrollar en C++, C#/VB.NET o JavaScript. Todos ellos son ciudadanos de primera clase en este
ecosistema, ya que todos tienen igual acceso a las APIs del
Windows Runtime (WinRT).
Mientras la adopcin inicial de Windows 8 fue mayor en
nmeros absolutos en comparacin con Windows 7, la adopcin
relativa ha sido ms lenta1. Las ventas de PCs han seguido
disminuyendo, sin embargo esto podra ser debido a los
escasos modelos de pantalla tctil disponibles. Su recepcin ha
luctuado entre radicalmente hostil y positivamente eufrica.
En 2012, la tienda de Windows 8 creci en 35.000 aplicaciones
en tan slo dos meses, aproximadamente el mismo nmero de
aplicaciones publicadas por la tienda de Windows Phone en su
primer ao de existencia.
Prerrequisitos
Para desarrollar aplicaciones de estilo Modern UI necesitas Visual Studio 12 y Blend, estando las versiones Express disponibles
de forma gratuita. Puedes instalar Windows 8 en una mquina
virtual, lado a lado con tu actual sistema operativo o como
sistema operativo principal. Tener un monitor tctil habilitado
phonearena.com/news/Wait-so-Windows-8-is-not-outpacing-Windows-7adoption-rate_id37212
Windows 8
91
Implementacin
Aunque puedes, simplemente, seleccionar el lenguaje que
coincida con los conocimientos de tu equipo, es importante
entender las diferencias en capacidades ofrecidas por las
distintas opciones:
C/C++
C#/VB.NET
JavaScript
WinRT
Silverlight/
XAML
no
HTML
no
no
DirectX
s (con
SharpDX)
no
Comparticin
de cdigo
Antiguas
aplicaciones
Windows
nativas, Xbox
profesional
otras plataformas...
Aplicaciones
antiguas .NET
Windows,
indie Xbox,
aplicaciones
Windows
Phone...
Websites,
aplicaciones
HTML5...
92
msdn.microsoft.com/library/windows/apps/br211369
msdn.microsoft.com/library/live/hh826544
msdn.microsoft.com/library/live/hh826521
93
Contratos en la Aplicacin
Windows 8 ofrece charms para cada aplicacin a los que puedes
acceder deslizndote hacia el lado derecho de la pantalla.
Hay cinco charms: buscar, compartir, iniciar, dispositivos y
coniguracin. Mediante la implementacin de los contratos
(contracts), puedes conectarte a estos charms y compartir
informacin entre aplicaciones. Declara los contratos en el
archivo de maniiesto de tu Package.appx, y a continuacin
implementa la funcionalidad requerida.
Puedes encontrar los siguientes contratos5:
Search busca en el contenido de tu aplicacin. Opcionalmente, puedes dar sugerencias de bsqueda mientras
el usuario escribe. La funcionalidad relevante est en el
namespace Windows.ApplicationModel.Search.
Share proporciona una manera de compartir datos entre
una fuente y la aplicacin de destino, al declarar el
contrato correspondiente. Si deseas que tu aplicacin comparta datos, debes ponerla a disposicin del mayor nmero
de formatos de datos como sea posible para aumentar
el nmero de aplicaciones potencialmente destinatarias.
Puedes utilizar formatos estndar tales como texto, HTML,
imgenes o crear tus propios formatos. La aplicacin objetivo puede devolver opcionalmente un quicklink que apunta
a los datos consumidos. Por ejemplo, puedes compartir
una imagen con Facebook o Flickr y obtener un enlace. Las
5
msdn.microsoft.com/library/windows/apps/hh464906
Windows 8
94
Play To reproduce datos con dispositivos conectados, por ejemplo haciendo streaming de video a un
televisor con DLNA. Comienza con el namespace
Windows.ApplicationModel.PlayTo.
Settings permite al usuario ajustar la coniguracin
dependiente de contexto desde cualquier punto de tu
aplicacin. Deine tu coniguracin con la ayuda de
Windows.UI.ApplicationSettings.
App to App Picking permite abrir o salvar archivos de la
aplicacin desde el interior de otra aplicacin. Sus clases
estn en el namespace Windows.Storage.Pickers.
msdn.microsoft.com/library/windows/apps/hh465371
Windows 8
95
Windows 8
96
Push
Puedes enviar datos y hasta imgenes a tus aplicaciones usando
el servicio de notiicacin de Windows Windows Notiication
Service (WNS)7. Esto tambin te permite actualizar las live tiles
de tu aplicacin. Usar WNS es gratis, y puedes usar tambin el
Windows Azure Mobile Services8 para simpliicar la implementacin de un servidor push.
Single Sign On
Windows 8 proporciona servicios de administracin de
credenciales de usuario9 y utiliza Microsoft Account para su
autenticacin de usuario. Puedes aprovechar esta informacin
para proporcionar un inicio de sesin nico a tus aplicaciones,
lo que te permitira identiicar al usuario directamente sin
necesidad de otra autenticacin.
Distribucin
Las aplicaciones Windows 8 se pueden distribuir solamente a
travs de Windows Store10. La participacin estndar en los
ingresos aumenta del 70% al 80% cuando tu aplicacin factura
ms de $25.000 (USD). Windows Store funciona en ms de 200
7
8
9
10
msdn.microsoft.com/library/windows/apps/hh465460
www.windowsazure.com/en-us/develop/mobile/
msdn.microsoft.com/library/windows/apps/br211367
msdn.microsoft.com/library/windows/apps/hh694084
97
Aprende Ms
Tu punto de partida para el desarrollo en Windows 8 es dev.
windows.com, y encontrars consejos y trucos de diseo en
design.windows.com.
Tambin puedes debatir sobre problemas de desarrollo en social.msdn.microsoft.com/Forums/en-US/category/windowsapps.
Encontrars cdigo de ejemplo en code.msdn.microsoft.com/
windowsapps, en diversos proyectos en codeplex.com y en los
ejemplos disponibles en msdn.microsoft.com/library/windows/
apps/br211375. La hoja de ruta para los desarrolladores de
aplicaciones ofrece un buen repaso a la planiicacin, el diseo
y el desarrollo de aplicaciones Windows 8, en
msdn.microsoft.com/library/windows/apps/xaml/br229583.
Windows 8
98
Robert Virkus
POR
Hacia Multiplataforma
Tantas plataformas y tan poco tiempo: Esa frase deine
perfectamente la situacin que tenemos en el mundo mvil.
Hay plataformas ms que suicientes 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.
Lenguaje
ActionScript
BlackBerry 10,
BlackBerry PlayBook
OS (QNX)
ninguno
C, C++
C#
Windows 8, Windows
Phone
ninguno
Java
Android, BlackBerry,
Java ME devices
Symbian
JavaScript
BlackBerry PlayBook
OS, Firefox OS, Tizen,
Windows 8
BlackBerry
(WebWorks), Nokia
(WRT)
Objective-C
iOS
ninguno
Supported natively POR the platform, for example either the primary or only
language for creating applications
Supported natively POR the platform, for example either the primary or only
language for creating applications
Hacia Multiplataforma
101
Los frameworks multiplataforma pueden solventar las barreras de lenguaje de diferentes maneras:
Tecnologas Web
Interpretacin
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 plataforma, como por ejemplo a las capacidades de geolocalizacin.
Para funciones tales como mensajera SMS tambin puedes usar
APIs de red que son independientes del dispositivo1.
Versiones de SO
Las plataformas evolucionan y, tarde o temprano, ofrecern
caractersticas especicas 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
1
www.developergarden.com/apis/
102
103
104
urbanairship.com/
Hacia Multiplataforma
105
Estrategias Multiplataforma
En esta seccin se describen algunas de las estrategias que
puedes emplear para implementar tus aplicaciones en diferentes
plataformas.
Soporte Directo
Puedes soportar varias plataformas si cuentas con un equipo
especializado para cada plataforma objetivo. Si bien esto puede
consumir muchos recursos, es muy probable que te d mejor
integracin y experiencia de usuario en cada sistema. Una va
fcil de inicio es comenzar con una plataforma y luego progresar hacia plataformas adicionales una vez que tu aplicacin
se ha defendido en el mundo real.
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
windowsphonegeek.com/Marketplace
Windows Phone
Hacia Multiplataforma
106
Comparticin de Recursos
Cuando mantienes varios equipos para diferentes plataformas
puedes ahorrar mucho esfuerzo si compartes algunas estructuras de la aplicacin:
Concepto y recursos: Esto se hace habitualmente de forma
automtica: compartir las ideas y los conceptos de la
aplicacin, el lujo de interfaz de usuario, input y output
y los recursos gricos de la aplicacin (pero debes ser
consciente de la necesidad de dar soporte a las estructuras
especicas de interfaz de usuario de cada plataforma).
Estructuras de datos y algoritmos: V un paso ms all
compartiendo estructuras de datos y algoritmos entre
plataformas.
Comparticin de cdigo del modelo de negocio:
Utilizando compiladores de multiplataforma tambin
puedes compartir el modelo de negocio entre las plataformas. Alternativamente, puedes utilizar un intrprete o
una mquina virtual y un lenguaje comn en un grupo de
plataformas.
Abstraccin completa: Algunas herramientas multiplataforma te permiten abstraerte completamente del modelo
de negocio, las vistas y el control de tu aplicacin para
diferentes plataformas.
107
applause.github.com
Licencia
MIT y GPL
Android, bada,
BlackBerry, iOS,
Symbian, webOS,
Windows Phone
MIT
iOS
LGPL
iOS
BSD
iOS
GPL
Android, iOS
MIT y GPL
Android, BlackBerry,
iOS, webOS
www.jquerymobile.com
JQTouch
Plataformas de
destino
www.jqtouch.com
iWebKit
iwebkit.net
iUI
code.google.com/p/iui
Sencha Touch
www.sencha.com/products/
touch
The M Project
the-m-project.org
109
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
Hacia Multiplataforma
110
Hacia Multiplataforma
111
Solucon
Licencia
Input
Output
Application Craft
Comercial
HTML,
CSS,
JavaScript
Comercial
HTML,
CSS,
JavaScript
Comercial
Java
Android, BlackBerry,
iOS, J2ME, Windows
Phone
Comercial
JavaScript
Android, iOS
Open Source
+ Comercial
Java ME,
HTML,
CSS
Android, BlackBerry,
J2ME, PC
Comercial
Flash
Android, BlackBerry
Playbook OS, iOS,
PC
Comercial
HTML,
CSS,
JavaScript
Android, BlackBerry,
iOS, Windows Phone
Open Source
JavaScript
Android, iOS
Comercial
HTML,
CSS, JavaScript,
RSS
Android, BlackBerry,
iOS, J2ME, Symbian,
Windows Phone
Comercial
Englishlike
Android, iOS, PC
and Web
applicationcraft.com
appMobi
appmobi.com
Codename One
codenameone.com
Corona
coronalabs.com
(Corona Labs)
J2ME Polish
j2mepolish.org
(Enough Software)
Flash Builder
adobe.com/devnet/
devices.html (Adobe)
Feedhenry
feedhenry.com
Kirin/JS
kirinjs.org/
Kony One
kony.com/node/4
LiveCode
runrev.com (RunRev)
Hacia Multiplataforma
112
Solucon
Licencia
Input
Output
MobiForms
Comercial
Drag and
Drop +
MobiScript
Comercial
C#
Android (share
code with iOS and
Windows Phone)
Comercial
C#
mosync.com
Open Source
+ Comercial
C/C++,
HTML5/JS
Android, BlackBerry,
iOS, J2ME, Symbian,
Windows Phone 7,
Windows Mobile
NeoMAD
Comercial
Java
Android, bada,
BlackBerry, iOS,
J2ME, Symbian,
Windows Phone 7
Open Source
HTML,
CSS ,
JavaScript
Open Source
+ Comercial
C++
Rhodes rhomobile.
com/products/rhodes
(Motorola)
Open Source
+ Comercial
Ruby,
HTML,
CSS,
JavaScript
Spot Speciic
Comercial
Drag and
Drop,
JavaScript
Android, iOS
www.mobiforms.com
(MobiForms)
Mono Touch
xamarin.com/
monotouch
(Xamarin)
MoSync
neomades.com
PhoneGap/Cordova
www.phonegap.com
(Adobe/Apache)
Qt
qt.digia.com
(Digia)
www.spotspeciic.com
Solucon
Licencia
Input
Output
Titanium
Open Source
JavaScript
Android, Consoles,
iOS, PC
Comercial
HTML5,
JavaScript
Android, iOS,
Windows Phone
Comercial
(Visual)
Android, BlackBerry,
iOS
Comercial
Java ME
Android, bada,
BlackBerry, brew,
Consoles, iOS, PC,
Windows Phone,
Windows Mobile
Open Source
+ Comercial
Java,
.NET,
Ruby
C++, Java,
JavaScript, .NET,
Objective-C, Python
www.appcelerator.com
(Appcelerator)
trigger.io
trigger.io
(Triggger Corp)
Verivo
verivo.com
webMethods
Mobile Designer
(formerly Metismo Bedrock)
www.metismo.com
(Software AG)
XML VM
xmlvm.org
Hacia Multiplataforma
114
Licencia
Input
Output
Cocos 2D
Open Source
C++,
HTML5,
JavaScript
Android,
BlackBerry, iOS,
Windows 8,
Windows Phone
Comercial
Lua
Android, iOS,
Kindle, nook
Comercial
C++
Comercial
C++
Android, iOS, PC
Comercial
Drag and
drop
Comercial
C++
Consoles, iOS, PC
Open Source
C++
Open Source
C++
Android, bada,
BlackBerry
Playbook OS, iOS,
PC
cocos2d-x.org
Corona
coronalabs.com
(Corona Labs)
EDGELIB
edgelib.com
(elements interactive)
Esenthel
esenthel.com
(elements interactive)
GameSalad
gamesalad.com
id Tech 5
idsoftware.com (id)
Irrlicht
irrlicht.sourceforge.
net
IwGame
drmop.com/index.
php/iwgame-engine
Hacia Multiplataforma
115
Solucon
Licencia
Input
Output
Marmalade
Comercial
C++,
HTML5,
JavaScript
Android,
bada,BlackBerry
10, BlackBerry
PlayBook OS, iOS,
LG Smart TV,
Windows Phone
Comercial
Lua
Open Source
C#, XNA
Open Source
C++
Windows 8,
Window Phone, PC
Open Source
C, C++,
Objective-C
Android, iOS, PC
Comercial
C++
Android,
BlackBerry 10, iOS,
PC, Consoles
Comercial
C, Lua
Android, bada,
iOS, PC
Comercial
C++, UnigineScript
Comercial
C#,
JavaScript,
Boo
Android,
BlackBerry 10, iOS,
Windows Phone,
PC, consoles, web
madewithmarmalade.
com (Ideaworks3D)
Moai
getmoai.com
(Zipline Games)
MonoGame
monogame.codeplex.
com
Ogre 3D
ogre3d.org
orx
orx-project.org
ShiVa 3D
stonetrip.com
SIO2
sio2interactive.com
(sio2interactive)
Unigine
unigine.com (Unigine
corp.)
Unity3D
unity3d.com (Unity
Technologies)
Hacia Multiplataforma
116
ss
ML
HT
x
Aj
a
le
le
1
Ta
b
TM
XH
CS
S2
4
HT
ML
+
S1
CS
ML
2009
HT
2005
2000
1998
1997
1996
1994
1991
2002
ML
Ja
va
We
b
Sc
r ip
De
s ig
HT
Daniel Kranz
POR
Tecnologas Web
3
4
gigaom.com/2010/04/12/mary-meeker-mobile-internet-will-soon-overtakeixed-internet/
www.businessinsider.com/mary-meeker-2012-internet-trends-year-endupdate-2012-12
gs.statcounter.com/#mobile_vs_desktop-IN-monthly-201111-201211
slides.html5rocks.com/#timeline-slide
Tecnologas Web
118
119
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 en lugar de aplicaciones nativas. El look-and-feel
similar al de aplicaciones compiladas con un nico cdigo
base para una serie de dispositivos populares, la capacidad
de acceder a hardware de dispositivos tales como la cmara y
el micrfono, el almacenamiento de datos en los dispositivos
para utilizar sitios mviles sin conexin y la optimizacin de la
pgina web segn en el tamao de pantalla, hacen de HTML5
una atractiva alternativa para el desarrollo de aplicaciones nativas. Pero HTML5 depende del navegador y es exactamente se
apoyo el que escasea actualmente. Slo el 60% de los usuarios
de Internet tienen navegadores que soporten ms del 50% de
las caractersticas actuales de HTML55. 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
5
gs.statcounter.com/
Tecnologas Web
120
6
7
8
news.cnet.com/8301-1023_3-57511142-93/html5-is-dead-long-live-html5
rng.io/
www.abiresearch.com/press/21-billion-html5-browsers-on-mobile-devicesPOR-201
www.w3.org/
Tecnologas Web
122
Tecnologas Web
123
10
11
12
jquerymobile.com
wurl.sourceforge.net/
deviceatlas.com/
Tecnologas Web
124
Pros
La solucin ms habitual (Google, Facebook, Amazon).
Mximo control.
Es posible la optimizacin segn dispositivo (por
ejemplo,iPhone, Samsung Galaxy III, ...).
Contras
Los Repositorios de Descripcin de Dispositivos (en ingls
Device Description Repositories) estn orientados a
hardware.
Aparte de los datos, es necesario un sistema de deteccin
(un simple User-Agent no es suiciente).
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
125
13
14
15
www.sevenval.com
www.netbiscuits.com
www.itml.com
Tecnologas Web
126
16
seleniumhq.org/projects/webdriver/
Tecnologas Web
127
Aprende Ms
Online
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):
www.mobilexweb.com
Mobi Thinking (el recurso de DotMobi para vendedores,
con anlisis y opiniones de expertos en marketing mvil):
www.mobithinking.com
Testing (Mobile) Web Apps: docs.webplatform.org/wiki/
tutorials/Testing_web_apps
WHATWG (la pgina de la comunidad HTML):
www.whatwg.org/
Word Wide Web Consortium (la organizacin que deine
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
Tecnologas Web
128
Accesibilidad
Independientemente de la tecnologa que elijas para desarrollar
tus aplicaciones, querrs asegurarte de que tu aplicacin puede
ser utilizada por tanta gente y en tantos mercados como sea
posible.
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, tales como TalkBack en la plataforma Android o
Talks de Nuance para la plataforma Symbian, que ofrece lectura
de pantalla y funciones de lupa. iOS incluye ahora VoiceOver1,
que es la favorita en trminos de proporcionar una interfaz
accesible en telfonos mviles.
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 posibilidades de interoperar con cualquier software de acceso de
terceros 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
1
www.apple.com/accessibility/iphone/vision.html
Accesibilidad
130
www.slideshare.net/berryaccess/designing-accessible-usable-applicationuser-interfaces-for-mobile-phones
Accesibilidad
131
Recientemente, Apple y Google han aumentado la importancia de su apoyo a este rea mediante una interfaz de
accesibilidad para mejorar sus entornos de automatizacin de
pruebas de interfaz grica. 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 detenimiento, se hace evidente que diieren ampliamente en cuanto
a sus caractersticas y APIs de accesibilidad.
132
3
4
5
6
7
developer.android.com/guide/topics/ui/accessibility/apps.html
developer.android.com/training/accessibility/index.html
developer.android.com/tools/testing/testing_accessibility.html
code.google.com/p/eyes-free
developer.blackberry.com/java/documentation/intro_
accessibility_1984611_11.html
www.blackberry.com/screenreader
Accesibilidad
133
developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/
iPhoneAccessibility
Accesibilidad
134
doc.qt.nokia.com/qq/qq24-accessibility.html
msdn.microsoft.com/en-us/library/windows/apps/xaml/hh452680.aspx
msdn.microsoft.com/en-us/library/windows/apps/hh452702.aspx
Accesibilidad
135
13
14
15
16
17
msdn.microsoft.com/en-us/library/windows/apps/xaml/hh994937.aspx
msdn.microsoft.com/en-us/library/windows/apps/xaml/jj161016.aspx
w3.org/WAI/intro/wcag
w3.org/TR/mwabp
www.w3.org/TR/mwbp-wcag/
Accesibilidad
136
Aplicaciones Corporativas:
Estrategia Y Desarrollo
Los responsables de decisiones corporativas ven actualmente
las aplicaciones empresariales mviles como un factor estratgico, una necesidad, ms que como una mera entrada en una
hoja de clculo de contabilidad. Las aplicaciones empresariales
internas son capaces de reducir la latencia de la transferencia
de informacin dentro de una organizacin, incrementando la
agilidad del trabajador al hacer disponibles datos de carcter
competitivo en cualquier momento y en cualquier lugar. Las
aplicaciones tambin pueden permitir a las empresas comprometerse con sus clientes, proveedores y consumidores inales,
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 aianzando, permitiendo al personal
utilizar sus dispositivos personales para conectarse a la
infraestructura TIC, descargar contenido seguro y usar aplicaciones empresariales. Con la llegada de BYOD, una empresa se
expone a riesgos que tradicionalmente no se consideraban en la
estrategia TIC corporativa. La adopcin temprana en la empresa
Aplicaciones Corporativas: Estrategia Y Desarrollo
138
Estrategia
Hoy en da, muchas empresas tienen un Chief Mobile Oficer
(CMOO) o un puesto equivalente. 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 CMOO podra considerar
la creacin de un Consejo de Innovacin Mvil (MIC, en ingls
Mobile Innovation Council). El MIC debe 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
inales de varios departamentos con experiencia en los procesos
de negocio ms relevantes.
139
140
141
Monitorizacin de dispositivo
Control de licencias
Distribucin va solucin interna Over-The-Air (OTA)
Inventariado de software
Control de recursos
Control remoto
Gestin de la conexin
Soporte y distribucin de aplicaciones
Las medidas de seguridad incluyen:
Proteccin de contraseas
Encriptacin de datos en el dispositivo
Encriptacin de datos OTA
Bloqueo remoto de dispositivos
Limpieza de datos remota
Aplicaciones Corporativas: Estrategia Y Desarrollo
142
Reprovisionamiento de dispositivos
Copia de seguridad de datos en los dispositivos
Aunque las soluciones MDM y MAM ofrecen la gestin y el
envo de aplicaciones a los dispositivos, proporcionando una
gestin multiplataforma, tambin existen mtodos especicos
del sistema operativo para algunos aspectos de la gestin de
aplicaciones, as como su envo y despliegue.
Android ofrece la Google Play Store para Empresas, que
permite a una compaa distribuir y gestionar aplicaciones
Android a travs de una Google Play Store personalizada.
Apple cuenta con el Acuerdo de Compras por Volumen,
que permite a las empresas realizar compras en bloque de
aplicaciones pblicas de la App Store para ser distribuidas
entre sus empleados de manera gratuita va descarga, hasta
agotar el nmero de compras realizadas.
Microsoft ofrece el Microsoft System Center 2012 (anteriormente System Center Mobile Device Manager), con MDM
para dispositivos Windows.
RIM BlackBerry cuenta con el Business Enterprise Server
(BES), permitiendo un detallado MDM para dispositivos
BlackBerry.
143
1
2
http://www.antennasoftware.com
http://www.kony.com
Aplicaciones Corporativas: Estrategia Y Desarrollo
144
SpringWireless3
Sybase Unwired Platform4
Syclo, adquirida recientemente por SAP5
3
4
5
http://www.springwireless.com
http://www.sybase.com/products/mobileenterprise/sybaseunwiredplatform
http://www.syclo.com
Aplicaciones Corporativas: Estrategia Y Desarrollo
145
146
Julian Harty
POR
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 analticas1.
Hay muchos productos comerciales que dicen que ofrecen
potentes y fciles soluciones para aadir analticas a nuestras
aplicaciones, incluso hay algunos de cdigo abierto. Podramos
simplemente elegir una de estas soluciones y esperar que nos
funcione; sin embargo, corremos el riesgo de ahogarnos en un
turbulento mar de datos cuyo signiicado desconocemos y del
que no podremos escapar fcilmente. En este captulo se incluyen algunos consejos y orientacin para ayudarte a entender
cmo las analticas mviles pueden ayudarte a comprender
cmo est siendo utilizada tu aplicacin. Descubrirs cmo
elegir una solucin adecuada e implementarla.
Ponindote En Marcha
Muchos de los proveedores de soluciones de analticas para mviles incluyen un apartado 'Getting Started' donde se aprende
cmo comenzar a utilizar sus productos. Algunos ejemplos son
Flurry2 y KISSmetrics3.
En general, es necesario registrarse antes de que puedas
utilizar cualquiera de los productos de manera til, ya que
1
2
3
blog.velti.com/mobclix-index-the-when-where-what-of-apps, static.usenix.
org/event/sec11/tech/slides/enck.pdf
support.lurry.com
support.kissmetrics.com/getting-started/overview
Analticas Mviles
148
Decidir Qu Medir
Qu te gustara a medir, comprender, acerca de cmo se est
utilizando la aplicacin? Algunas sugerencias:
150
5
6
http://en.wikipedia.org/wiki/Coordinated_Universal_Time en.wikipedia.org/
wiki/Coordinated_Universal_Time]
en.wikipedia.org/wiki/Percent-encoding
msdn.microsoft.com/en-us/library/live/hh243648
151
Adaptando Tu Cdigo
Puede que tengas que declarar capacidades adicionales necesarias para que los anlisis mviles funcionen correctamente
cuando se integran con tu aplicacin.
Para Android, a stos se les conoce como permisos. Probablemente las analticas necesitarn permisos de Internet de
modo que los eventos puedan ser enviados online, y permisos
centrados en la localizacin en el caso de que la solucin registre la ubicacin del telfono. Si tu aplicacin ya est utilizando
esos permisos, no es necesario especiicar su uso de nuevo.
Para iOS, UIRequiredDeviceCapabilities indica a
iTunes y a la App Store qu caractersticas de dispositivo requiere la aplicacin. Se implementa como un diccionario donde los
elementos se especiican 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
gua de arranque rpido7 que incluye un ejemplo de coniguracin de la capacidad ID_CAP_IDENTITY_DEVICE.
http://www.localytics.com/docs/windows-phone-7-integration/ www.
localytics.com/docs/windows-phone-7-integration/]
152
Privacidad
Recuerda que debes explicar a los usuarios inales que la
aplicacin est diseada para registrar y compartir informacin
acerca de cmo la aplicacin se est utilizando, a ser posible
en los trminos y condiciones que desees. Puede que necesites,
o te interese, que los usuarios tengan capacidad de decidir
si permiten un seguimiento a su uso de la aplicacin. Si es
as, faciltale al usuario el control sobre los ajustes; adems,
en.wikipedia.org/wiki/Triangulation_(social_science)
Analticas Mviles
153
9
10
11
12
www.google.com/analytics/terms/us.html
support.kissmetrics.com/apis/objective-c
mixpanel.com/docs/people-analytics/android
http://jnorthrop.me/2012/07/2/privacy-considerations-mixpanel-peopleanalytics/
Analticas Mviles
154
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:
Michel Shuqair
POR
http://en.wikipedia.org/wiki/VP8 en.wikipedia.org/wiki/VP8]
157
Contenedor
Protocolo
Vdeo
H.264, H.263
Audio
Resoluciones Clsicas
Resoluciones Comunes
Resoluciones HD
Analticas Mviles
158
dss.macosforge.org
www.ffmpeg.org
www.microsoft.com/windows/windowsmedia/forpros/server/server.aspx
Analticas Mviles
159
Descarga Progresiva
Para evitar tener que conigurar 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). Nota: un
archivo mp3 no necesita, ni permite, este procesamiento.
Probablemente, el software de hinting de cdigo abierto ms
iable es Mp4box5.
gpac.wp.institut-telecom.fr/mp4box/
160
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 codiicadores H263, H264, AAC y AMR. Hay buenos
conversores disponibles en FFMPEG, tales como Super de
eRightSoft6. Para usuarios Mac, QuickTime pro (versin de
pago) es una buena alternativa para codiicar y realizar hints
sobre archivos 3go y mp4. Si buscas una solucin completa de
servidor con base Java/opensource, echa un vistazo a Alembik7.
6
7
www.erightsoft.com/super
www.alembik.sourceforge.net
MD G G
CREATIVE
161
Alex Jonsson
POR
Implementando Servicios
Basados en Localizacin
Los servicios basados en localizacin son uno de los temas
candentes en las aplicaciones mviles. Aunque nadie ha
demostrado an que la informacin de localizacin sea lucrativa
en s misma, las aplicaciones que contienen un componente
geogrico suelen digirir a servicios ms relevantes, que a su
vez pueden contribuir a unos mayores ingresos. Conocer la ubicacin de un usuario signiica que puedes enviarle informacin
ms relevante, ayudndole a encontrar un restaurante cercano,
teniendo en cuenta el pronstico local del tiempo, encontrando
a sus amigos, o facilitndole el descubrimiento de rutas pintorescas para bicicleta que hayan sido recomendadas por otros
ciclistas. Sin embargo, obtener datos de localizacin es slo la
mitad de la historia, ofrecer al usuario una representacin con
signiicado es un factor clave en muchas de las aplicaciones, lo
que normalmente signiica mostrar una representacin grica
superpuesta con rutas, puntos de inters, etctera. An as, una
lista completa de recursos seleccionados por proximidad puede
ser muchas veces ms fructfera que una lenta vista de mapa
con scroll. En resumen, los servicios de localizacin suelen
trabajar silenciosamente en segundo plano y no siempre son
transparentes para el usuario inal.
163
164
165
Servicios de Mapas
Poca gente se perdi la bien poco exitosa presentacin de los
mapas de Apple en la segunda mitad de 2012, donde ciudades,
monumentos y calles estaban desaparecidos o eran incorrectos,
ni tampoco el lanzamiento de Google de una aplicacin de
mapas para iOS justo antes de Navidad.
En general, un servicio de mapas toma una posicin y un
puado de metadatos como parmetros de entrada y devuelve
un mapa, con capas adicionales de metadatos contextuales. El
propio mapa puede estar en la forma de uno o ms bitmaps,
vectores o una combinacin de ambos. Los datos en vector
tienen varias ventajas sobre los bitmaps: las representaciones
vectoriales consumen menos ancho de banda y permiten hacer
zoom arbitrariamente desde el espacio hasta tu cara. 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 ijo, nombrados
segn sus coordenadas.
Mapas gratuitos, tanto bitmaps como vectores, son Open
Street Map1 o CloudMade2 . Los comerciales incluyen mapas de
Garmin3 o los recursos Bing de Microsoft4, entre otros.
Algunas soluciones, como Google Maps5, 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 intercambiables.
1
2
3
4
5
wiki.openstreetmap.org/wiki/Software
www.cloudmade.com
garmin.com
www.microsoft.com/maps/developers
www.code.google.com/apis/maps
166
<entry>
<title>Byviken's fortress</title>
<description>Swedish 1900-century army
installation, w. deep mote
</description>
<georss:point>18.425 59.401</georss:point>
</entry>
168
169
Comunicaciones de Campo
Cercano
A pesar de que en los ltimos tres aos ha aumentado el
inters en las Comunicaciones de Campo Cercano (o NFC, del
ingls Near Field Communications), NFC no es en realidad una
tecnologa nueva. NFC es una evolucin de la identiicacin
por radiofrecuencia (RFID), que ha estado en funcionamiento
desde principios de los 901. NFC extiende las capacidades de
RFID y, al mismo tiempo, mantiene la compatibilidad con las
tecnologas ms antiguas. Durante aos, la tecnologa RFID se
ha utilizado principalmente para el seguimiento de objetos y
el pago por contacto. La tecnologa NFC, sin embargo, permite
algo ms que hacer pagos. NFC es una interfaz y protocolo
construido sobre RFID y que est dirigido a los dispositivos
mviles. La tecnologa funciona sobre banda ISM sin licencia
(del ingls Industry Scientiic Medical) de 13,56 MHz que limita
el rango de operacin a 3 cm o contacto directo, y proporciona
a los dispositivos mviles un medio de comunicacin seguro
sin ninguna coniguracin de red. Esto es una ventaja aadida
respecto a Bluetooth, que requiere parear los dispositivos para
establecer comunicacin.
1
www.nearieldcommunication.org/history-nfc.html
171
www.nearieldcommunication.org/bluetooth.html
www.developer.nokia.com/Community/Wiki/Understanding_NFC_Data_
Exchange_Format_(NDEF)_messages y www.nfc-forum.org/specs/
172
www.nfc.cc/technology/nfc/
173
El Elemento Seguro
En el corazn de cualquier dispositivo de tarjeta emulada se
encuentra el elemento seguro (o SE, del ingls Secure Element)5
que contiene los datos asegurados (informacin de tarjetas de
crdito, entre otros6). 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 especiicacin 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 Wallet7 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
Mobilee estn emitiendo tarjetas NFC SIM.
5
6
7
nearieldcommunication.com/developers/nfc-architecture/
www.smartcardalliance.org/
www.google.com/wallet/faq.html
Comunicaciones de Campo Cercano
174
175
Implementacin de NFC
Windows Phone 8: El WP8.0 SDK ofrece 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 en8.
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 desarrolladores9.
BlackBerry: Su ltimo SDK provee de APIs de alto nivel para
NFC. Ejemplos de cdigo para implementar un lector y grabador
de etiquetas NFC10, e informacin adicional en los sitios web de
BlackBerry sobre cmo usar el modo emulacin en BlackBerry11.
8
9
10
11
msdn.microsoft.com/en-us/library/windowsphone/develop/jj207060
developer.android.com/reference/android/nfc/package-summary.html
docs.blackberry.com/en/developers/deliverables/34480/Near_Field_
Communication_1631111_11.jsp
supportforums.blackberry.com/t5/Java-Development/NFC-Card-EmulationPrimer/ta-p/1596893
176
Bob Heubel
POR
Implementando
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 convincente. 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 retroalimentacin 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 deinen
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 inal. Sientes una satisfactoria conirmacin de tu accin.
En comparacin, pulsar un botn virtual se percibe hueco,
sin efecto hptico para simular esa misma conirmacin de la
accin. An ms, sin una conirmacin tctil hptica obligas al
usuario a coniar 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
Implementando Vibracin Hptica
178
descontento y, poco despus, Sony incorpor la retroalimentacin 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 planiicacin
antes de iniciar tu implantacin hptica. Una vez que el
proyecto est deinido 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 conianza 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 eicaz 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 Vibracin Hptica
179
iOS
iOS es probablemente la plataforma con menor documentacin
sobre vibracin para desarrolladores, ya que Apple 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 SysSoundViewController1 con la
funcin AudioServicesPlaySystemSound y la constante
kSystemSoundID_Vibrate para iniciar la vibracin en el
iPhone. La llamada a esta constante mantendra el motor activo
durante unos 2 segundos.
developer.apple.com/search/index.php?q=SysSoundViewController
180
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 ines de accesibilidad. Por ejemplo, el Servicio de
Accesibilidad KickBack proporciona retroalimentacin hptica
y est disponible como parte del proyecto de cdigo abierto
eyes-free2 . 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
debes habilitar el permiso android.permission.VIBRATE
para permitir a tu aplicacin vibrar. A continuacin, usa
la clase Vibrator3 con la funcin getSystemService y
Context.Vibrator_Service 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.
2
3
code.google.com/p/eyes-free
developer.android.com/index.html#q=Vibrator
181
4
5
immersion.com/haptic/sdk
immersion.com/haptic/guide
BlackBerry 10
BlackBerry ofrece el mismo control bsico
de vibracin que Android, pero sin extensiones. Utiliza la clase VibrationController6
con startVibrate(int duration) y
stopVibrate(int duration).
Adems, ahora BlackBerry incluye un parmetro de intensidad (1-100) a disposicin de los desarrolladores.
Windows 8
Windows ofrece un mtodo bsico de control de vibracin, pero
actualmente sin extensiones de mtodo. Usa la clase
VibrateController7 con los mtodos Start & Stop para
hacer vibrar el motor del dispositivo de 0 a 5 segundos. Para
un control ms ainado de la duracin, necesitars aadir un
mtodo TimeSpan para poder usar valores de milisegundos.
La clase mencionada de Windows 8 es la misma que la clase
previa en Windows 7.
6
7
developer.blackberry.com/search/?search=VibrationController
social.msdn.microsoft.com/search/en-us?query=VibrateController
183
Mostafa Akbari
POR
Implementando
Realidad Aumentada
La realidad aumentada (RA, del acrnimo ingls AR a partir
del trmino Augmented Reality) es una tecnologa que ampla
el mundo real con elementos virtuales. Componentes reales
y virtuales se combinan en tiempo real para aumentar la
percepcin de la realidad, aadiendo informacin adicional a un
entorno del mundo fsico. Aunque la realidad aumentada visual
es su forma ms comn, esta tecnologa puede apelar a todos
los sentidos. La informacin aadida puede incluir un objeto
tridimensional que se funde con el entorno real, una superposicin de dos dimensiones que contiene texto, o simplemente
un archivo de audio.
El pronstico para el 2013 es de 200 millones de usuarios de
realidad aumentada, mientras que para el 2020 se estima que
el nmero total de consumidores que utilicen aplicaciones de
RA suba hasta los mil millones. Segn Research and Markets,
el crecimiento del mercado de RA es exponencial. Con un
crecimiento de ventas de 181 millones de dlares (USD) en
2011, se espera un incremento a una tasa de crecimiento del
95,35%, hasta alcanzar 5.155 millones en el ao 2016. Datos
disponibles en lnea.1
www.researchandmarkets.com/reports/1963197/
Implementando Realidad Aumentada
185
bitstars.com/?page_id=119
github.com/bitstars/droidar
Implementando Realidad Aumentada
186
Seguimiento
Determinar la ubicacin es una parte esencial de los sistemas
modernos de realidad aumentada. Es tan necesario determinar
la posicin del usuario como colocar los objetos virtuales
4
5
6
7
www.wikitude.com/app
www.layar.com/features/#feature-layarapp
www.metaio.com
augmentedblog.wordpress.com/2012/07/24/ikea-2013-catalog-hasaugmented-reality/
187
188
189
190
Layar
En sus inicios, Layar era una plataforma RA basada en la
localizacin, con capas de fundido de entrada y muy limitadas
posibilidades de interaccin para el usuario. Actualmente,
Layar cambiado su enfoque de capturar de elementos 2D a
aumentar imgenes. El nuevo SDK y las herramientas aines
(llamadas creadores de capa) estn especialmente diseados
para extender la sobreimpresin de contenido multimedia. El
Layar Player SDK para iOS permite construir aplicaciones que no
necesitan el navegador Layar.
http://www.layar.com
DroidAR
DroidAR SDK se cre para el desarrollo de aplicaciones de RA
interactivas basadas en la localizacin. DroidAR proporciona
un seguimiento hbrido y est basado en marcadores, pero no
aumenta imgenes 2D. Su fuerza reside en construir aplicaciones que se utilizan en movimiento, por ejemplo, juegos de RA o
aplicaciones de compra de productos. Por el momento, DroidAR
slo es compatible con dispositivos Android.
github.com/bitstars/droidar
DFusion
El SDK D'Fusion de Total Immersion ofrece captura de elementos
2D para aumentar imgenes y es muy similar a otros SDKs como
el de metaio, Qualcomm y Layar. En algunos paquetes del SDK
se ofrece rastreo de la cara humana y libreras de deteccin de
movimiento.
www.t-immersion.com
191
n
To Tota
ol
w o l Im
m
rk
e
s
AR
Fu
dA
oi
Dr
r
ya
La
s io
al
Me
ta
io
Qu
ia
or
it u
Vu
f
ik
W
SDKs de Realidad
Aumentada
de
SD
co
rs
io
ARToolwork
ARToolworks ofrece SDKs tales como NyARToolkit. Sus SDKs
slo ofrecen realidad aumentada basada en marcadores y se
distribuyen bajo un modelo de licencia equitativo.
www.artoolworks.com/products/mobile/
RA basada en localizacon
iOS y Android
SDK para RA interactiva
Seguimiento hbrido
Deteccin de marcadores
Aumentado de imagen 2D
Potencial de escalado
Deteccin de pasos
Forum de desarrolladores
Costes de licencia
192
Introduccin al Desarrollo de RA
Esta seccin te dar una introduccin general a los conceptos
clave necesarios para crear aplicaciones de RA. Una vez que
entienda estos conceptos, deberas ser capaz de elegir el
framework adecuado para tu proyecto.
El Mundo Real Y El Mundo Virtual
RA signiica colocar objetos artiiciales en el mundo real, de
alguna manera, utilizando una capa virtual. Esta capa virtual,
o mundo virtual, y su sistema de coordenadas estn ligados
al mundo real por puntos de referencia. Una referencia puede
ser una posicin de GPS en el caso de una aplicacin de gua
turstica que proporciona informacin basada en la ubicacin
sobre PDIs, o tambin puede ser un marcador visual, por ejemplo un juego impreso en una caja de cereales de desayuno, que
se podra jugar en cualquier parte del mundo y slo necesitara
la referencia relativa a esa caja.
Mapeando Entre Dos Mundos
Para aplicaciones RA basadas en localizacin se requiere un
mapeo mutuo entre la posicin en constante cambio en el
mundo real y la posicin en el mundo virtual. Motores de
renderizado como OpenGL v1 y v2 reducen la complejidad de
este proceso y aumentan velocidad y precisin en tiempo real.
El motor tambin se encarga de hacer coincidir las posiciones
en el mundo virtual y real de la cmara, y garantiza transiciones
luidas en la cmara cuando estas posiciones cambian. Para
hacerte la vida ms fcil, como desarrollador puedes utilizar
motores extendidos como gameplay8 o Unity9.
8
9
www.gameplay3d.org/
unity3d.com
Implementando Realidad Aumentada
193
194
195
196
Dean Churchill
POR
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. Usamos potentes mviles conectados para una
multitud de cosas todos los das. 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 conianza.
Actualmente, las empresas estn desarrollando aplicaciones
que se aprovechan de tal cercana y conianza. 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.
Es evidente que las aplicaciones mviles van a atraer la
atencin de hackers y ladrones cuyos intereses se extienden
mucho ms all de conseguir gratis una aplicacin de 99
cntimos. Los datos histricos de la red y las defensas de punto
inal (como antivirus) no son suicientes. Incorporar medidas de
seguridad en una aplicacin mvil es un tema crtico.
La arquitectura de las aplicaciones mviles sigue evolucionando. Algunas aplicaciones son slo nativas, y requieren de
bases de cdigo muy diferentes para cada sistema operativo
mvil. Otras son webviews, poco ms que la URL de un sitio
web envuelta en un icono. Algunas son hbridas, una combinacin de funcionalidad de aplicacin nativa con webviews. La
mayora de aplicaciones mviles necesitan conectarse con los
servicios de back-end utilizando tecnologas web para buscar
Seguridad De La Aplicacin
198
199
Seguridad De La Aplicacin
200
Protegiendo Tu Aplicacin
Escondiendo el Plano de Tu Cdigo
Algunas plataformas mviles se programan utilizando cdigo
administrado (Java o NET.), integrado por los cdigos de
bytes ejecutados por una mquina virtual, en lugar de hacerlo
directamente en la CPU. Los formatos binarios para estas
plataformas incluyen metadatos que establecen la jerarqua de
clases y dan el nombre y tipo de cada clase, variable, mtodo y
parmetro. Los metadatos ayudan a la mquina virtual a implementar algunas de las caractersticas del lenguaje (por ejemplo,
la relexin). 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 coniguracin 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
201
gcc.gnu.org/wiki/Visibility
Seguridad De La Aplicacin
202
203
204
Mejores Prcticas
No Almacenes Secretos o Informacin Privada
Minimiza la cantidad de informacin sensible almacenada en el
dispositivo. No almacenes las credenciales o claves de cifrado,
a menos que se utilice un almacenamiento seguro protegido
por una contrasea compleja. En su lugar, guarda los tokens
de autenticacin que tienen tiempo de vida y funcionalidad
limitados.
Los archivos de registro son tiles para diagnosticar errores
en el sistema y hacer un seguimiento del uso de las aplicaciones, pero vigila no violar la privacidad de los usuarios mediante
el almacenamiento de informacin de ubicacin, o registrar
informacin personalmente identiicable de los mismos. Algunos
pases tienen leyes que restringen la informacin de seguimiento que se puede recopilar, as que asegrate de comprobar
las leyes al respecto de los pases en los que ser utilizada tu
aplicacin.
No 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 los
datos protegidos, se puede irrumpir en los almacenes de claves
por fuerza bruta, a menos que el usuario proteja el dispositivo
con una contrasea compleja y de gran longitud.
Seguridad De La Aplicacin
205
Herramientas
Proteccin
El renombrado de cdigo bsico de Java puede ser realizado
mediante Proguard2, una herramienta de cdigo abierto, y
GuardIT de Arxan3.
Dos comercializadores de herramientas de proteccin de
cdigo gestionado (Java y .NET) son Arxan Technologies4 y
PreEmptive Solutions5.
La mayora de vendedores de herramientas de proteccin de
cdigo nativo y libreras criptogricas de caja blanca son Arxan
e Irdeto6.
Las tcnicas para proteger Android frente a manipulacin de
datos estn documentadas en androidcracking.blogspot.com.
2
3
4
5
6
www.proguard.sourceforge.net
arxan.com
arxan.com
preemptive.com
www.irdeto.com
Seguridad De La Aplicacin
206
Aprende Ms
A continuacin, algunos recursos y referencias tiles que
pueden ayudarte:
Apple ofrece una gua general de seguridad de software10.
Tambin incluye mltiples enlaces a temas ms detallados
de su plataforma.
Hay cursos comerciales de entrenamiento disponibles para
iOS y Android11, y el Lancelot Institute12 ofrece cursos de
programacin segura que cubren iOS y Android.
O'Reilly (2011) ha publicado un libro sobre seguridad en
Android, Jeff Six: Application Security For The Android
Platform. Processes, Permissions and Other Safeguards (Dec
7
8
9
10
11
12
sourceforge.net/projects/paros
sourceforge.net/projects/wireshark
www.hex-rays.com
developer.apple.com/library/mac/navigation/#section=Topics&topic=Security
marakana.com/training/android/android_security.html
www.lancelotinstitute.com
Seguridad De La Aplicacin
207
13
14
15
16
17
18
19
20
208
Conclusiones
Cada vez hay mayor conianza en las aplicaciones mviles, pero
estn expuestas a mucha gente que quisiera aprovecharse de
tal conianza. El nivel adecuado de seguridad de una aplicacin
es algo que debe considerarse para cada caso en particular. Al
inal, tu aplicacin va a estar ah fuera, sola ante el peligro,
y tendr que defenderse de los piratas informticos y otras
amenazas maliciosas, donde quiera que vaya.
Invierte tiempo en aprender acerca de las caractersticas y
capacidades de seguridad de las plataformas mviles que tienes
como objetivo. Usa tcnicas como el modelado de amenazas
para identiicar 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.
Seguridad De La Aplicacin
209
Julian Harty
POR
Testeando Tu Aplicacin
Despus de todo ese duro trabajo creando tu aplicacin, qu
tal probarla antes de publicarla? Probar aplicaciones mviles
sola ser una tarea casi enteramente manual; afortunadamente,
las pruebas automatizadas son viables actualmente para
muchas de las plataformas mviles. Un gran nmero de las
ms importantes incluyen la automatizacin de pruebas en sus
herramientas bsicas, incluyendo iOS y Android.
Hay disponibles herramientas de automatizacin de pruebas
multiplataforma para las plataformas ms populares, algunas
son gratuitas y de cdigo abierto mientras que otras son de
pago.
En este captulo se tratan los temas generales, las pruebas
para plataformas especicas se explican en sus captulos
correspondientes. Vamos a empezar por cubrir varios conceptos
clave que deben tenerse en cuenta antes de que el cdigo sea
creado, ya que afectan a la forma en que se escribir, y que
incluyen:
Testeabilidad
Desarrollo Guiado por Pruebas
Pruebas unitarias
211
Testeando Tu Aplicacin
212
Testeando Tu Aplicacin
213
Pruebas Unitarias
Las pruebas unitarias consisten en escribir pruebas automatizadas que prueban pequeas porciones de cdigo, por lo general
slo unas pocas lneas de cdigo fuente. El cdigo fuente
puede ser la aplicacin de un mtodo o funcin, por ejemplo,
que comprueba si un dato tiene el formato correcto o no. Las
pruebas unitarias tienen una larga tradicin en el desarrollo de
software, en el que JUnit2 ha generado frameworks similares
para prcticamente todos los lenguajes de programacin
utilizados para desarrollar aplicaciones mviles.
Las pruebas unitarias pueden ser escritas por cualquier
persona que pueda escribir software, sin embargo para obtener
el mximo beneicio deberan ser escritas por el mismo desarrollador que escribe el cdigo fuente de la aplicacin.
Las pruebas unitarias son slo un aspecto de las pruebas
automatizadas, por lo que no son suicientes en s mismas para
1
2
www.informit.com/store/product.aspx?isbn=0321774183
en.wikipedia.org/wiki/JUnit
Testeando Tu Aplicacin
acreditar el funcionamiento de una aplicacin. Ayudan a los desarrolladores 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
conianza en la aplicacin.
215
www-plan.cs.colorado.edu/diwan/3308-07/p17-armour.pdf
Testeando Tu Aplicacin
216
Android, iOS y Windows Phone), los telfonos deben estar conigurados 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 diiere. 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.
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 inales
Pruebas de internacionalizacin y localizacin
Testeando Tu Aplicacin
217
Phase 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
desaiante 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 veriicaciones 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 veriicar que tu aplicacin
responde a sus criterios de presentacin. Estas directrices
pueden ayudarte incluso si tu objetivo son otras tiendas de
aplicaciones.
Apple
https://developer.apple.com/appstore/
resources/approval/guidelines.html (Apple
account needed for access)
Android
http://developer.android.com/distribute/
googleplay/publish/preparing.html#coreapp-quality
Windows Phone
http://msdn.microsoft.com/en-us/
library/windowsphone/develop/
hh394032(v=vs.105).aspx
BlackBerry
http://developer.blackberry.com/devzone/
appworld/tips_for_app_approval.html
Testeando Tu Aplicacin
218
Fase 4: Vinculacin
Esto incluye bsqueda, conianza, descarga e instalacin. Una
vez que tu aplicacin es de disponibilidad pblica, los usuarios
necesitan encontrarla, coniar en ella, descargarla e instalarla.
Podemos probar cada aspecto de esta fase. Intenta buscar tu
aplicacin en la tienda de aplicaciones pertinente y en los motores de bsqueda principales. De cuntas maneras diferentes
puede ser encontrada por los usuarios de destino? Qu pasa
con los usuarios fuera de los grupos objetivo, quieres que la
encuentren? Cmo van a coniar los usuarios en tu aplicacin
lo suiciente 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
irmado que causen que sea rechazada por algunos dispositivos.
Fase 5: Validacin
Esto incluye el pago, el uso y la retroalimentacin. Como
seguramente ya sabes, es poco probable que una aplicacin
mvil con poco feedback tenga xito. Adems, muchas de las
aplicaciones tienen una vida muy corta en el telfono de un
usuario. Si la aplicacin no es de su agrado ni le involucra en
pocos minutos, es probable que sea descartada o ignorada.
Y, si ests buscando obtener pagos, vale la pena probar las
diferentes formas de pago, sobre todo para aquellos integrados
en la aplicacin.
Considera encontrar maneras de probar los siguientes puntos
prcticos:
Deteccin y reporting de problemas. Pueden incluir tu
propio cdigo, utilidades de terceros y servicios online.
Testeando Tu Aplicacin
219
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 ijo,
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 aplicaciones y dispositivos.
Vale la pena considerar las directrices en appqualityalliance.
org al disear casos de prueba. Por ejemplo, se incluyen pruebas 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".
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 kilmetros e incluso en otro continente.
*Testeo crowd sourced: en el que otros probadores
realizan tests en tu nombre.
Testeando Tu Aplicacin
220
Dispositivos Fsicos
A pesar de que los emuladores y simuladores pueden proporcionar pruebas primitivas pero efectivas de tus aplicaciones, e
incluso permitir que las pruebas sean totalmente automatizadas
en algunos casos, en ltima instancia tu software necesita
funcionar en telfonos reales, como los utilizados por los
usuarios objetivo. 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 especicas 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:
Navegacin de la interfaz de usuario: por ejemplo,
pueden los usuarios utilizar la aplicacin con una sola
mano? Efectos de las diferentes condiciones de iluminacin: 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.
Control Remoto
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 desarrolladores de software registrados. Tanto Nokia4 (para MeeGo
y Symbian) y Samsung5 (para Android y Bada) proporcionan
acceso restringido, pero diario y gratuito.
Tambin puedes utilizar servicios comerciales de empresas
como PerfectoMobile6 o DeviceAnywhere7 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
4
5
6
7
apu.ndhub.net/devices
rtl.innovator.samsungmobile.com/
www.perfectomobile.com
www.deviceanywhere.com
Testeando Tu Aplicacin
222
Automatizacin de Pruebas
Las pruebas automatizadas pueden ayudarte a mantener y
mejorar tu celeridad, tu velocidad produciendo capacidades,
proporcionando feedback temprano de problemas. Para ello,
tienen que estar bien diseadas e implementadas. De lo
contrario, corres el riesgo de duplicar la carga de trabajo para
mantener un embrollo de pruebas automatizadas averiadas y
poco iables, as como una aplicacin en esas mismas condiciones. Las buenas pruebas automatizadas imitan las buenas
prcticas de desarrollo de software, por ejemplo utilizando
Testeando Tu Aplicacin
223
en.wikipedia.org/wiki/Design_Patterns
en.wikipedia.org/wiki/Behavior-driven_development
github.com/cucumber/cucumber/tree/master/examples/i18n/ja
Testeando Tu Aplicacin
224
y varias implementaciones que se integran con SeleniumWebDriver para probar aplicaciones web, incluyendo aquellas en
iOS y Android.
A menudo, deiniciones de pasos personalizadas (o 'stepdeinitions' 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 grica 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
signiicativos que pueden romper la forma en que las pruebas
automatizadas interactan con la aplicacin.
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 Automation11, como ms recientemente Android12 usan la etiqueta
Accessibility asignada a elementos de la interfaz de usuario
como interfaz de facto para la automatizacin de la misma.
El ao 2012 ha visto muchsimos nuevos contendientes en
herramientas y servicios de automatizacin. Algunas empresas
comerciales tienen sus herramientas en cdigo abierto, tales
11
12
developer.apple.com/library/ios/#documentation/DeveloperTools/Conceptual/
InstrumentsUserGuide/UsingtheAutomationInstrument
developer.android.com/tools/testing/testing_ui.html
Testeando Tu Aplicacin
225
www.gorillalogic.com/testing-tools/monkeytalk
https://github.com/calabash github.com/calabash
code.google.com/p/robotium/
testingwithfrank.com/
Testeando Tu Aplicacin
226
Testeando Tu Aplicacin
227
$$$
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. Participacin en ingresos: Obtn ingresos por servicios del
operador que se originen en tu aplicacin
5. Ventas indirectas: Ailiados, venta de datos y bienes
fsicos, entre otros
6. Mercado de componentes: Vende componentes o una
versin marca blanca de tu aplicacin a otros desarrolladores
Cuando planiiques 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.
Monetizacin
229
wacapps.net
Monetizacin
230
231
Pagos En Aplicacin
El pago dentro de la aplicacin es una forma de cobrar por
acciones o contenidos especicos 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 justiican un
precio ms alto. Alternativamente, puedes ofrecer las caractersticas bsicas de tu aplicacin de forma gratuita, pero cobrar
por contenido premium (vdeos, crditos virtuales, informacin
premium, caractersticas adicionales, eliminacin de los
anuncios y similares). La mayora de las tiendas de aplicaciones ofrecen una opcin de compra en aplicacin, o puedes
implementar tu propio mecanismo de pago. Si quieres algo
2
3
empayment.com
daopay.com
Monetizacin
232
233
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
comienzo rpido es posible considerar el uso de un agregador
de publicidad mvil, como Smaato4, Madgic5 o Inneractive6, ya
que tienden a dar mejores resultados al combinar y optimizar
los anuncios de ms de 30 redes mviles de publicidad. La
mayora de las redes de publicidad tienen una 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 funciones de su tienda de aplicaciones, e igualmente vale la pena
explorar estos mecanismos. En algunos casos puede que tengas
4
5
6
smaato.net
madgic.com
inner-active.com
Monetizacin
234
Participacin en Ingresos
Compartir los ingresos con el operador mvil para servicios
integrados en las aplicaciones es una nueva oportunidad
para los desarrolladores, y vale la pena seguirle la pista. Este
mtodo de monetizacin permite a los desarrolladores construir
servicios como SMS, MMS, localizacin, publicidad, peril del
cliente y facturacin del operador en sus aplicaciones. Con APIs
bien documentadas de uso gratuito, los ingresos generados se
reparten de forma transparente entre el operador y el propietario de la aplicacin.
Aunque BlueVia es actualmente la nica comunidad de desarrolladores dedicada a este modelo, si su adopcin temprana
contina creciendo puede convertirse en un modelo de negocio
reconocido por los operadores mviles.
Monetizacin
235
Indirect Sales
Otra opcin es utilizar tu aplicacin para dirigir las ventas
donde desees.
Habitualmente ofreces tu aplicacin o website de manera
gratuita y entonces emplearas mecanismos tales como:
1. Programas de ailiacin: Promover aplicaciones de pago
propias o de terceros en el interior de una gratuita. Ver
tambin MobPartner7. Esto puede ser considerado una
variacin de publicidad mvil.
2. Venta de datos: Seguimiento del comportamiento y venta
de los datos a partes interesadas. Ten en cuenta que, por
razones de privacidad, no debe revelar ninguna informacin
personal, y que debes asegurarte de que todos los datos
son proporcionados en informes annimos y consolidados.
3. Mundo real versus virtual: Usa tu aplicacin como herramienta de marketing para vender bienes en el mundo real.
Ejemplos tpicos son aplicaciones para vehculos, revistas
y marcas tales como McDonalds y Starbucks. Tambin las
aplicaciones de cupones utilizan este modelo de negocio.
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.
Mercado de Componentes
Un mercado de componentes o CMP (del ingls Component
Marketplace) proporciona otra oportunidad para los desarrolladores de monetizar sus productos mediante la venta a otros
7
mobpartner.com
Monetizacin
236
www.developergarden.com/component-marketplace/
238
Porcentaje (%) de
desarrolladores
usando el modelo
Beneicio medio
mensual por aplicacin
Subscripcin
12%
$3.683
Compras en
aplicacin
19%
$3.033
34%
$2.451
Freemium
18%
$1.865
Publicidad
33%
$1.498
Tiendas de aplicaciones
La otra cara de la generacin de ingresos es el marketing y la
publicidad. La necesidad puede ser obvia si vendes tu aplicacin a travs de tu propio sitio web, pero resulta igualmente
importante cuando se usa la tienda de aplicaciones de un
vendedor. Esas tiendas son a la vez la maldicin y la bendicin
de los desarrolladores mviles. En el lado positivo, dan a los
desarrolladores largo alcance y exposicin potencial de ventas
que de otra manera sera muy difcil de lograr. En el lado
negativo, las ms populares contienen actualmente cientos de
miles de aplicaciones, disminuyendo el potencial para destacar
entre la multitud y tener xito, llevando a muchos a comparar
9
www.developereconomics.com
Monetizacin
240
241
Monetizacin
242
Mltiples tiendas
Tienda nica
Monetizacin
243
Qu Puedes Ganar?
Una de las preguntas ms comunes de un desarrollador es acerca de cunto dinero se puede ganar con una aplicacin mvil.
Est claro que algunas aplicaciones han hecho millonarios a sus
desarrolladores, mientras que otros no renunciarn a su puesto
de trabajo en el corto plazo. De acuerdo con una investigacin
del 2012 por App-Promo.com10, el 59% de todos los desarrolladores de aplicaciones no estn generando suicientes ingresos
para pagar los costes de desarrollo, y el 80% conirm que los
ingresos generados por su aplicacin de ms exito no resularon
suicientes para apoyar un negocio independiente.
En ltima instancia, lo que puedes ganar depende de
satisfacer una necesidad y de un marketing eicaz. La experiencia sugiere que las aplicaciones que ahorran dinero o
tiempo al usuario son ms atractivas (descuentos, cupones de
hotel, msica gratuita y similares), seguidas por los juegos
(basta con ver el xito de Angry Birds) y las herramientas de
negocio (los visores de documentos de oicina, herramientas
de sincronizacin, herramientas de copia de seguridad y otras),
pero a menudo el xito (econmico) de una sola aplicacin no
se puede predecir. El xito, por lo general, viene con un bagaje
en experimentacin y mucha perseverancia.
Cuando se trata de plataformas, en realidad son BlackBerry
e iOS las que encabezan la tabla de ingresos mensuales por
aplicacin, de acuerdo a la investigacin Developer Economics
de VisionMobile. Android es tercero por detrs de ellos, con
Windows Phone en la retaguardia. A continuacin, se presenta
el promedio de ingresos mensuales por aplicacin para cada
plataforma de acuerdo a la investigacin antes mencionada.
10
app-promo.com/press-release-app-developers-get-a-wake-up-call-fromresults-of-app-promos-irst-annual-developer-survey/
Monetizacin
244
Plataforma
Android
$2.735
BlackBerry
$3.853
iOS
$3.693
Windows Phone
$1.234
Aprende Ms
Si quieres ahondar ms en el tema de marketing de aplicaciones, lee la "Mobile Developer's Guide To The Parallel Universe"
publicada por WIP. La tercera edicin acaba de ser publicada y
est disponible tanto en sus eventos como en su sitio web11.
11
wipconnector.com
245
Eplogo
Gracias por leer esta 12 edicin de nuestra Gua del Desarrollador Mvil. Esperamos que hayas disfrutado de su lectura y
que te hayamos ayudado a clariicar tus opciones. Tal vez ahora
ests listo para participar en el desarrollo de una aplicacin
mvil. 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 developers@enough.de.
Si ests usando Twitter, te invitamos a seguirnos en
twitter.com/enoughsoftware y pasar la voz acerca de este
proyecto utilizando el hashtag #mdgg
Finalmente, para esta edicin, puedes descargarte esta
publicacin en PDF desde nuestro website:
www.enough.de/products/mobile-developers-guide.
Tamben puedes pedirla impresa a travs de esa pgina.
Y qu tal enviar el enlace a amigos y colegas tambin?
Eplogo
247
Anna Alfut
248
Richard ha estado escribiendo sobre el desarrollo de aplicaciones mviles desde el ao 2000. Ha contribuido a sitios web
populares, como AllAboutSymbian.com, pero ahora se centra
en ayudar a las empresas en la creacin de recursos para
desarrolladores. Richard aporta una slida formacin tcnica
a su trabajo, habiendo administrado el desarrollo y testeo de
una serie de proyectos TIC importantes, entre ellos el de Land
Information NZ, integrando informacin sobre la propiedad
del territorio y un sistema de inspeccin. Cuando Richard no
est escribiendo sobre desarrollo mvil, se le puede encontrar
regenerando el monte autctono de su propiedad al norte de
Wellington, Nueva Zelanda.
249
250
251
252
Daniel es un estratega multicanal con experiencia en consultora, agencias y tecnologa. Anteriormente director de proyecto
en una de las principales agencias de publicidad, ahora trabaja
como consultor de soluciones mviles aconsejando a marcas
sobre cmo integrar lo mvil como parte de su estrategia
digital global.
www.sevenval.com www.itml.com
253
Alexander Repty
254
Marcus Ross
255
256
257
www.enough.de
www.wipconnector.com
patrocinadores:
r lo increblemente
Un trabajo espectacular! Te sorprende
do mvil
merca
el
en
te
ducir
intro
es
rpido que pued
gua.
con los sencillos pasos explicados en esta