nte actuali
me
is
Edici
do
za
complet
a
GUIA A LA GALAXIA DE
APLICACIONES MVILES
n gra
publicado por:
Diseo:
Cornelius Kwietniak (Enough Software)
Editores:
Marco Tabor (Enough Software)
Julian Harty, Chris Ward
Traductores:
Javier Melenchn, Eva Casado de Amezua
www.mobiledevelopersguide.com
1 Prlogo
4
Prlogo
El desarrollo de aplicaciones ha avanzado mucho en los ltimos
10 aos. Cuando fundamos Enough Software en el 2005, las
aplicaciones mviles eran algo realmente extico y limitado a
los telfonos, y la distribucin era ms que difcil. Ahora, no
slo tenemos que limitarnos a los mviles como plataforma,
sino que hemos ampliado nuestro alcance a tablets, phablets,
PCs, relojes inteligentes (smartwatches), televisores y sistemas
de automocin. Asimismo, muchos productos derivados del
Internet de las Cosas (o IoT, del ingls Internet of Things) han
sido posibles gracias a la aplicaciones mviles.
En esta quinceava edicin, y como siempre desde el 2009,
mostramos esas nuevas oportunidades, siendo en este caso los
captulos ms notables los captulos dedicados a IoT y smartwatches; pero tambin cabe destacar que otros captulos han
sido ampliados, mejorados, y en algunos casos completamente
renovados. Por ello queremos felicitar a los autores, habis
hecho un trabajo fantstico!
Tambin agradecer el soporte de nuestros patrocinadores,
que hace posible imprimir esta gua en formato de libro de
bolsillo: SAP, HP y Microsoft! Podis documentaros sobre
su oferta de plataformas mviles en developers.sap.com,
developers.hp.com y dev.windows.com. Y por supuesto:
Muchsimas gracias a los traductores!
Prlogo
Por favor, compartid vuestro entusiasmo con nosotros va Twitter en @enoughsoftware o va email en
mobiledevguide@enough.de, y recordad que podis encontrar
la edicin electrnica de este libro, en varios idiomas, en
mobiledevelopersguide.com.
Robert + Marco / Enough Software
Bremen, Febrero 2015
PD: Necesitas ayuda para triunfar en el universo mvil?
Contctanos en service@enough.de para saber ms sobre
nuestros servicios de coaching de aplicaciones.
Prlogo
10
th
ION
EDIT
La Galaxia Mvil:
Introduccin
Bienvenido al mundo del desarrollo mvil, un lugar donde
antiguos gigantes se tambalean y nacen nuevas estrellas,
aparentemente de forma habitual.
ste libro se centra en el desarrollo de aplicaciones mviles,
abarcando fases como: planificacin y especificacin, prototipado y diseo, implementacin, testeo interno y despliegue,
publicacin en una tienda de aplicaciones, descubrimiento por
los usuarios, instalacin, uso y feedback. En ltima instancia,
queremos que nuestros usuarios disfruten utilizando nuestras
aplicaciones y que nos den valoraciones positivas para alentar
a otros a hacer lo mismo.
Sigue leyendo para aprender cmo desarrollar aplicaciones
para las principales plataformas. Si sta es la primera vez que
has considerado involucrarte en este tema, te recomendamos
no demorarlo ms ya que el mundo se est enfocando
rpidamente hacia el mvil como forma predominante en la
informtica, y es probable que otros te adelanten si esperas
demasiado.
Aunque el desarrollo de aplicaciones mviles tiene algunos
puntos en comn con el de otro tipo de software, tambin
posee caractersticas especficas. Vamos a tratar algunas de
ellas a continuacin.
1 es.wikipedia.org/wiki/USSD
2 en.wikipedia.org/wiki/SIM_Application_Toolkit
Aplicaciones
Las aplicaciones se ejecutan directamente en el dispositivo. Se
pueden desarrollar como nativas, web o hbridas.
Aplicaciones Nativas
Una aplicacin nativa est programada en un lenguaje
especfico con APIs propias de la plataforma. Se suele comprar,
descargar y actualizar a travs de la tienda de aplicaciones
especfica de la plataforma. Las aplicaciones nativas suelen
ofrecer mejor rendimiento, integracin ms completa y la mejor
experiencia de usuario en comparacin con otras opciones; sin
embargo, el desarrollo nativo suele ser tambin la opcin de
desarrollo ms compleja.
Aplicaciones Web
Una aplicacin web (web-app/web-based) se basa en HTML5,
JavaScript y CSS, y no depende de ninguna tienda de aplicaciones. Es un sitio almacenado localmente en el mvil que trata
de emular el look-and-feel (aspecto y comportamiento) de
una aplicacin. Un famoso ejemplo de aplicacin web es la del
Financial Times, que abandon la tienda de aplicaciones con
el fin de evitar compartir los ingresos de los suscriptores; en
cambio, la aplicacin web basada en Facebook iOS fue puesta
al da como aplicacin nativa para mejorar dramticamente su
rendimiento y usabilidad. Hay frameworks para aplicaciones
web que permiten construir un contenedor nativo para tales
aplicaciones de manera que puedan ser publicadas en las
tiendas de aplicaciones, por ejemplo Phonegap3.
3 www.phonegap.com
Aplicaciones Hbridas
Existe una exagerada controversia en torno a si las aplicaciones
nativas son el futuro o si lo son las aplicaciones web. Para
muchos de los desarrolladores de aplicaciones mviles esta
controversia ya no es relevante, porque la aproximacin hbrida
al desarrollo de aplicaciones se ha convertido en algo bastante
comn: una aplicacin puede utilizar cdigo nativo para incrementar su rendimiento e integrarse con la plataforma, mientras
que utiliza una webview con contenido basado en HTML5 para
otras partes de dicha aplicacin. Una aplicacin hbrida hace
uso tanto de las tecnologas nativas como las web. Partes de
ella se comportarn como una aplicacin nativa, mientras que
otras se ejecutan sobre tecnologas web y pueden utilizar la
conexin a Internet para ofrecer contenidos actualizados y
funcionalidades sin necesitar de publicar actualizaciones en
las tiendas de aplicaciones. Mientras que esto podra ser visto
como un inconveniente, el uso de las tecnologas web permite
a los desarrolladores mostrar contenido actualizado sin tener
que volver a subir la aplicacin a las tiendas de aplicaciones.
El desafo clave es combinar las capacidades nicas de
tecnologas nativas y web para crear una aplicacin verdaderamente fcil de usar y atractiva.
Sitios web
Un sitio web se ejecuta en tu servidor, pero puedes acceder a
varias funciones del dispositivo con JavaScript, por ejemplo
para almacenar datos de forma local o solicitar la ubicacin
actual del dispositivo. A diferencia de las aplicaciones, los
sitios web para mviles son inherentemente multiplataforma.
Histricamente, los sitios web se han centrado en ser compatibles con navegadores basados en WebKit como Safari.
Hoy en da, tanto WebKit como Chromium son los motores de
renderizado web dominantes, con Trident de Internet Explorer
7
4 www.developergarden.com/apis
5 memeburn.com/2012/03/how-m-pesa-disrupts-entire-economies/
kantarworldpanel.com/global/News/news-articles/Apple-iPhone-5S-outsells5C-three-to-one-in-Great-Britain
La Galaxia Mvil: Introduccin
10
netmarketshare.com/operating-system-market-share
12
jolla.com
13
sailfishos.org
14
www.indiegogo.com/projects/jolla-tablet-world-s-first-crowdsourced-tablet
15
mozilla.org/firefox/os
11
indiegogo.com/projects/ubuntu-edge
17
www.bq.com
18
tizen.org
La Galaxia Mvil: Introduccin
12
Cuota T3
2014
Cuota T3
2013
Cuota T3
2012
Cuota T3
2011
Android
84,4%
81,2%
74,9%
57,4%
iOS (Apple)
11,7%
12,8%
14,4%
13,8%
Windows
Phone
2,9%
3,6%
2,0%
1,2%
BlackBerry
0,5%
1,7%
4,1%
9,6%
0,6%
0,6%
4,5%
18,8%
Otras
(Fuente: idc.com/prodserv/smartphone-os-market-share)
13
idc.com/getdoc.jsp?containerId=prUS24085413
20
engadget.com/2013/11/14/android-ios-market-share-gartner-q3-2013/
21
www.comscore.com/Insights/Data-Mine
22
gs.statcounter.com
23
visionmobile.com
24
gartner.com
25
kantarworldpanel.com/global/smartphone-os-market-share
La Galaxia Mvil: Introduccin
14
Perdido en el Espacio
Si ests perdido en el vasto universo del desarrollo mvil, no
te preocupes, mantn la calma y sigue leyendo. Explora tus
opciones y evala el problema que deseas resolver, tu pblico
objetivo y tu know-how. Pon un gran esfuerzo en disear la
experiencia de tu servicio, concntrate en el problema en
cuestin, y mantenlo simple. Es mejor hacer una cosa bien que
hacer "todo" slo regular. Invierte en el diseo y la usabilidad de la solucin. Por ltimo, pero no menos importante,
encontrar el nicho de mercado adecuado es a menudo mejor
que tratar de copiar algo que ya ha tenido xito. Esta gua te
ayudar a tomar una decisin informada!
26
fairphone.com
27
indiephone.eu
De la Idea al Concepto
Desarrollar soluciones digitales populares e innovadoras
significa beneficios importantes en esta industria. Hay millones
de apps en las tiendas de aplicaciones, muchas agrupadas
en una masa de aplicaciones similares que no ofrecen nada
especial. Sin embargo, algunas aplicaciones son excepcionales.
Es posible que te hayas preguntado: Qu hace que estas
aplicaciones tengan xito, y cmo puedo lograr un xito
similar con mis productos? Este captulo te ofrece herramientas
y un marco para generar sistemticamente ideas innovadoras
para productos.
17
1 developereconomics.com/reports/developer-economics-q3-2014/
2 juego-developers
developereconomics.com/freemium-apps-killing-game-
developers/
De la Idea al Concepto
18
Cntrate en el Usuario
En teora, es posible que un producto encaje inmediatamente
con los deseos de su grupo objetivo, pero en la prctica esto
es poco habitual. En la mayora de casos, el producto no
agrada a muchos de los clientes previstos. Aunque las capacidades ofrecidas por el producto pueden ser muy innovador,as
frescas, y realmente tiles, los usuarios pueden considerar el
producto no apto para su contexto o pueden necesitar varias
funciones adicionales para hacer un uso real del mismo.
Para mejorar la satisfaccin de los usuarios, las empresas
de software tienden a hacer ajustes y tratar de responder a
todos los deseos y al perfil del grupo objetivo de una manera
desorganizada. Consecuentemente, el producto se va volviendo
complejo, no es muy usable, y pierde ms y ms usuarios, ya
que las expectativas de los usuarios no se pueden cubrir con la
aplicacin existente.
Comenzar a desarrollar sin comprender realmente las
necesidades del usuario es muy arriesgado porque los cambios
en una aplicacin ya lanzada son caros. Adems, los recursos
se malgastan creando funciones innecesarias.
De la Idea al Concepto
19
De la Idea al Concepto
20
4 merriam-webster.com/dictionary/need
5 en.wikipedia.org/wiki/Maslows_hierarchy_of_needs
De la Idea al Concepto
21
Ideando
El resultado del anlisis no es una solucin, sino una declaracin clara y bien fundamentada del problema. Este planteamiento debe ser una base para explorar el escenario de la
solucin en la fase de ideacin del proyecto. Durante esta fase,
es importante comenzar a pensar muy divergentemente y llegar
a una gran cantidad de ideas. Si creas una gran cantidad de
ideas, ser ms fcil discutir diferentes enfoques para resolver
los pain points de los usuarios y combinar las mejores.
Existen muchas tcnicas para fomentar el pensamiento
creativo. Algunas son bien conocidas, como el brainstorming
(lluvia de ideas). Sin embargo, se han inventado muchas otras
que se pueden utilizar en situaciones especficas, como el
mtodo 6-3-56, la confrontacin visual, o el mtodo Disney7.
Lo que todas estas tcnicas tienen en comn es que fomentan
tanto el pensamiento divergente como el convergente,
fomentando el pensar fuera de la caja (del ingls thinking
outside the box).
Un consejo habitual es celebrar sesiones de creatividad
en un grupo con 5-8 participantes. Un grupo, por lo general,
tiene mejores resultados que los de una persona individual.
El brainstorming es el mtodo ms popular, pero no produce
los mejores resultados en cuanto a la cantidad de ideas;
para mejorarlos, se recomienda la aplicacin de tcnicas de
brainwriting, que permiten a cada participante recabar ideas
individualmente antes de discutirlas en grupo. Esto anima a
cada miembro del equipo a participar activamente en la lluvia
6 una
7 desarrollado
22
Aplazar el juicio
Fomentar ideas extraas
Mantenerse centrado
Centrarse en la cantidad
Ser visual
Construir sobre las ideas de otros
Una vez recogidas las diversas ideas, debern
revisarse, retocarse o combinarse por el equipo,
y las resultantes ms prometedoras sern las
seleccionados.
23
24
Aprende Ms
Aqu puedes aprender ms acerca sobre metodologas y
tcnicas:
businessmodelgeneration.com, el sitio web del famoso libro
sobre cmo generar tu propio modelo de negocio. Tambin
ofrecen una herramienta online, una vista previa del libro9,
y mucho ms.
mycoted.com/Brainwriting, una buena introduccin a
mtodos de brainwriting. Forma parte de una Wiki sobre
tcnicas creativas mantenida por la empresa inglesa
mycoted.
uxbooth.com/articles/complete-beginnersguide-to-design-research, la "Complete Beginners Guide to
Design Research" por Andrew Maier. El ttulo es un tanto
exagerado, pero el libro es una buena introduccin con
enlaces tiles a otros recursos.
theleanstartup.com, el sitio web del libro "Lean Startup"
de Eric Reis. Ayuda a los lectores a descubrir maneras de
crear productos ms deseables con menor coste.
8 alexosterwalder.com
9 businessmodelgeneration.com/book
De la Idea al Concepto
25
Pensamiento Conceptual
Personas
Persona es un perfil ficticio de usuario que representa una potencial tipologa de usuario para un producto. En diseo, una
persona tpica consistir en una informacin de base acerca de
un usuario tipo, por ejemplo su profesin y motivaciones para
usar tu aplicacin, y cmo sta podra mejorar su vida. Le
ayudara a ser ms productivo en el trabajo? Realizar nuevas
actividades? Aprender nuevas habilidades? Habitualmente hay
Experiencia de Usuario & Diseo de Interfaz
27
28
29
30
31
32
Prototipado
Un prototipo es la mejor manera de visualizar y evaluar las
interacciones de tu aplicacin, porque es suficientemente
funcional para comunicar tu visin sin tener que aportar mucha
documentacin adicional, por ejemplo imgenes estticas. Tu
prototipo puede tener ya su diseo visual y mostrarse exactamente como lo har despus de la implementacin, o puedes
dejarlo simplificado a nivel wireframe.
No importa el tamao de tu presupuesto, o si trabajas en un
proyecto personal durante el fin de semana, tener un prototipo
suficientemente completo es la mejor manera de comunicar tu
concepto y discutirlo con terceros. La narracin no lineal de
tus aplicaciones debe explicarse por s misma ya en esta etapa.
Puedes experimentar tu concepto con algunos prototipos en
un dispositivo real, recuerda que tu interfaz puede verse muy
diferente en diferentes tamaos de pantalla.
No existe la manera perfecta de crear un prototipo. Puedes
usar cualquier tcnica con la que ests cmodo. Desde papel
hasta alguna herramienta especializada, u otra aplicacin
con la que puedas crear una mnima interactividad. Si sabes
programar, usar HTML es una buena opcin. Puedes crear rpidamente prototipos sobre la parte de la aplicacin existente y
trabajar directamente en el cdigo final, todo depende de qu
enfoque encaje con las especificaciones del proyecto.
Los prototipos se desarrollan, normalmente, antes de
invertir tiempo en el desarrollo del cdigo final y de realizar
diseos con precisin a nivel de pxel. Un prototipo funcional
validado tambin es una referencia til para que los equipos
puedan trabajar sin arriesgarse a desviarse demasiado del plan
director, y tambin es til para obtener feedback de terceros.
Algunas herramientas son gratuitas, y la mayora de las
comerciales ofrecen una versin de prueba o gratuitas para
un nmero limitado de proyectos. A menudo aparecen nuevas
Experiencia de Usuario & Diseo de Interfaz
33
Axure: axure.com
Balsamiq Mockups: balsamiq.com
Framer: framerjs.com
Mockingbird: gomockingbird.com
OmniGraffle: omnigroup.com/products/omnigraffle
Origami: facebook.github.io/origami
Pencil: pencil.evolus.vn
POP: popapp.in/ popapp.in
Proto io: proto.io
Sketch: designcode.jo/sketch
Pruebas de usuario
La mejor manera de validar tu interfaz es enfrentarla con
usuarios reales, tan pronto como sea posible. No tienes que
esperar hasta que haya un producto acabado y pulido. De
hecho, una prueba temprana puede ahorrarte mucho tiempo a
largo plazo ya que saca a la luz rpidamente las ideas que no
funcionan. A ms tiempo inviertas en desarrollar tus diseos,
ms difcil ser abandonarlos y comenzar de cero. Es ms difcil
aceptar comentarios sobre algo que se considera casi terminado que en un prototipo funcional que se puede actualizar
con bastante rapidez.
Normalmente, las pruebas de usuario duran alrededor de una
hora. Durante ese tiempo, se le pide a usuarios no familiarizados con el producto que realicen ciertas tareas, por lo general
acciones bsicas. Durante la bsqueda de usuarios a entrevistar
34
35
Aprende ms
Hay una gran cantidad de recursos disponibles online. Aqu te
mostramos algunos para abrirte el apetito:
UX Archive: uxarchive.com
User Onboarding: useronboard.com
Smashing Magazine (UX design section):
uxdesign.smashingmagazine.com
UX Magazine: uxmag.com
UX Matters: uxmatters.com
Nielsen Norman Group: nngroup.com
Interaction Design Foundation: interaction-design.org
36
Android
El Ecosistema
La plataforma Android ha sido desarrollada por la Open Handset
Alliance, liderada por Google, y ha estado a disposicin del
pblico desde noviembre de 2007. Su uso por muchos fabricantes de hardware la ha convertido en el sistema operativo
de smartphones con mayor crecimiento. Alrededor del 84%
de todos los smartphones vendidos en el tercer trimestre del
2014 en todo el mundo fueron Android1. En la keynote anual
Google I/O de 2014, Google anunci que ms de 1 billn de
dispositivos Android haban sido activados hasta la fecha2
incluyendo wearables, tablets, reproductores multimedia, decodificadores de televisin, telfonos de sobremesa y sistemas
de infotenimiento para automviles. Las Google Glass tambin
incluyen una versin reducida de Android compatible tanto con
aplicaciones web como nativas. Algunos dispositivos noAndroid tambin son capaces de ejecutar aplicaciones Android
con una funcionalidad reducida, como por ejemplo el Playbook
de RIM con su BlackBerry Android runtime, el nuevo sistema
operativo de cdigo abierto Sailfish3 y la consola financiada en
crowdfounding Ouya.
En diciembre de 2014, el nmero de aplicaciones Android en
Google Play rompi la barrera de los 1,5 millones4 .
1 www.idc.com/prodserv/smartphone-os-market-share.jsp
idc.com/prodserv/
smartphone-os-market-share.jsp
2 engadget.com/2014/06/25/google-io-2014-by-the-numbers
3 sailfishos.org
4 www.appbrain.com/stats/number-of-android-apps
Android
38
Android
39
Froyo 2.2
Gingerbread 2.3
0.4%
7.8%
18
API
API 17
Jelly Bean
4.1 - 4.3
6.7%
46,0%
39,1%
KitKat 4.4
Prerrequisitos
El lenguaje de programacin principal para Android est basado
en Java. Pero ten cuidado, slo un subconjunto de las libreras
y paquetes de Java son compatibles y hay muchas APIs
especficas de la plataforma que no funcionarn en Android.
Puedes encontrar respuestas online a la preguntas "Qu y
Por qu?" en la Dev Guide para Android8 y a al "Cmo?" en la
documentacin de referencia9. Adems, Google ha introducido
una seccin en su documentacin llamada "Android Training"10
que ayuda a los nuevos desarrolladores a aprender las mejores
7 developer.android.com/design
8 developer.android.com/guide
9 developer.android.com/reference
10
developer.android.com/training/index.html
40
soporte a plugin
versin incluida
Eclipse
Intellij
Android Studio
11
developer.android.com/sdk
12
developer.android.com/tools/sdk/eclipse-adt.html
13
android-developers.blogspot.de/2014/12/android-studio-10.html
Android
41
Implementacin
Arquitectura de la aplicacin
Las aplicaciones Android incluyen habitualmente una mezcla
mltiples objetos tipo actividades (Activity), servicios
(Service), BroadcastReceiver y proveedores de datos (Data
Provider), los cuales tienen que ser declarados en el manifiesto
de aplicacin.
Una actividad es un bloque de funcionalidad con una
interfaz de usuario adjunta. Un servicio se utiliza para tareas
que se ejecutan en segundo plano y, por lo tanto, stas no
estn ligadas directamente a una representacin visual. Un
receptor de mensajes gestiona los mensajes transmitidos por el
sistema, por t mismo o por otras aplicaciones. Un proveedor
de datos es una interfaz para el contenido de una aplicacin
que abstrae de los mecanismos de almacenamiento subyacentes
(por ejemplo, SQLite).
Una aplicacin puede consistir en varios de estos com14
15
developer.android.com/tools/sdk/ndk
42
43
44
developer.android.com/reference/android/Manifest.permission.html
17
developer.android.com/guide/topics/fundamentals/fragments.html
18
android-developers.blogspot.com/2011/03/fragments-for-all.html
19
developer.android.com/tools/support-library/features.html
Android
45
Testeo
El primer paso para probar una aplicacin es ejecutarla en
el emulador o en un dispositivo. Es posible depurarla, si es
necesario, a travs de la herramienta ddms.
Todas las versiones del sistema operativo Android estn
preparadas para ejecutarse en dispositivos sin necesidad de
modificaciones aunque, sin embargo, algunos fabricantes
de hardware pueden realizar cambios en algunos elementos
de la plataforma; por tanto, probar la aplicacin en varios
dispositivos es esencial. La lista de AppBrain21 puede ayudarte
a hacerte una idea de qu dispositivos son los ms populares.
Para automatizar las pruebas, el SDK de Android viene con
algunas herramientas muy tiles22 . Los tests se pueden escribir
con el formato estndar JUnit, utilizando los objetos simulados
de Android (mock objects) que se incluyen en el SDK.
Las clases Instrumentation pueden monitorizar la interfaz
de usuario y enviar eventos del sistema tales como pulsaciones de teclas. Tus tests pueden comprobar el estado de tu
aplicacin tras estos eventos. MonkeyRunner23 es una potente
20
developer.android.com/google/play-services/
21
www.appbrain.com/stats/top-android-phones
22
developer.android.com/guide/topics/testing/testing_android.html
23
developer.android.com/guide/developing/tools/monkeyrunner_concepts.html
46
android-developers.blogspot.de/2012/11/android-sdk-tools-revision-21.html
25
googetesting.blogspot.de/2013/10/espresso-for-android-is-here.html
26
code.google.com/p/robotium
27
robolectric.org
Android
47
incluyendo Robotium, se basan en el entorno de Instrumentacin de Android, y requerirn ser ejecutados en la JVM Dalvik.
Plug-ins como el Android Emulator Plugin28 permiten que estos
tests sean configurados y ejecutados en Hudson y Jenkins.
Compilacin
Aparte de crear tu aplicacin directamente en el IDE que
prefieras, hay maneras ms cmodas de construir aplicaciones
Android. Gradle29 es actualmente la herramienta de creacin
automatizada con soporte oficial para Android. Tambin hay
un plug-in de Maven30 que cuenta con un gran apoyo en la
comunidad de desarrolladores. Ambas herramientas pueden
tener dependencias de diferentes repositorios Maven, vase el
Maven Central Repository31.
El sistema que utiliza Google para publicar libreras para
Gradle se conoce como Android Archive (archivos .aar) y se
puede acceder a l va Android SDK Manager. Tambin puedes
crear tus propias libreras o SDKs utilizando el plugin androidlibrary para Gradle. Una excelente fuente de libreras Android
compatibles con Gradle es 'Gradle, please'32 .
28
wiki.hudson-ci.org/display/HUDSON/Android+Emulator+Plugin
29
tools.android.com/tech-docs/new-build-system
30
code.google.com/p/maven-android-plugin/
31
www.maven.org/
32
gradleplease.appspot.com
Android
48
Firmado
Tus aplicaciones tienen que haber sido firmadas en el
compilado, ya sea con una firma de depuracin o con una de
publicacin. Puedes utilizar un mecanismo de auto-firma, lo
que evita gastos relacionados con la firma (y seguridad).
La misma firma debe ser utilizada para las actualizaciones
de tus aplicaciones, as que asegrate de no perder tu keystore
o contrasea. Recuerda: puedes utilizar una nica clave para
todas tus aplicaciones o crear una nueva para cada una de
ellas.
Distribucin
Una vez hayas creado tu rompedora aplicacin y la hayas
probado, debes publicarla en la tienda de aplicaciones de
Android llamada "Play". Este es un buen lugar para llegar a los
clientes y vender tus aplicaciones. Android, desde la versin
1.6 en adelante, tambin es compatible con compras desde la
misma aplicacin va Google Wallet, lo que te permite vender
contenido adicional, paquetes de funciones, etctera, dentro
de tu aplicacin utilizando la infraestructura de Android Play33.
Tambin se utiliza por otros portales de aplicaciones
como fuente de metadatos de aplicaciones. Para subir
tu aplicacin a Android Play, el punto de partida es
play.google.com/apps/publish/.
Ests obligado a inscribirte en el servicio a travs de tu
cuenta de Google Checkout y pagar una cuota de inscripcin
de $25 (USD). Una vez aprobado tu registro, puedes cargar
33
developer.android.com/guide/google/play/billing/
Android
49
Adaptacin
A medida que la adopcin de Android se incrementa, tambin
lo hace un ecosistema de elementos especficos de fabricante
que incluyen sus propios SDKs, versiones de Android comple34
developer.android.com/distribute/googleplay/publish/localizing.html
35
onepf.org/appstores/
Android
50
Android
51
Documentacin
Amazon
developer.amazon.com/sdk/fire.html
HTC
htcdev.com
LG
developer.lge.com
Motorola
developer.motorolasolutions.com/
community/android
Samsung
developer.samsung.com/android
Sony
developer.sonymobile.com
Monetizacin
Adems de venderla en alguna de las muchas tiendas de
aplicaciones , hay muchas maneras diferentes de monetizar
una aplicacin Android. Una forma viable es mediante el uso
de la publicidad, que puede ser basada en clics o en nmero
de visitas, y puede proporcionar un ingreso estable. Aparte,
hay diferentes posibilidades para facturar desde la aplicacin,
Android
52
36
developer.android.com/google/play/billing/
37
github.com/paypal/PayPal-Android-SDK
38
developer.paypal.com/webapps/developer/docs/classic/mobile/gs_MPL/
39
card.io
Android
53
Android
54
BlackBerry 10
Introduccin
La plataforma BlackBerry 10 (BB10) es un relanzamiento global
de BlackBerry (empresa anteriormente conocida como RIM).
BlackBerry ha adoptado este enfoque con el fin de ponerse
al da con los sistemas operativos mviles competidores: iOS,
Android y Windows Phone 8. Los dispositivos BB10 fueron
introducidos en el mercado en el primer trimestre del 2013
(sin planes de actualizacin para dispositivos anteriores), y
actualmente hay cuatro modelos disponibles, siendo los nuevos
buques insignia la Blackberry Passport y la Blackberry Classic.
Blackberry ofrece modelos tanto con teclado fsico como
virtual.
Aunque el sistema operativo es nuevo, su ncleo est
basado en QNX, un sistema operativo en tiempo real para
dispositivos integrados. Las otras partes del ecosistema
BlackBerry, como la BlackBerry World o el servicio push, no
han cambiado, y se han aliado con Amazon para una mayor
oferta de aplicaciones. Con el lanzamiento de la versin 10.3
del sistema operativo de Blackberry, los usuarios pueden elegir
entre el Blackberry World Appstore y el Amazon Appstore. Un
elemento importante para BlackBerry en el mundo empresarial
es el software de gestin de mviles BlackBerry Enterprise
Server.
La ltima versin del BlackBerry SDK es la 10.3.1, que ha
sido lanzada en Noviembre del 2014.
BlackBerry 10
56
Desarrollo
Con BB10, las aplicaciones se pueden desarrollar utilizando
una amplia variedad de tecnologas:
C Native SDK
C++ Cascades SDK
HTML5 (WebWorks SDK)
Adobe Air
Android Runtime
BlackBerry App Generator
BlackBerry 10
57
5 www.qnx.com
6 mashable.com/2013/08/21/blackberry-10-app-spam/
7 developer.blackberry.com/native/beta/
8 developer.blackberry.com/native/download
BlackBerry 10
58
9 developer.blackberry.com/native/download
10
en.wikipedia.org/wiki/QML
BlackBerry 10
59
developer.blackberry.com/cascades/documentation/design/cascades_
exporter/
12
developer.blackberry.com/cascades/
BlackBerry 10
60
HTML5 WebWorks
Si eres un desarrollador Web/JavaScript, puedes utilizar tus
habilidades para escribir aplicaciones para BlackBerry. Hay dos
herramientas relevantes que puedes utilizar:
La primera es WebWorks SDK13. Entre otras caractersticas,
permite escribir pginas web regulares y luego compilarlas
como aplicaciones nativas de BlackBerry con facilidad. La
nueva versin de WebWorks, la 2.0, encaja perfectamente
con el entorno Apache Cordova, tambin conocido como
PhoneGap; BlackBerry public todas las APIs como plugins para
sta herramienta. Si quieres imitar el estilo de la interfaz de
usuario BlackBerry en HTML, hay un proyecto en GitHub que
te ayudar. Se llama BBUi.js14 y ofrece un amplio y detallado
CSS para hacer que tu pgina web estndar se visualice como
una aplicacin nativa BlackBerry. En esta aproximacin debes
utilizar atributos de datos para mejorar el cdigo HTML. Como
alternativa a bbui.js tambin se soporta jQueryMobile con
un tema de BB10, y el SenchaTouch framework15 tambin es
compatible con BB10.
Es bueno saber que BlackBerry ofrece soporte WebGL
acelerado por hardware, y que puedes realizar la depuracin y
perfilado del dispositivo mvil a travs del WebInspector como
una funcin integrada.
Para obtener ms informacin sobre el desarrollo con
WebWorks hay un micro-site de HTML5 Dev16.
13
developer.blackberry.com/html5/download/sdk
14
github.com/blackberry/bbUI.js
15
www.sencha.com/products/touch
16
developer.blackberry.com/html5
BlackBerry 10
61
Adobe Air
La versin 10.3.1 de BB10 ya no soporta Adobe Air.17
Android en Tiempo de Ejecucin (Runtime)
Puedes utilizar el BlackBerry Runtime para ejecutar aplicaciones Android Jelly Bean 4.2.2 en BlackBerry 10.2 y 10.3. Para
utilizar el runtime, primero debes volver a empaquetar tus
aplicaciones Android en el formato de archivo BAR, que es el
necesario para que una aplicacin se ejecute en BlackBerry 10.
Como desarrollador, tendrs que utilizar una de las herramientas siguientes para volver a compilar la aplicacin. Estas
herramientas tambin comprueban cmo es de compatible tu
aplicacin para ser ejecutada en BlackBerry 10, ya que algunas
de las APIs del SDK de Android pueden no ser compatibles, o
pueden serlo slo parcialmente con la plataforma BlackBerry.
Plug-in de recompilacin para Eclipse
La principal ventaja de la utilizacin de esta herramienta es
su capacidad de comprobar niveles de compatibilidad, compilar,
depurar y ejecutar aplicaciones en BlackBerry PlayBook,
BlackBerry Tablet Simulator, BlackBerry 10 Dev Alpha Simulador
y dispositivos BlackBerry 10, todo sin salir de Eclipse. Tambin
puedes usar este plug-in para firmar tu aplicacin antes de
distribuirla. Si deseas probar la aplicacin sin firmarla, puedes
utilizarlo para crear e instalar un token de depuracin en el
dispositivo de destino o en el simulador.
17
developer.blackberry.com/air/downloads/endofsupport/
BlackBerry 10
62
Compilador online
La ventaja principal de la BlackBerry Packager para
aplicaciones de Android es que se puede utilizar para volver
rpidamente a compilar tu aplicacin para Android utilizando
slo tu navegador. Puedes probar la compatibilidad de la aplicacin, volver a compilarla como un archivo BAR compatible
con BlackBerry Tablet OS o BlackBerry 10, y despus firmarlo
para que pueda ser distribuido a travs de la tienda BlackBerry
App World.
Herramientas recompiladoras de lnea de comandos
Una de las principales ventajas de utilizar el BlackBerry
SDK para aplicaciones de Android es que se puede utilizar para
recompilar mltiples aplicaciones Android desde el formato
de archivo APK al formato de archivo BAR. Adems, tambin
puedes utilizar este conjunto de herramientas de lnea de comandos para comprobar la compatibilidad de tus aplicaciones
Android, firmarlas, crear tokens de depuracin y un certificado
de desarrollador.
Si deseas obtener ms informacin acerca de cmo ejecutar
aplicaciones Android en BB10, visita el sitio web18.
BlackBerry App Generator
Si no eres un desarrollador, BlackBerry proporciona una
manera fcil de generar una aplicacin sencilla para BB10 con
el BlackBerry App Generator19. Esa pgina web genera una
aplicacin basada en fuentes de informacin como
18
developer.blackberry.com/android
19
blackberryappgenerator.com/blackberry/
BlackBerry 10
63
RSS feeds
Tumbler
Facebook
YouTube
Flickr
Testeo
BlackBerry contina proporcionando un simulador para telfonos BB10 como una descarga independiente20. Este simulador
permite ejecutar una aplicacin en un PC/Mac/Linux de la
misma manera que se ejecutara en un dispositivo BlackBerry
real. Para asistirte en tus pruebas, el simulador viene con una
aplicacin llamada controller. Esta utilidad te permite simular
cosas tales como el nivel de la batera, la posicin GPS, NFC o
la inclinacin del dispositivo y, por lo tanto, comprobar cmo
reacciona tu aplicacin en escenarios reales.
Firma
Muchas clases y caractersticas de la plataforma de nivel de
seguridad crtico (por ejemplo, la creacin de redes o APIs
de archivo) requieren que la aplicacin est firmada para que
el desarrollador pueda ser identificado. Este ltimo paso en
el desarrollo de una aplicacin para BlackBerry a menudo es
difcil.
20
developer.blackberry.com/devzone/develop/simulator/
BlackBerry 10
64
21
www.blackberry.com/SignedKeys/codesigning.html
22
www.blackberry.com/SignedKeys/codesigning.html
23
developer.blackberry.com/CodeSigningHelp/codesignhelp.html
BlackBerry 10
65
Distribucin
Al igual que con todas las versiones anteriores del sistema
operativo de BlackBerry, las aplicaciones para BB10 se
distribuyen a travs de BlackBerry App World24 . La necesaria
cuenta de proveedor se puede crear en el Portal de Proveedores
para BlackBerry World25.
En el caso de aplicaciones de pago, los desarrolladores
obtener una participacin en los ingresos del 70%.
La otra opcin es una distribucin corporativa. Esto te
permite lanzar una aplicacin interna en tu organizacin en
lugar de ponerla a disposicin pblica para cualquier usuario,
lo cual es adecuado para aplicaciones B2B. Si deseas obtener
ms informacin acerca de la distribucin corporativa, por
favor visita el sitio web dedicado26.
24
appworld.blackberry.com/
25
appworld.blackberry.com/isvportal
26
developer.blackberry.com/distribute/enterprise_application_distribution.
html
BlackBerry 10
66
BlackBerry 10
67
Firefox OS
El Ecosistema
Necesitamos otro sistema operativo para mviles? La
Fundacin Mozilla pens que s y desarroll Firefox OS1, un
sistema operativo de cdigo abierto basado en Linux enfocado
a telfonos de gama media. Su primera versin fue publicada
en febrero de 2013.
Seis meses despus se lanz el primer dispositivo Firefox
OS disponible para el mercado de masas, el ZTE Open, que
se comercializa al precio de 80 dlares americanos y fue
promocionado en mercados emergentes. Con el lanzamiento
de One Touch Fire de Alcatel en Alemania, Firefox OS entr
oficialmente en el mercado europeo en octubre del 2013. El
precio de lanzamiento fue de 90 euros. En diciembre de 2014,
Mozilla y KDDI lanzaron en Japn el primer dispositivo basado
en Firefox 2.02, publicitado como el primer telfono de gama
alta con Firefox OS.
Las aplicaciones Firefox estn basadas en HTML pero, en vez
de empaquetar aplicaciones web en HTML5 con herramientas
como Phonegap, Firefox OS utiliza HTML/JavaScript/CSS como
lenguajes nativos de desarrollo. Esto significa que es bastante
fcil para un desarrollador web comenzar a escribir aplicaciones
nativas para se sistema. En ese sentido, necesitars conocer
la API de JavaScript que provee Firefox OS y aprender cmo se
empaquetan las aplicaciones.
1 mozilla.org/firefox/os
2 blog.mozilla.org/press/2014/12/mozilla-and-kddi-launch-first-firefox-os-
smartphone-in-japan-4
Firefox OS
68
Desarrollo
Hay dos maneras de crear una aplicacin para Firefox OS:
Aplicaciones alojadas y aplicaciones empaquetadas. En
ambos casos es necesario escribir el cdigo en HTML, CSS y
JavaScript. Las aplicaciones alojadas son, bsicamente, un
sitio web. Son fcilmente actualizables, pero a menudo tienen
acceso limitado a la web API y necesitan conexin a Internet.
Las aplicaciones empaquetadas se ejecutan localmente y son,
3 github.com/mozilla-b2g/gaia
github.com/mozilla-b2g/gaia github.com/
mozilla-b2g/gaia
Firefox OS
69
La WebAPI de Firefox5 ofrece acceso a: vibracin, geolocalizacin, estado de la batera, alarma, IndexedDB, sensor de
proximidad, sensor de luz ambiente y un archivo. Utilizando la
API puedes, por ejemplo, acceder al estado de la batera simplemente realizando la llamada navigator.battery.level
en JavaScript.
Si necesitas ms funcionalidades de las que la WebAPI
ofrece, puedes usar Activities. Mozila usa el objeto MozActivity,
similar a cmo Android utiliza Intents: se le preguntar al
usuario qu aplicacin quiere utilizar para realizar una cierta
tarea.
4 developer.mozilla.org/en-US/docs/Web/Apps/Manifest
5 wiki.mozilla.org/WebAPI
Firefox OS
70
Simulacin y Testeo
Mozilla provee de un simulador para Firefox OS descargable
como un plugin de navegador web6. Firefox OS 1.2 introdujo el
App Manager7. sta nueva herramienta de desarrollo permite
testear cdigo y proporciona ms asistentes de GUI, tales
como el editor de manifiesto. An as, es muy recomendable no
confiar ciegamente en el simulador: por ejemplo, dispone de
mucha ms RAM que un dispositivo Firefox real.
6 addons.mozilla.org/en-us/firefox/addon/firefox-os-simulator/
7 developer.mozilla.org/en-US/Firefox_OS/Using_the_App_Manager
Firefox OS
71
Distribucin
Mozilla ha creado una AppStore global llamada Marketplace8.
Tu aplicacin ser revisada conforme a las directrices de
Mozilla9. Una vez est publicada, obtendrs un 70% de los
beneficios que genere.
Aprende ms
Tu recurso principal para conocer ms acerca de cmo desarrollar para Firefox OS ser la red Mozilla Developer10. Una breve
introduccin, que incluye tutoriales en vdeo acerca de como
comenzar est disponible en11. Andr Fiedler tambin ofrece
informacin esclarecedora para los no-iniciados en su presentacin de Slideshare 'Doing mobile web Apps for Firefox OS - the
right way'12 . Para finalizar, el desarrollador y evangelista en
Mozilla Chris Heilmann aporta mucha informacin en su blog13.
8 marketplace.firefox.com
9 developer.mozilla.org/en-US/docs/Web/Apps/Publishing/Marketplace_
review_criteria
10
developer.mozilla.org
11
marketplace.firefox.com/developers/docs/quick_start
12
slideshare.net/andrefiedler1/doing-mobile-web-apps-for-firefox-os-the-right-way
13
hacks.mozilla.org/author/cheilmann
Firefox OS
72
iOS
El Ecosistema
Desarrollar para iOS se ha vuelto ms popular que nunca. En
el verano de 2014, Tim Cook, CEO de Apple, declar que en la
actualidad hay 9 millones de desarrolladores de iOS registrados,
un aumento del 47% respecto al ao anterior1. En enero
de 2015, Apple anunci que 1,4 millones de aplicaciones
estn disponibles en iOS y que la facturacin de aplicaciones
aument otro 50 por ciento en un ao: El total de ingresos
por aplicaciones iOS en 2014 suma 10 mil millones de dlares,
lo que significa que los desarrolladores iOS han ganado un
acumulado de 25 mil millones de dlares utilizando la Apple
AppStore2 .
Una pregunta habitual es por dnde empezar para convertirse en un desarrollador iOS. En este captulo mostrar
lo que se requiere para configurar un entorno de desarrollo y
algunas de las diferentes opciones disponibles para escribir
aplicaciones. Tambin dar sugerencias sobre recursos para
ayudar a desarrollar tus habilidades en el menor tiempo posible.
El captulo termina con unas palabras de consejo importantes
para poder convertirte en un miembro del ecosistema de
desarrolladores iOS.
1 techcrunch.com/2014/06/02/itunes-app-store-now-has-1-2-million-apps-
has-seen-75-billion-downloads-to-date
2 apple.com/pr/library/2015
/01/08App-Store-Rings-in-2015-with-New-
Records.html
iOS
74
entonces-steve-dijo-let-no-
ser-un-iphone.html
iOS
75
4 developer.apple.com/library/ios/releasenotes/General/WhatsNewIniOS/
Articles/iOS8
5 www.cnet.com/news/apples-ios-8-1-hits-monday-with-apple-pay-icloud-
photo-library
6 developer.android.com/about/dashboards
iOS
76
7 en.wikipedia.org/wiki/List_of_iOS_devices
iOS
77
Cocoa Touch
Aunque OSX e iOS son diferentes sistemas operativos, comparten mucho en comn en trminos de entornos, herramientas
de desarrollo, y patrones de diseo.
Apple potenci y ampli el entorno principal para el
desarrollo de aplicaciones de OSX, Cocoa, y ha aadido soporte
para las caractersticas nicas de iOS como los gestos tctiles,
bautizndolo como Cocoa Touch. En Cocoa Touch se incluyen
entornos para construir interfaces, sensores como el acelermetro y la gestin de redes y datos.
La App Store
El mtodo principal para el despliegue de aplicaciones es
la App Store. Cada aplicacin presentada es revisado por el
equipo de Apple para garantizar que se cumplen los requisitos
y normas de la compaa. Esta es una diferencia importante respecto a la tienda de Google Play para aplicaciones de Android,
pues Google no revisa las aplicaciones, pero se asegura de que
el cdigo est firmado.
Apple es muy estricta respecto a cmo las aplicaciones de
terceros se ejecutan en iOS y utiliza la tcnica de Sandbox
para garantizar la seguridad de las mismas y evitar que cdigo
malicioso o con errores comprometa el sistema operativo, otras
aplicaciones o el dispositivo. Piensa en un Sandbox como una
barrera virtual alrededor de la aplicacin que define a qu
los recursos puede acceder la aplicacin. Por ejemplo, una
aplicacin no tiene acceso a los directorios de archivos o recursos del sistema de otra aplicacin que no sean accesible va
entornos del SDK. Apple ha dado ms control al usuario para
conceder acceso a sus datos (es decir, contactos, calendarios,
fotos) y localizacin GPS. Los desarrolladores deben prepararse
para los casos en que el usuario ha denegado su permiso.
iOS
78
79
Interface Builder
Una discusin acalorada entre los desarrolladores iOS es si es
mejor utilizar el Interface Builder para disear visualmente
el flujo de interfaz de usuario y la aplicacin o llevar a cabo
todo de forma manual con el cdigo. En el pasado, esto poda
ser una preferencia personal, pero con nuevos dispositivos
y tamaos de pantalla como el Apple Watch y iPhone 6,
Interface Builder resulta cada vez ms necesario. Una de las
principales diferencias entre iOS y Android era precisamente
no tener que desarrollar para muchos tipos de dispositivos y
tamaos de pantalla. Sin embargo, esta frontera es cada vez
ms borrosa con iOS8 soportando cinco tamaos diferentes
de pantalla. En lugar de soportar los 5 por separado en sus
aplicaciones, Interface Builder utiliza conceptos tales como
Auto-Layout y Adaptive Layout para ayudar al desarrollador a
ser compatible con todos los tamaos de pantalla. Con cada
nueva versin de Xcode, Interface Builder tambin ha mejorado
por lo que es evidente que Apple prefiere que los desarrolladores lo aprovechen; algo que un nuevo desarrollador iOS debe
tener en cuenta.
Objective C
Objective C tiene sus orgenes en el sistema operativo
NeXTSTEP, desarrollado en la dcada de 1980, de donde se
derivan OSX e iOS. Es un lenguaje de programacin orientado
a objetos que agrega mensajera al lenguaje de programacin
C8. De hecho, C y C ++ se pueden escribir junto a Objective C
y algunos de los entornos de iOS simplemente proporcionan
una API para C. Sin embargo, ha sido criticado por tener una
sintaxis peculiar con una gran cantidad de asteriscos, arrobas
y corchetes, que conduce a una curva de aprendizaje peor
8 en.wikipedia.org/wiki/Objective-C
iOS
80
iOS
81
82
Recursos de Aprendizaje
La popularidad de los desarrolladores del ecosistema de Apple
tambin incluye una multitud de recursos de aprendizaje en
diferentes formatos para ayudar a un nuevo desarrollador a
empezar a programar para iOS, y muchos de ellos son gratuitos.
Al tomar ventaja de estos recursos y otros como ellos la curva
de aprendizaje del dominio del avance de iOS se optimizar
considerablemente.
Websites y Blogs
Developer.Apple.com contiene guas de referencia y de
programacin completas para aprender a desarrollar aplicaciones iOS y una referencia de clases de todas las clases en
entornos pblicos. La pgina web de la biblioteca est organizada por tipos de recursos, Temas, Estructuras y ofrece
un buscador. Un documento importante para leer antes de
disear tu primera aplicacin es el iOS Human Interface
Guidelines10. Ofrece recomendaciones para desarrolladores,
aprobadas por Apple, sobre el diseo de aplicaciones para
asegurar una experiencia de usuario positiva. La violacin
de estas recomendaciones sera, con toda probabilidad,
10
developer.apple.com/library/ios/documentation/UserExperience/Conceptual/
MobileHIG
11
84
85
12
www.youtube.com/user/azamsharp
13
swiftnews.curated.co
iOS
86
Consideraciones Finales
Es un momento emocionante para ser parte de la comunidad
de desarrolladores de iOS y esperamos que este captulo sea
de utilidad en la bsqueda de un punto de partida. Decir que
las cosas cambian rpidamente es un eufemismo con todos
los nuevos dispositivos, los entornos y los servicios que se
han lanzado en los ltimos aos; pero no te dejes intimidar
por la velocidad a la que la tecnologa se mueve dentro del
ecosistema de Apple. La mayor parte de los conceptos bsicos
en el desarrollo de una aplicacin estndar se aplican ahora
igual que como lo hicieron en las primeras versiones de iOS.
Por suerte, hay un sinnmero de recursos disponibles para
empezar y hacer crecer tus habilidades de desarrollo en iOS, y
la mayora de ellos son gratuitos.
Cosas a considerar al crear tu aplicacin iOS "Hola Mundo",
y ms all:
Comenzar con Objective-C o lenguaje Swift?
Tiene ms sentido utilizar Interface Builder para disear
la interfaz o es mejor hacerlo en cdigo?
Aunque el uso servicios de back-end como CloudKit facilita
el desarrollo, me estoy enclaustrando demasiado en la
arquitectura de Apple? Podran eso hacer que una versin
en Android no puediera acceder a ese mismo back-end?
Cules son las desventajas del desarrollo de aplicaciones
iOS fuera de Xcode (utilizando herramientas multiplataiOS
87
iOS
88
Java ME (J2ME)
El Ecosistema
J2ME (oficialmente Java ME) es la plataforma de aplicaciones
mviles ms antigua que an sigue estando ampliamente
utilizada. J2ME est diseada para funcionar principalmente
en telfonos de gama media, dominando este segmento
del mercado. De todas maneras, esos telfonos se estn
abandonando progresivamente en favor de smartphones con
especificaciones bsicas que ofrecen mejor hardware, APIs y
opciones de monetizacin con un coste similar. Como consecuencia, la popularidad de J2ME ha cado significativamente
en los ltimos aos. Entonces, por qu querras desarrollar
para J2ME? Sobre todo por una razn: el alcance de mercado. A
pesar de que el 72% de todos los telfonos mviles producidos
en el tercer trimestre del 2014 eran smartphones1, la mayora
de los telfonos mviles en uso siguen siendo de gama media.
As que si tu modelo de negocio se basa en el acceso a tantos
clientes potenciales como sea posible, J2ME podra ser una
buena eleccin, especialmente si te diriges a mercados como
algunos pases de frica o la India.
Sin embargo, si su modelo de negocio se basa en las ventas
directas de tu aplicacin, o si tu aplicacin tiene que hacer uso
de las funciones y hardware ms avanzados, las plataformas
para smartphones son la mejor opcin.
1 counterpointresearch.com/marketmonitor2014q3
Java ME (J2ME)
90
Prerrequisitos
Para desarrollar una aplicacin Java ME, necesitars:
El Java SDK2 y un IDE de tu eleccin, por ejemplo Eclipse
Pulsar para Desarrolladores Mviles3, NetBeans4 con su
plug-in Java ME o IntelliJ5. Los principiantes habitualmente eligen NetBeans.
Un emulador, como Wireless Toolkit6, el Micro Emulator7 o
un SDK o emulador de un proveedor especfico.
Dependiendo de tu configuracin, puedes necesitar un
ofuscador como ProGuard8. Para desarrollos profesionales
considera utilizar una herramientas como Maven9 o Ant10.
Quizs te interese echarle un vistazo a J2ME Polish11, el
framework de cdigo abierto para desarrollar tu aplicacin
para varios dispositivos.
Completar la instalacin y las instrucciones de configuracin
va ms all del alcance de esta gua, consulta la documentacin de las respectivas herramientas.
Tambin puedes descargar y leer los JavaDocs para las
tecnologas y APIs ms importantes: puedes descargar la
2 oracle.com/technetwork/java/javame/downloads
3 eclipse.org
4 netbeans.org
5 jetbrains.com
6 oracle.com/technetwork/java/download-135801.html
7 code.google.com/p/microemu
8 proguard.sourceforge.net
9 maven.apache.org
10
ant.apache.org
11
j2mepolish.org
Java ME (J2ME)
91
Implementacin
La plataforma Java ME es bastante sencilla: comprende la
Connected Limited Device Configuration (CLDC)13 y el Mobile
Internet Device Profile (MIDP)14, y ambos son bastante fciles
de entender. Ellos forman la base de cualquier entorno J2ME
y proporcionan un conjunto estandarizado de capacidades
a todos los dispositivos J2ME. Dado que tanto CLDC y MIDP
fueron diseados hace una dcada, el conjunto predeterminado
de las capacidades que ofrecen es rudimentario segn los
estndares actuales.
Los fabricantes pueden complementar estas rudimentarias
capacidades mediante la implementacin de diversas Java
Specification Requests opcionales (JSR), por ejemplo el acceso
a datos de usuario y el sistema de archivos (JSR 75), o soporte
a GPS (JSR 179). Para una lista completa de JSRs relacionadas
con el desarrollo de Java ME, visita el Java Community Process'
Lista por JCP Technology15.
Es muy importante saber que los JSR que desees utilizar
pueden no estar disponibles para todos los dispositivos, as
que las capacidades disponibles en un dispositivo pueden no
estar disponibles en otro.
12
developer.nokia.com/asha/documentation
13
java.sun.com/products/cldc/overview.html
14
java.sun.com/products/midp/overview.html
15
jcp.org/en/jsr/tech?listBy=1&listByType=platform
Java ME (J2ME)
92
Entorno de Ejecucin
Las aplicaciones J2ME son llamados MIDlets. El ciclo de vida
de un MIDlet es muy simple: slo se puede iniciar, pausar y
destruir. En la mayora de dispositivos un MIDlet se pausa
automticamente cuando se minimiza, no se puede ejecutar
en segundo plano. Los MIDlets tambin se pueden ejecutar
aisladamente unos de otros y estn muy limitados en su interaccin con el sistema operativo subyacente. Estas capacidades
estn disponibles slamente a traves de JSRs opcionales (por
ejemplo, JSR 75) y APIs especficas de cada proveedor.
Creando Interfaces de Usuario
Puedes crear la interfaz de usuario de tu aplicacin de varias
formas:
1. Componente LCDUI de alto nivel: utilizas componentes
estndares de la interfaz, tales como formularios y listas
2. Componentes LCDUI de bajo nivel: controlas manualmente
cada pxel de tu interfaz utilizando funciones grficas de
bajo nivel
3. SVG: dibujas la interfaz en SVG y usas las APIs de JSR
22616 o JSR 28717
Adems, algunos fabricantes ofrecen extensiones adicionales
de interfaz de usuario. Por ejemplo, la ltima serie de telfonos
de Nokia (Nokia Asha) utiliza su propio paradigma de interfaz18.
Tambin existen herramientas que te pueden ayudar con el
desarrollo de interfaces de usuario:
16
www.jcp.org/en/jsr/detail?id=226
17
jcp.org/en/jsr/detail?id=287
18
developer.nokia.com/asha/learning/ui
Java ME (J2ME)
93
Testeado
Debido a la fragmentacin de los dispositivos, probar las
aplicaciones es vital. Ponlas a prueba en una combinacin
de dispositivos tan pronto y tan a menudo como sea posible.
Algunos emuladores son bastante buenos, pero hay cosas que
necesitan ser validadas en dispositivos reales. Fabricantes
como Nokia23 y Samsung24 ofrecen acceso remoto de pago y a
veces gratuito a algunos dispositivos seleccionados.
19
j2mepolish.org
20
lwuit.java.net/
21
mewt.sourceforge.net
22
pnggauntlet.com pnggauntlet.com
23
forum.nokia.com/rda
24
developer.samsung.com
Java ME (J2ME)
94
Testeado automtico
Hay varios entornos de pruebas unitarias para Java ME,
incluyendo J2MEUnit25, MoMEUnit26 y CLDC Unit27; herramientas avanzadas como JInjector28 aportan control sobre el cdigo
y validacin de la interfaz de usuario.
Portar
En su esencia, Java ME es un conjunto de normas y especificaciones que, a veces, los comercializadores interpretan de
manera diversa, lo cual produce todo tipo de errores y comportamientos fuera del estndar. En las siguientes secciones
describimos diferentes estrategias para portar tus aplicaciones
a diferentes dispositivos y plataformas Java ME.
Mnimo Comn Denominador
Puedes prevenir muchos problemas de portabilidad si limitas la
funcionalidad de tu aplicacin al mnimo comn denominador.
Esto normalmente implica CLDC 1.0 y MIDP 1.0, o CLDC 1.1 y
MIDP 2.0 si slo vas a publicar tu aplicacin en los pases/
regiones ms desarrollados.
Aunque sta aproximacin es adecuada para aplicaciones
sencillas, para aquellas complejas no resulta el camino
adecuado a seguir. En tal caso, es posible que quieras considerar el uso de Java Technology for the Wireless Industry (JTWI,
JSR 185) o la Mobile Service Architecture (MSA, JSR 248) como
base, pero debers ser consciente de que stas cuentan con
menor soporte en el mercado.
25
j2meunit.sourceforge.net
26
momeunit.sourceforge.net
27
snapshot.pyx4me.com/pyx4me-cldcunit
28
www.code.google.com/p/jinjector
Java ME (J2ME)
95
Migrar Frameworks
Los entornos enfocados a portabilidad pueden ayudarte a
lidiar con la fragmentacin, adaptando de forma automtica
tu aplicacin a diferentes dispositivos y plataformas. Para
conseguir esto, ofrecen libreras cliente en tiempo de ejecucin
y herramientas en tiempo de compilacin (tales como cross
compilers) muy fiables.
Los buenos entornos para portar te permiten usar cdigo
especfico de plataformas y dispositivos en tus proyectos. En
otras palabras: un buen entorno no oculta la fragmentacin de
dispositivos, sino que la hace ms manejable.
Para Java ME, una de tus opciones es J2ME Polish de
Enough Software29 (disponible bajo licencias comerciales y GPL
Open Source). Portar desde C++ a Java ME tambin es posible
con la herramienta de cdigo abierto MoSync SDK30.
Para obtener ms informacin acerca del desarrollo multiplataforma y las herramientas disponibles, consulta el captulo
"Hacia Multiplataforma".
Firmado
El estndar de Java para dispositivos mviles diferencia entre
las aplicaciones que han sido firmadas y las que no. Algunas
funciones de los telfonos estn disponibles slo para las
aplicaciones de confianza.
Las aplicaciones firmadas por el fabricante de un dispositivo
o un oeprador de telefona disfrutan del nivel ms alto de seguridad y pueden acceder a todas las APIs de Java disponibles
en el telfono.
29
http://j2mepolish.org j2mepolish.org
30
http://mosync.com mosync.com
Java ME (J2ME)
96
Distribucin
Las tiendas de aplicaciones son probablemente la forma ms
eficiente de distribuir tus aplicaciones. Algunas de las tiendas
ms eficaces son:
Mobile Rated35 es un proveedor de aplicaciones no
dependiente de las operadoras.
GetJar36 es uno de los distribuidores ms antiguos de
aplicaciones mviles, y no slo Java.
31
javaverified.com
32
verisign.com
33
thawte.com
34
www.intertek.com/wireless-mobile
35
mobilerated.com
36
getjar.com
Java ME (J2ME)
97
Aprende Ms
Si quieres aprender ms sobre el desarrollo en Java ME, a
continuacin tienes algunos recursos que te pueden ayudar.
Online
Como Java ME es una de las plataformas mviles ms antiguas
que todava se utilizan, es fcil encontrar recursos relacionados, por ejemplo:
Tutorialess de sitios tales como J2ME Salsa41.
Archivos de recursos como billday.com/javame
37
apps.opera.com
38
www.orangepartner.com/distribute
39
mobileapps.o2online.de
40
www.wipconnector.com/appstores/
41
j2mesalsa.com
Java ME (J2ME)
98
Libros
Con el paso de los aos se han llegado a escribir un buen
nmero de libros de Java ME, por ejemplo:
Beginning J2ME: From Novice to Professional por
Jonathan Knudsen y Sing Li
Pro Java Me Apps: Building Commercial Quality Java ME
Apps por Ovidiu Iliescu
Pro J2ME Polish: Open Source Wireless Java Tools Suite
por Robert Virkus, sobre el desarrollo con J2ME Polish
LWUIT 1.1 for Java ME Developers por Biswajit Sarkar,
sobre el desarrollo con LWUIT
Desafortunadamente, debido a la decreciente popularidad
de Java ME, muy pocos libros se han escrito sobre ella en los
ltimos aos.
Java ME (J2ME)
99
Tizen
El Ecosistema
Tizen es un sistema operativo de cdigo abierto basado en
Linux y diseado para ser ejecutado en smartphones, netbooks,
smartwatches, sistemas de infotenimiento en vehculos (IVI)
y otros dispositivos inteligentes. Se le puede considerar como
el sucesor del Meego de Nokia /Intel, y del LiMo de Samsung;
sistemas operativos anteriores tambin basados en Linux.
Samsung tambin aprovech Tizen para fusionar en l los
restos del abandonado bada OS, aportando un entorno para
aplicaciones nativas. Tizen, como marca de la Fundacin Linux,
fue anunciado por la Asociacin Tizen en Diciembre del 2011,
y la versin 1.0 (alias 'Larkspur') fue lanzada en Abril del 2012.
Desde entonces, el sistema ha estado en desarrollo continuo,
con Tizen 3.0 anunciado para el 2015. Los principales impulsores de Tizen son Samsung para la rama mvil e Intel para el
enfoque IVI. Algunas otras empresas participantes son Fujitsu,
NTT Docomo, Huawei, Vodafone y Orange.
El primer dispositivo Tizen que ha sido comercializado es
la cmara NX300M de Samsung. En el Mobile World Congress
de febrero del 2014 Samsung lanz nuevas versiones de sus
smartwatches que utilizaban Tizen: Samsung Gear 2 y Gear
2 Neo. Casi un ao ms tarde, el primer smartphone Tizen se
comercializ finalmente en la India y Samsung anunci que
todos sus televisores inteligentes que se lancen durante el
2015 utilizarn Tizen.
Tizen
101
Desarrollo
El principal objetivo de Tizen es ser un sistema operativo
estndar para aplicaciones escritas en HTML5, utilizado por
el navegador web de Tizen, actualmente considerado la mejor
implementacin de HTML5 en un dispositivo mvil. Tizen tambin es compatible con aplicaciones nativas en C++, permitindote sacarle el mximo partido al hardware de los dispositivos.
Ambos caminos de desarrollo estn soportados por una gran
variedad de frameworks y libreras populares, como JQuery, que
suponen un buen punto de inicio para desarrollar tu primera
aplicacin Tizen.
Los desarrolladores de aplicaciones web pueden utilizar una
lista completa de funcionaldiades HTML5, APIs de dispositivos
Tizen y libreras (como JQuery y JQuery Mobile) para crear
aplicaciones atractivas. Si ya has creado web apps con para
bada, podrs usar la mayor parte del cdigo en Tizen.
El SDK oficial de Tizen contiene un IDE basado en Eclipse
que puede ser utilizado tanto para aplicaciones web como
nativas. Los desarrolladores veteranos de bada reconocern las
bases de ste SDK: el SDK de Samsung bada. Tambin tienes un
editor de cdigo, diseador de interfaces y un emulador, todo
listo para usar. Para las aplicaciones web tambin puedes usar
el XDK de Intel, si lo prefieres.
Cambios en la versin 2.3
Despus de casi un ao estancado, Tizen 2.3 fue lanzado en
noviembre de 2014 y trajo diferencias sustanciales, especialmente para los desarrolladores de aplicaciones nativas. Hasta
entonces, los desarrolladores de aplicaciones construan aplicaciones en un marco de C ++ llamado OSP que ya fue utilizado
por Samsung para su bada smartphones. Esto haca que fuera
fcil para los desarrolladores de bada portar sus aplicaciones
Tizen
102
a Tizen. En la versin 2.3 OSP ha desaparecido y los desarrolladores tienen que utilizar EFL para aplicaciones nativas. Hay
rumores de que pronto se lanzar una librera de compatibilidad con OSP con el fin de permitir que las aplicaciones basadas
en OSP funcionen en Tizen 2.3 y posteriores versiones.
Uno de los principales cambios en el desarrollo de aplicaciones web en la versin 2.3 es el uso de UTA (Tizen Advanced
UI) en vez de jQuery (que todava se puede utilizar se desea)
y la posibilidad de que crear aplicaciones para smartphones y
wearables con un solo SDK.
Testeando tu aplicacin
Las mejoras pruebas son aquellas que realizan en un dispositivo. En el momento de escribir estas lneas, tu nica
opcin es conseguir uno de los pocos dispositivos de pruebas
para Tizen de Samsung, el RD-PQ o el RD-210, pero es difcil
conseguir tales dispositivos por lo que probablemente tengas
que usar los simuladores y emuladores incluidos en el Tizen
SDK mientras esperas al lanzamiento de los telfonos Tizen en
el mercado de masas. El simulador ofrece una aproximacin
sencilla al testeo de aplicaciones web, pero es limitado en
funcionalidad y no puede ser comparado a las pruebas que se
pueden realizar en un dispositivo real. El emulador est mucho
ms cerca de la experiencia real con el dispositivo y puede ser
usado para testear aplicaciones nativas. Es una mquina virtual
basada en QEMU y ejecutando una imagen de una instalacin
Tizen real.
Tizen
103
Distribucin
Las aplicaciones para Tizen se distribuyen en archivos de
paquetes Tizen (*.tpk) y archivos de widgets (*.wgt) creados
con el Tizen SDK. Los archivos son muy similares a los *.apk
de Android y pueden ser instalados en un dispositivo Tizen
simplemente abrindolos en el explorador de archivos del
dispositivo. El punto principal de distribucin de aplicaciones
ser la TizenStore2 .En contraste respecto a la Apple Appstore,
Google Play Store y Microsoft Windows Phone Market, no
necesitars realizar ningn pago para convertirte en desarrollador registrado en la Seller Office3. Todas las aplicaciones propuestas para venta sern revisadas de acuerdo a las directrices
de la Tizen Store. Normalmente, la certificacin lleva entre 2 y
3 das, dependiendo de la complejidad de la aplicacin.
Aprende Ms
Como desarrollador, tu primera parada debera ser developer.
tizen.org. Ese sitio aloja toda la documentacin, herramientas
y servicios de soporte para el desarrollo en Tizen. Tambin
podrs encontrar un foro con una comunidad de desarrolladores
de aplicaciones muy activa y amigable.
1 developer.samsung.com/remotetestlab
2 www.tizenstore.com
3 seller.tizenstore.com
Tizen
104
Windows
Con Windows 10, tanto las antiguas plataformas Windows
Phone y Windows PC van a converger en un grado an mayor,
junto con una tienda de aplicaciones, las API para aplicaciones
y herramientas universales universales. Con Windows 10 este
modelo no slo se extiende a telfonos, tabletas y PCs, sino
que tambin ser capaz de incluir televisores a travs de la
Xbox Uno y dispositivos incrustados. Windows 10 ya est
disponible como versin preliminar para desarrolladores y
saldr a la venta a mediados de 2015.
El Ecosistema
Microsoft cambi el ecosistema en el ao 2014 al comprar la
divisin Devices and Services de Nokia, incluyendo la lnea
de telfonos Lumia. Microsoft tambin elimin los costes de
licencia asociados con la produccin de telfonos y pequeas
tabletas de Windows. Como resultado, se ha anunciado una
nueva gama de dispositivos que sern lanzados al mercado
por los comercializadores regionales. Es an una incgnita
si eso mejorar de manera sustancial la cuota de mercado de
Windows. En 2014 la mejora fue mucho menor de lo que se
esperaba, pero Microsoft fue capaz de mantener su segundo
puesto despus de Android en algunos pases, entre ellos Italia
y Argentina1. Windows tambin logr reducir la brecha en
las aplicaciones; para agosto de 2014, haba ms de 300.000
aplicaciones disponibles2 .
1 kantarworldpanel.com/global/smartphone-os-market-share
2 windowscentral.com/there-are-now-over-300000-windows-phone-apps-available
Windows
106
Lenguages y Herramientas
El desarrollo para Windows se realiza en C/C++, C# o VB.NET
utilizando Microsoft Visual Studio IDE3. Las aplicaciones se
crean, habitualmente, utilizando la plataforma WinRT XAML,
principalmente en aquellas basadas en eventos, y DirectX,
para juegos basados en bucles de juego. Ambas tecnologas
pueden ser utilizadas en una misma aplicacin. Adems,
puedes crear aplicaciones HTML5 y JavaScript utilizando las
correspondientes WinRT JavaScript APIs, aunque el desarrollo
web no estn incluido en este captulo. Por ltimo pero no
menos importante, puedes crear aplicaciones Windows Phone
sencillas sin programar utilizando Windows Phone App Studio4 o
la aplicacin Project Siena5.
Gracias a las bibliotecas de clases portables (PCL) y los
componentes Windows Runtime puedes usar el lenguaje e
interfaz que mejor encaje con cada mdulo de tu aplicacin.
Si quieres utilizar DirectX con C# debers usar SharpDX.org,
anxframework.codeplex.com o una librera para juegos basadas
en las mismas, por ejemplo monogame.codeplex.com.
Aunque el escenario ms habitual ser emplear XAML
para aplicaciones y DirectX para juegos, tambin puedes
crear juegos en XAML y aplicaciones DirectX, dependiendo de
tus necesidades, as como incluir Direct3D en tu aplicacin
3 visualstudio.com
4 apps.windowsstore.com
5 microsoft.com/projectsiena
Windows
107
108
Integrarse en la Plataforma
La plataforma Windows Phone ofrece numerosas funcionalidades, incluida la pantalla de bloqueo, la cartera mvil, y la
ubicacin. En el hardware se incluyen sensores, Bluetooth,
y la deteccin de proximidad; y las aplicaciones pueden
utilizar extensiones para incrustar la aplicacin en la experiencia de Windows Phone. Obtendrs ms informacin en
msdn.microsoft.com/en-us/library/windows/apps/hh202969.
Las aplicaciones soportan las 'live tiles', mostrando
informacin de manera arbitraria que puede ser actualizada
va mensajes push, y puedes usar aplicaciones de bloqueo de
pantalla que controla la imagen en pantalla e integra control
por voz tanto en Windows Phone como en Windows RT.
En las aplicaciones Windows Phone Silverlight puedes crear
extensiones para la cmara, llamadas 'lenses'7 o integrar la her-
7 msdn.microsoft.com/library/windowsphone/develop/jj206990
Windows
109
8 msdn.microsoft.com/library/windowsphone/develop/hh202957
9 msdn.microsoft.com/library/windowsphone/develop/hh202969
10
msdn.microsoft.com/library/windows/apps/hh464906
11
cocos2d-x.org/projects/cocos2d-x/wiki/Windows_Phone_8_Environment_Setup
12
havok.com/products/havok-windows-ecosystem
Windows
110
Marmalade13
OGRE14
Unity 3D15
Servicios
Hay disponibles notificaciones push16 que pueden actualizar
los live tiles de tu aplicacin. Tambin puedes considerar el
uso del espacio gratuito en nube OneDrive y la integracin
con otros servicios de Windows Live17 para tu aplicacin. Hay
disponibles tambin muchos servicios de terceros18.
Multitarea y Ciclo de Vida de la Aplicacin
Windows tiene una capacidad limitada de multitarea que
suspende las aplicaciones en segundo plano y permite el
cambio rpido entre aplicaciones. Los nicos procesos que
pueden ejecutarse en segundo plano, despus de que una
aplicacin se haya abandonado, son la reproduccin de audio,
el seguimiento de la ubicacin y la transferencia de archivos.
Las aplicaciones tambin pueden programar la ejecucin de
cdigo arbitrario en segundo plano en un intervalo (cdigo que
se conoce como agentes en segundo plano o Background Task).
A dichas tareas se les permite el uso limitado de los recursos
y pueden ser detenidos o ignorados si el sistema operativo
determina que el telfono debe conservar los recursos.
Las aplicaciones suspendidas en segundo plano pueden ser
13
madewithmarmalade.com/marmaladesdk/features/take-apps-windows-phone-8
14
ogre3d.org/2012/10/30/ogre-now-supports-windows-phone-8
15
unity3d.com/pages/windows
16
msdn.microsoft.com/library/windows/apps/xaml/hh913756
17
msdn.microsoft.com/live
18
dev.windowsphone.com/en-us/featured/partners
Windows
111
Testeo y Analticas
Microsoft ofrece una excelente revisin del testeo de una
aplicacin Windows Phone 820 incluyendo tests a lo largo del
procese de desarrollo. Las pruebas unitarias estn integradas
en Visual Studio, simplemente creando un proyecto nuevo de
prueba unitaria y enlazndolo a los proyectos que te gustara
testear. MSDN incluye buena documentacin del proceso21
Para desarrollos basados en comportamiento est disponible
el Windows Phone Test Framework por Expensify22 .
Hay varias opciones para los desarrolladores que deseen
recopilar datos y analticas en tiempo de ejecucin. Flurry23 y
Google Analytics24 proporcionan herramientas de anlisis y servicios compatibles con Windows. Los desarrolladores tambin
pueden utilizar el servicio de Microsoft Application Insights
service25. Tambin hay disponibles slidas herramientas de
monitorizado de rendimiento en Visual Studio para controlarlo
durante la fase de desarrollo.
19
msdn.microsoft.com/library/windows/apps/xaml/hh464925
20
msdn.microsoft.com/en-us/library/windows/apps/jj247547(v=vs.105).aspx
21
msdn.microsoft.com/en-us/library/windows/apps/dn168930(v=vs.105).aspx
22
github.com/Expensify/WindowsPhoneTestFramework/
23
flurry.com/flurry-analytics.html
24
googleanalyticssdk.codeplex.com
25
azure.microsoft.com/documentation/articles/app-insights-get-started
Windows
112
Distribucin y Monetizacin
Distribuye tus aplicaciones a travs de Windows Phone Store.
Aunque el contenido de la aplicacin es revisado y restringido
de una manera similar a la App Store de Apple, Microsoft proporciona directrices ms claras para la solicitud de publicacin,
disponibles en el Dev Center26. Aunque las herramientas de
desarrollo se proporcionan de forma gratuita, se requiere
una cuenta de pago para implementar una aplicacin en
dispositivos y distribuirla en Windows Store. Actualmente, una
cuenta cuesta $19 (USD) en un pago nico para desarrolladores
en solitario, y $99 (USD) al ao para empresas. Esas tarifas
no se aplican a los estudiantes miembros del DreamSpark27.
Windows Store tambin ofrece una distribucin de betas por
tiempo limitado y ofrece un hub corporativo para empresas28.
Puedes utilizar el Windows Phone Store Test Kit29 para probar
la aplicacin en local antes de enviarla para su publicacin.
Hay 128 tiendas regionales de Windows Phone App en 50
idiomas30, as que puedes tener un alcance global.
Los beneficios estandar para el desarrollador son del 70%,
incrementable al 80% si tu aplicacin supera los $25.000
(USD) en ventas. La Windows Store est disponible en ms de
200 pases y regiones y ms de 100 idiomas, as que tienes un
alcance global. Las aplicaciones son gestionadas por el usuario,
no por el dispositivo, as que el usuario puede utilizarlas en
una gran variedad de plataformas, por ejemplo un ordenador
26
dev.windows.com
27
www.dreamspark.com
28
msdn.microsoft.com/library/windowsphone/develop/jj206943
29
msdn.microsoft.com/library/windowsphone/develop/hh394032
30
kb.tethras.com/localizing-your-windows-phone-8-app/windows-phonestores-and-supported-languages
Windows
113
31
msdn.microsoft.com/library/windowsphone/develop/ff967558
32
advertising.microsoft.com/mobile-apps
33
www.developer.nokia.com/Distribute/NAX
34
smaato.com
35
inner-active.com
36
adduplex.com
37
developers.google.com/mobile-ads-sdk/
38
msdn.microsoft.com/library/windows/apps/xaml/dn864359
Windows
114
Aprende Ms
Visita dev.windows.com para noticias, herramientas de desarrollo y foros.
El equipo de desarrollo publica mensajes en su blog
blogs.windows.com/buildingapps o en su cuenta de Twitter
@wpdev. Para encontrar una gran coleccin de recursos para
desarrolladores y diseadores, visita windowsphonegeek.com y
reddit.com/r/wpdev.
Tambin puedes extender componentes y comportamientos con varias herramientas tanto comerciales como de cdigo abierto. Algunas populares son
telerik.com, coding4fun.codeplex.com, cimbalino.org,
mvvmlight.codeplex.com y github.com/MvvmCross/MvvmCross.
Para la inspeccin del rbol visual, bindings y propiedades
de las interfaces de usuario basados en XAML en tiempo de
ejecucin, est disponible xamlspy.com.
Microsoft provee una serie de videos para los recin iniciado
en el desarrollo de aplicaciones Windows Phone 8.139
Asimismo, encontrars cdigo de ejemplo en code.
msdn.microsoft.com/windowsapps, en varios proyectos de codeplex.com y en ejemplos disponibles en
msdn.microsoft.com/library/windows/apps/br211375.
La hoja de ruta para desarrolladores de apliaciones en
msdn.microsoft.com/library/windows/apps/xaml/br229583
ofrece una buena visin global de estrategia, diseo y desarrollo de aplicaciones para Windows.
Si ests portando una aplicacin desde iOS
o Android, puedes encontrar ms ayuda en
msdn.microsoft.com/library/windows/apps/dn751495.
39
microsoftvirtualacademy.com/training-courses/windows-phone-8-1development-for-absolute-beginners
Windows
115
Hacia Multiplataforma
Tantas plataformas y tan poco tiempo: Esa frase define perfectamente la situacin que tenemos en el mundo mvil. Hay
plataformas ms que suficientes para elegir: Android, BlackBerry 10, Firefox OS, iOS, Tizen y Windows estn, o probablemente
estarn, entre algunas de las plataformas smartphone y tablets
ms importante, mientras Brew MP y Java ME dominan en el
mbito de los telfonos de gama media (plataformas listadas
no por importancia, sino por orden alfabtico).
La mayora de los promotores de aplicaciones, citando cierta
famosa letra de una cancin de Queen, le dirn al desarrollador: "Lo quiero todo, lo quiero todo, lo quiero todo... y lo
quiero ahora!", as que la eleccin puede muy bien estar entre
invertir en mltiples equipos paralelos de desarrollo, o adoptar
una estrategia multiplataforma.
Hacia Multiplataforma
117
ActionScript
BlackBerry 10,
BlackBerry PlayBook OS
(QNX)
ninguno
C, C++
Android (parcialmente,
utilizando el NDK), iOS
(parcialmente)
C#
Windows 10
ninguno
Java
Android, BlackBerry,
dispositivos Java ME
ninguno
JavaScript
BlackBerry PlayBook
OS, Firefox OS, Tizen,
Windows 10
BlackBerry (WebWorks),
Nokia (WRT)
Objective-C
iOS
ninguno
118
Hacia Multiplataforma
119
Hacia Multiplataforma
120
121
2 urbanairship.com/
Hacia Multiplataforma
122
Estrategias Multiplataforma
En esta seccin se describen algunas de las estrategias que
puedes emplear para implementar tus aplicaciones en diferentes plataformas.
Soporte Directo
Puedes soportar varias plataformas si cuentas con un equipo
especializado para cada plataforma objetivo. Si bien esto
puede consumir muchos recursos, es muy probable que te d
mejor integracin y experiencia de usuario en cada sistema.
Una va fcil de inicio es comenzar con una plataforma y
luego progresar hacia plataformas adicionales una vez que tu
aplicacin se ha defendido en el mundo real.
Hacia Multiplataforma
123
Plataformas Objetivo
cocoacontrols.com
iOS
chupamobile.com
Android, iOS
verious.com
windowsphonegeek.com/Marketplace
Windows
Comparticin de Recursos
Cuando mantienes varios equipos para diferentes plataformas
puedes ahorrar mucho esfuerzo si compartes algunas estructuras de la aplicacin:
Concepto y recursos: Esto se hace habitualmente de
forma automtica: compartir las ideas y los conceptos de
la aplicacin, el flujo de interfaz de usuario, input y output y los recursos grficos de la aplicacin (pero debes ser
consciente de la necesidad de dar soporte a las estructuras
especficas de interfaz de usuario de cada plataforma).
Estructuras de datos y algoritmos: V un paso ms all
compartiendo estructuras de datos y algoritmos entre
plataformas.
Comparticin de cdigo del modelo de negocio:
Utilizando compiladores de multiplataforma tambin
puedes compartir el modelo de negocio entre las plataformas. Alternativamente, puedes utilizar un intrprete o
una mquina virtual y un lenguaje comn en un grupo de
plataformas.
Hacia Multiplataforma
124
Abstraccin completa: Algunas herramientas multiplataforma te permiten abstraerte completamente del modelo
de negocio, las vistas y el control de tu aplicacin para
diferentes plataformas.
Reproductores y Mquinas Virtuales
Los reproductores suelen proporcionar un conjunto comn de
APIs sobre distintas plataformas. Ejemplos famosos incluyen
Flash, Java ME y Lua. Este enfoque hace que el desarrollo sea
muy fcil. Te vuelves dependiente, sin embargo, del proveedor
de la plataforma para incorporar nuevas caractersticas, por lo
que el reto aqu se da cuando las funciones estn disponibles
en una nica plataforma. A menudo los reproductores tienden
a utilizar una aproximacin de mnimo comn denominador
respecto a las funciones ofertadas para mantener la uniformidad entre las implementaciones para varias plataformas.
Generadores de cdigo como Applause3 llevan el concepto de
reproductor un paso ms all, a menudo son especficos del
dominio y permiten generar aplicaciones a partir de datos.
Tambin suelen carecer de flexibilidad en comparacin con las
soluciones programables.
Compilacin Cruzada
La compilacin cruzada permite la programacin en un
lenguaje que es transformado en el lenguaje especfico de una
plataforma diferente. En trminos de rendimiento a menudo
es la mejor solucin de multiplataforma, aunque puede haber
diferencias en comparacin con las aplicaciones nativas. Esto
puede darse, por ejemplo, cuando ciertas construcciones de
programacin no pueden ser traducidas de manera ptima
desde el cdigo fuente al lenguaje de destino.
3 applause.github.com
Hacia Multiplataforma
125
Licencia
Plataformas de destino
Chrome Apps
developer.chrome.com/apps
BSD
jQuery Mobile
www.jquerymobile.com
MIT y GPL
Android, BlackBerry,
Firefox, iOS, Windows
Sencha Touch
www.sencha.com/products/touch
GPL
The M Project
the-m-project.org
MIT y GPL
Android, BlackBerry,
Firefox, iOS, Windows
126
Frameworks de Aplicaciones
Multiplataforma
Hay muchas soluciones multiplataforma disponibles, por lo
que es difcil ofrecer una visin completa. Puedes llamarlo
fragmentacin, nosotros lo llamamos competencia. Una palabra
de advertencia: no sabemos todas las opciones, si tienes una
solucin propia que est disponible pblicamente, por favor
hznoslo saber a travs de mobiledevguide@enough.de. Un
Hacia Multiplataforma
127
4 research2guidance.com/cross-platform-tool-benchmarking-2013
Hacia Multiplataforma
128
Licencia
Input
Output
Adobe Air
adobe.com/devnet/
devices.html (Adobe)
Comercial
Flash
Android,
BlackBerry Tablet
OS, iOS, PC
Akula
verivo.com
Comercial
(Visual)
Android,
BlackBerry, iOS,
Windows Phone
Application Craft
applicationcraft.com
Comercial
HTML, CSS,
JavaScript
Android,
BlackBerry 10,
iOS, Windows
Phone, sitios
mviles
Codename One
codenameone.com
Comercial
Java
Android,
BlackBerry, iOS,
J2ME, Windows
Corona
coronalabs.com (Corona
Labs)
Comercial
JavaScript
Android, iOS,
Kindle, Nook,
Windows
Evothings Studio
evothings.com
Open Source
HTML, CSS,
JavaScript
Android, iOS
Feedhenry
feedhenry.com
Comercial
HTML, CSS,
JavaScript
Android, iOS,
HTML5, Windows
J2ME Polish
j2mepolish.org
(Enough Software)
Open Source
+ Comercial
Java ME,
HTML, CSS
Android,
BlackBerry,
J2ME, PC
Kony One
www.kony.com/products/
apps
Comercial
HTML, CSS,
JavaScript,
RSS
Android,
BlackBerry, iOS,
J2ME, Windows,
PC, Web
Hacia Multiplataforma
129
Solucin
Licencia
Input
Output
LiveCode
runrev.com (RunRev)
Comercial
English-like
Android, iOS,
Windows y Web
M2Active
service2media.com
(Service2Media)
Comercial
Drag and
Drop + Lua
Android,
BlackBerry, iOS,
Windows
MobiForms
mobiforms.com
(MobiForms)
Comercial
Drag and
Drop +
MobiScript
NeoMAD
neomades.com
Comercial
Java
Android,
BlackBerry, iOS,
J2ME, Windows
Orubase
orubase.com
Comercial
ASP .NET
MCV
Android, iOS,
Windows
PhoneGap/Cordova
phonegap.com cordova.
apache.org (Adobe/
Apache)
Open Source
HTML, CSS ,
JavaScript
Android,
BlackBerry 10,
iOS, Windows
Qt
qt.digia.com (Digia)
Open Source
+ Comercial
C++
Android,
BlackBerry 10,
iOS, Sailfish OS,
Windows
Rhodes
motorolasolutions.com/
US-EN/RhoMobile+Suite/
Rhodes (Motorola)
Open Source
+ Comercial
Ruby,
HTML, CSS,
JavaScript
Android,
BlackBerry, iOS,
Windows Phone
Titanium
appcelerator.com
(Appcelerator)
Open Source
JavaScript
Android, iOS,
Tizen, Windows,
Mobile Web
trigger.io trigger.io
(Triggger Corp)
Comercial
HTML5,
JavaScript
Android, iOS
webinos
webinos.org
Open Source
JavaScript
Android,
BlackBerry, iOS,
PC, TV
Hacia Multiplataforma
130
Solucin
Licencia
Input
Output
Xamarin xamarin.com
Comercial
C#
iOS, Android,
Windows, PC
Uso gratuito
HTML, CSS,
JavaScript
Android, iOS,
Windows
XML VM xmlvm.org
Open Source
+ Comercial
Java, .NET,
Ruby
C++, Java,
JavaScript, .NET,
Objective-C,
Python
Hacia Multiplataforma
131
Solucin
Licencia
Input
Output
Cocos 2D
cocos2d-x.org
Open Source
C++, HTML5,
JavaScript
Android,
BlackBerry,
iOS, Windows
Corona
coronalabs.com
(Corona Labs)
Comercial
Lua
Android, iOS,
Kindle, nook,
Windows
EDGELIB
edgelib.com (elements
interactive)
Comercial
C++
Android, iOS,
PC
Esenthel
esenthel.com
(elements interactive)
Comercial
C++
Android, iOS,
PC
GameSalad gamesalad.
com
Comercial
Android, iOS,
Windows, PC,
web
Gideros Mobile
giderosmobile.com
Comercial
Lua
Android, iOS
id Tech 5
idsoftware.com (id)
Commercial
C++
Consoles, iOS,
PC
Irrlicht
irrlicht.sourceforge.
net
Open Source
C++
Appease
appeasymobile.com
Open Source
C++
Android, iOS,
Windows
Marmalade
madewithmarmalade.
com (Ideaworks3D)
Comercial
C++, HTML5,
JavaScript
Android,
BlackBerry 10,
iOS, Windows
Moai getmoai.com
(Zipline Games)
Open Source,
Comercial
Lua
Android, iOS,
PC, Web
MonoGame
monogame.codeplex.
com
Open Source
C#, XNA
Android, iOS,
PC, Windows
Hacia Multiplataforma
132
Solucin
Licencia
Input
Output
Ogre 3D
ogre3d.org
Open Source
C++
Windows
Phone, Window
RT, PC
orx
orx-project.org
Open Source
C, C++,
Objective-C
Android, iOS,
PC
ShiVa 3D
stonetrip.com
Comercial
C++
Android,
BlackBerry
10, iOS, PC,
Consoles
SIO2
sio2interactive.com
(sio2interactive)
Comercial
C, Lua
Android, iOS,
PC
Unigine
unigine.com
(Unigine corp.)
Comercial
C++, UnigineScript
Android, iOS,
PC, PS3
Unity3D
unity3d.com (Unity
Technologies)
Comercial
C#, JavaScript,
Boo
Android,
BlackBerry 10,
iOS, Windows,
PC, consoles,
web
Hacia Multiplataforma
133
135
136
137
138
HTML5
La quinta versin del estndar HTML promete la reproduccin
de caractersticas anteriormente slo disponibles con ayuda de
tecnologa propietaria. HTML5 es uno de los factores clave que
hacen que los desarrolladores sopesen el desarrollo de sitios
mviles y aplicaciones web en lugar de aplicaciones nativas.
El look-and-feel similar al de aplicaciones compiladas con un
nico cdigo base para una serie de dispositivos populares, la
capacidad de acceder a hardware de dispositivos tales como
la cmara y el micrfono, el almacenamiento de datos en
los dispositivos para utilizar sitios mviles sin conexin y la
optimizacin de la pgina web segn en el tamao de pantalla,
hacen de HTML5 una atractiva alternativa para el desarrollo de
aplicaciones nativas.
Pero HTML5 depende del navegador y es exactamente se
apoyo el que escasea actualmente. Slo el 60% de los usuarios
de Internet tienen navegadores que soporten ms del 50% de
las caractersticas actuales de HTML56. El ex-CTO de Facebook
Brent Taylor describe la situacin de la siguiente manera:
Hay una desenfrenada fragmentacin de la tecnologa en los
navegadores mviles, por lo que los desarrolladores no saben
qu parte de HTML5 pueden utilizar. HTML5 es promovido como
un estndar nico, pero viene en diferentes versiones para
cada dispositivo mvil. Cuestiones tales como la aceleracin
5 developers.google.com/webmasters/smartphone-sites
6 gs.statcounter.com/
139
www.abiresearch.com/press/21-billion-html5-browsers-on-mobile-devices-by-201
Sitios para Mviles & Tecnologas Web
140
DeveloperEconomics.com
Sitios para Mviles & Tecnologas Web
141
142
Mejoras Progresivas
Las mejoras progresivas tienen la capacidad de responder a
toda la gama de dispositivos mviles. Se enva una sola pgina
HTML a todos los dispositivos. Se utiliza cdigo JavaScript de
manera adicional para construir progresivamente la funcionalidad a un nivel ptimo para el dispositivo en particular. Ya que
es una solucin exclusiva mvil, el principal inconveniente es
el rendimiento. La construccin progresiva conlleva tiempo de
ejecucin y vara de acuerdo con el dispositivo y la red. Como
solucin de desktop y mvil, su principal inconveniente es que
un nico documento HTML se enva a todos los dispositivos.
Un entorno muy conocido que hace uso de la mejora progresiva
es jQuery Mobile12 .
Pros
Una adaptacin completa en el lado cliente asegura que no
haya impacto en la infraestructura existente.
Ajuste automtico de contenido, funcionalidad y diseo.
Contras
Prdida de control, pues la deteccin es gestionada por el
navegador.
La deteccin de navegador dista mucho de ser perfecta.
La deteccin realizada en el lado cliente tiene impacto
sobre el rendimiento global del site.
El mismo HTML es servido a todos los dispositivos.
12
jquerymobile.com
Sitios para Mviles & Tecnologas Web
143
13
wurfl.sourceforge.net/
14
deviceatlas.com/
Sitios para Mviles & Tecnologas Web
144
www.sevenval.com
16
www.netbiscuits.com
17
www.fitml.com
Sitios para Mviles & Tecnologas Web
145
146
www.slideshare.net/sevenval/mobile-web-performance-dwx13
19
gs.statcounter.com/#mobile_browser-ww-monthly-201207-201306
20
seleniumhq.org/projects/webdriver/
Sitios para Mviles & Tecnologas Web
147
Aprende Ms
Online
W3Schools y CSS Tricks (buenos recursos para iniciarse en
HTML, CSS y JavaScript): w3schools.com, css-tricks.com
HTML5 Rocks (excelente recurso sobre HTML5 que
incluye tutoriales, presentaciones, artculos, etc.) :
www.html5rocks.com/en/
Breaking the Mobile Web (Max Firtman, el autor de
mltiples libros acerca de programacin web mvil, ofrece
noticias actualizadas en su blog dedicado a mviles):
mobilexweb.com/
Mobi Thinking (el recurso de DotMobi para vendedores,
con anlisis y opiniones de expertos en marketing mvil):
mobithinking.com/
Testing (Mobile) Web Apps:
docs.webplatform.org/wiki/tutorials/Testing_web_apps
Sitios para Mviles & Tecnologas Web
148
149
Aplicaciones Empresariales
Los responsables de decisiones corporativas ven actualmente
las aplicaciones empresariales mviles como un factor estratgico, una necesidad, ms que como una mera entrada en una
hoja de clculo de contabilidad. Las aplicaciones empresariales
internas son capaces de reducir la latencia de la transferencia
de informacin dentro de una organizacin, incrementando la
agilidad del trabajador al hacer disponibles datos de carcter
competitivo en cualquier momento y en cualquier lugar. Las
aplicaciones tambin pueden permitir a las empresas comprometerse con sus clientes, proveedores y consumidores finales,
etc. Ejemplos de aplicaciones empresariales incluyen software
para puntos y personal de ventas, de respuesta a emergencias,
gestin de inventario o cadena de suministro, pero tambin de
marketing B2C.
Puede parecer una obviedad decirlo, pero el riesgo ms
importante en este momento es no tener una estrategia mvil
corporativa. Las empresas estn tomando el enfoque Mvil
para Todos en contraste a limitar su uso a la alta direccin,
como ocurra en el pasado. Para conseguir esto, el enfoque
tradicional de TIC de compra y distribucin de dispositivos en
la estructura de gestin ya no es la nica estrategia a utilizar.
Hemos pasado del BYOD (Bring Your Own Device, en castellano
Trae Tu Propio Dispositivo) al BYOx (Bringh Your Own Anything,
en castellano Trae Tu Propio...), lo que incluye aplicaciones,
contenido, herramientas y entornos de desarrollo, e incluso
wearables, permitiendo al personal utilizar sus dispositivos
personales para conectarse a la infraestructura TIC, descargar
contenido seguro y usar aplicaciones empresariales. Con la llegada de BYOD, una empresa se expone a riesgos que tradicionalmente no se consideraban en la estrategia TIC corporativa.
La adopcin temprana en la empresa de una estrategia mvil
Aplicaciones Empresariales
151
Estrategia Empresarial
Hoy en da, muchas empresas tienen un Chief Mobile Officer
(CMOO) o han ampliado el alcance de sus CIOs. El trabajo del
CMOO es coordinar las tendencias mviles y sus directrices,
y hacer de puente entre el negocio y TIC. Dependiendo del
tamao y el enfoque de la empresa, su trabajo es tambin
construir un equipo interno de desarrollo de software mvil
o coordinar la cooperacin con una agencia de desarrollo
1 www.developereconomics.com/report/next-gold-rush-enterprise-apps
Aplicaciones Empresariales
152
Aplicaciones Empresariales
153
En cuanto a la adopcin comercial, el desarrollo de aplicaciones corporativas es muy popular actualmente, pero uno
de los principales obstculos que debe enfrentar una empresa
escribiendo aplicaciones corporativas para terceros, o un
manager de proyecto deseoso de adoptar una estrategia interna
corporativa, es resolver una necesidad de negocio. La pregunta
"Todo esto suena muy bien, pero por qu lo necesitamos?" es
menos comn ahora, pero tienes que estar preparado para dar
razones de peso en base a las que una empresa debera adoptar
una estrategia mvil.
Puntos Clave en los Casos de Negocio para Aplicaciones
Mviles Empresariales
Crear un Plan de Visin para nuevas aplicaciones mviles,
y cmo ayudarn y darn forma a tu empresa.
Crear un Manifiesto de Definicin de Aplicacin (ADS,
del ingls Application Definition Statement) para cada
aplicacin, especificando propsito y audiencia objetivo.
Crear un Presupuesto para dispositivos.
Crear un plan para una Infraestructura de Aplicaciones,
Gestin de Dispositivos y Seguridad.
Crear un plan para el equipo de desarrollo utilizando una
plataforma de desarrollo fiable a futuro, por ejemplo MADP.
154
Aplicaciones Empresariales
155
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
Proteccin de contraseas
Encriptacin de datos en el dispositivo
Encriptacin de datos OTA
Bloqueo remoto de dispositivos
Limpieza de datos remota
Reprovisionamiento de dispositivos
Copia de seguridad de datos en los dispositivos
Aplicaciones Empresariales
157
Airwatch2
App473
Apperian4
Good5
Microsoft6
MobileIron7
Mocana8
SAP Afaria9
Plataformas de Desarrollo de
Aplicaciones Mviles (MADP)
Por lo general, un elemento clave de las aplicaciones empresariales es la sincronizacin de datos. Los dispositivos mviles
tienen que recibir informacin actualizada o relevante de los
servidores corporativos y los datos actualizados o recogidos
tienen que ser enviado de vuelta. El enfoque de acceso a los
datos est determinado por las responsabilidades del usuario,
as como por la poltica de confidencialidad. En cualquier caso,
la sincronizacin tiene que ser segura, ya que los datos de
2 air-watch.com
3 app47.com
4 apperian.com
5 good.com
6 microsoft.com/en-us/windows/windowsintune/explore.aspx
7 mobileiron.com
8 mocana.com
9 www.sap.com/pc/tech/mobile/software/solutions/device-management/
overview.html
Aplicaciones Empresariales
158
Pega Amp10
IBM MobileFirst Platform11
Kony KonyOne12
SAP Mobile Platform13
Spring Mobile Solutions14
10
www.pega.com
11
www.ibm.com/mobilefirst/us/en/why-ibm-for-mobile/platform.html
12
www.kony.com/products
13
www.sap.com/smp
14
www.springmobilesolutions.com
Aplicaciones Empresariales
159
Aplicaciones Empresariales
160
Aplicaciones Empresariales
161
1 www.applift.com/blog/mobile-games-market-update.html
2 venturebeat.com/2014/11/04/candy-crush-leads-in-u-s-and-u-k-but-clash-
of-clans-reigns-in-mobile-crazy-south-korea
Videojuegos para Mviles
163
3 venturebeat.com/2014/04/25/apple-vs-google-a-world-view-on-the-mobile-
gaming-war
Videojuegos para Mviles
164
165
166
comes-from-0-15-percent-of-players
Videojuegos para Mviles
167
168
169
170
flow-pleasure-and-creativity
Videojuegos para Mviles
171
172
173
44-year-olds
Videojuegos para Mviles
174
175
176
177
Ser Descubierto
Si has seguido estas pautas, entonces habrs puesto tu diseo
de juego en las mejores condiciones para que se adapte a tu
audiencia y, con suerte, te dar una oportunidad de competir
en el mercado. Sin embargo, esto por s solo no es suficiente.
Tenemos que usar todas las vas de comunicacin que podamos
y por lo general estas requieren inversin. Todava es posible
tener xito sin tener que gastar dinero en publicidad, pero
pero implica tener el boleto ganador en una lotera mundial.
Videojuegos para Mviles
178
179
10
unityads.unity3d.com
Desarrollo Mvil y el
Internet de las Cosas
Hace aos, dos gigantes -la industria mvil y la Internet
industrial (tambin conocida como m2m, telemetra integradas
e industriales)- vivan vidas separadas. Cada una facturando
un billn de dlares hasta la fecha y, sin embargo, con muy
poco conocimiento compartido en temas relacionados con
cmo proporcionar, en ltima instancia, servicios end-to-end
en un mbito que los involucraba a ambos. Algunos dicen que
es debido a que las compaas de mviles no tienen tradicin
en trabajar con tecnologa de terceros, siendo sus formatos
o protocolos a medida de aplicaciones industriales. Otros
dicen que es ms bien porque los desarrolladores de hardware
que crean servicios para el Internet de las Cosas (IoT, de sus
siglas en ingls) no conocen o no prestan inters en aprender
programacin Java para Android o el lenguaje Objective-C,
utilizado para crear aplicaciones nativas para iOS.
Por suerte las tornas estn cambiando, y muchos sistemas
de hardware tradicionalmente cerrados estn abriendo APIs y
cdigo, publicndolo incluso GitHub1. Migrar hacia estndares
ms abiertos y exponer interfaces personalizadas a las
tecnologas basadas en IP resulta prometedor. La necesidad de
comunicar los telfonos con objetos conectados es cada vez
ms comn, y muchos dispositivos de hardware se encuentran
cada vez ms desfasados, o incluso intiles, si no incluyen
una aplicacin. La funcionalidad de un sistema tambin se
incrementa con el tiempo tras la adquisicin de un producto de
hardware mediante la actualizacin de firmware, las aplica1 github.com/
182
183
184
185
Comunicaciones y Protocolos
Uno de los asuntos pendientes en el desarrollo del IoT es la
aparicin de exticos protocolos de comunicacin para un
programador mvil, con nombres como XMPP3, MQTT4 y COAP5.
Las aplicaciones de telfonos inteligentes pueden necesitar
comunicarse utilizando algunos de estos protocolos para
interactuar con los dispositivos IoT. Por suerte, ya hay algunas
implementaciones disponibles, como el proyecto Eclipse Paho
que incluye un cliente Android6.
Un enfoque centrado en la web puede utilizar tecnologas
HTML5, como websockets de interoperabilidad y, como muchos
desarrolladores se han dado cuenta, muchas veces los websockets simplemente no son los ideales para comunicaciones
de baja sobrecarca ya que la mayora de los formatos de
mensajera son incompatibles. Para poder hacer TCP de bajo
nivel, conexiones UDP, etc., es necesario introducir otras
tecnologas como los Chromium sockets (por ejemplo Berkeley
sockets empaquetados para javascripters). Si no te quieres
liar, la arquitectura plug-in de herramientas como Cordova7
ser til. Soportar plugins mviles para TLS (Transport Layer
Security) tambin es un paso adelante hacia un buen nivel de
seguridad end-to-end, desde el sensor hasta los controles de
3 xmpp.org/
4 mqtt.org/
5 tools.ietf.org/html/rfc7252
6 eclipse.org/paho/clients/android/
7 cordova.apache.org
186
seguridad del dispositivo IoT, salvndonos de muchas de las incertidumbres que enfrentan los servicios web y APIs expuestos
al pblico Internet.
Como resultado, una segunda ola de aplicaciones est
llegando, en la que las aplicaciones IoT se comunican directamente va radio de corto alcance utilizando protocolos de bajo
nivel basados en IP para los datos del sensor, y mensajes de
telemetra con mnima sobrecarga.
Lecturas Adicionales
Understanding The Protocols Behind The Internet Of
Things que compara los protocolos utilizados en el IoT:
electronicdesign.com/embedded/understanding-protocolsbehind-internet-things
A Cisco view on IoT Application Protocols: blogs.cisco.
com/ioe/beyond-mqtt-a-cisco-view-on-iot-protocols
Scaling the Internet of Things es un vdeo de Yodit
Stanton grabado en la conferencia All Your Base 2014:
vimeo.com/album/3108317/video/109904567
Eclipse IoT protocols: iot.eclipse.org/protocols.html
Mobile and Web Messaging, trata MQTT e IoT:
media.jmesnil.net/slides/2014-11-13_oreilly_webcast.pdf
IoT Demonstration using WebSockets: developer.mbed.
org/cookbook/Internet-of-Things-Demonstration
187
188
Programando Smartwatches
Despus del trabajo pionero de Metawatch, Pebble y muchas
ms empresas, Google lanz Android Wear en 2014, varios
fabricantes sacaron smartwatches compatibles. Samsung lanz
una gama de relojes Tizen y Microsoft su Microsoft Band para
fitness, y Apple tambin sac Apple Watch. 2015 podra muy
bien ser el ao del smartwatch.
Los Ecosistemas
Pebble, Android Wear, Apple Watch y Samsung Tizen podran
considerarse las mayores plataformas. Tambin hay relojes independientes Android y toda una gama de trackers de empresas
como Nike, quijada, Fitbit, Misfit, Razer y Microsoft. La mayora
de estos dispositivos tienen un historial psimo respecto a la
vida de la batera, por lo que empresas como Martian, Withings
o Cogito aplican mejoras inteligentes a relojes tradicionales. En
lugar de tener tiempos de vida de das, estos relojes aguantan
seis meses o ms con una sola batera.
Un hecho interesante es que las grandes plataformas smartwatch aumentan el bloqueo al acceso a ese ecosistema. Los
smartwatches de Android requieren un dispositivo Android con
certificacin de Google que tenga Google Mobile Services, por
lo que los dispositivos Android Open Source (AOSP) no sirven.
Samsung Tizen permite a los relojes funcionar mejor con los
mviles de Samsung, y Apple Watch, como era de esperar,
requiere un dispositivo iOS para funcionar correctamente.
Programando Smartwatches
191
Programando Smartwatches
192
Android Wear
Android Wear se enfoca principalmente como su nombre
indica a los wearables, pero durante la escritura de ste
captulo el nico dispositivo compatible con l son slo
smartwatches. En 2014 proveedores como LG, Motorola, Asus,
Sony e incluso Samsung lanzaros relojes basados en Android.
Tu punto de partida para desarrollar es
developer.android.com/wear. Siempre necesitars una aplicacin
para Android que contenga la aplicacin, pudiendo elegir
diferentes niveles de integracin para soportar smartwatches:
Sin integracin: slo las notificaciones se mostraran en un
smartwatch conectado. Ten presente que esto podra provocar que el usuario se viera inundado de notificaciones.
1 developer.getpebble.com/guides/best-practices/design
2 nngroup.com/articles/smartwatch
3 kohl.ca/2014/lessons-learned-when-designing-products-for-smartwatches-
wearables
Programando Smartwatches
193
Apple Watch
La primera gama de relojes de Apple ser lanzada a principios
de 2015. Los Apple Watch vienen en dos tamaos y una gama
de colores para satisfacer diferentes gustos (y presupuestos).
Puedes comenzar visitando developer.apple.com/watchkit. Si
bien no se puede crear aplicaciones independientes puras con
la versin inicial de la WatchKit, tienes estas opciones:
4 plus.google.com/communities/113381227473021565406
Programando Smartwatches
194
Samsung Tizen
La gama inicial de Samsung de smartwatches operaba con
versiones propietarias de Android. En 2014, Samsung comenz
a lanzar relojes "Gear" basados en Tizen e incluso reescribi el
firmware de sus relojes existentes para utilizar Tizen. Actualmente el curvado Samsung Gear S es probablemente uno de los
ms emblemticos smartwatches comercializados.
Tus puntos de partida para el desarrollo SmartWatch Tizen
son developer.samsung.com/samsung-gear y developer.tizen.org.
Puedes empezar a dar soporte a smartwatches Tizen enviando
notificaciones interactivas5. La forma ms fcil de desarrollar
aplicaciones smartwatch independientes para Tizen es incrustar
una aplicacin Tizen HTML5 dentro de tu aplicacin Android.
Para la comunicacin entre tu aplicacin en el telfono y tu
aplicacin Tizen tienes que utilizar el SAP SP (Samsung Accessory Protocol Service Profile, un nombre que slo una madre
puede amar, por cierto) - bsicamente un protocolo byte-array
basado en que requiere su propia serializacin. Para el desarrollo general en Tizen, consulta el captulo al respecto.
5 developer.samsung.com/galaxy#rich-notification
Programando Smartwatches
195
Pebble
Pebble es, junto con Metawatch, uno de los pioneros del movimiento smartwatch. En el momento de redactar este captulo,
existen dos ediciones distintas del reloj Pebble: el original y
el de acero. Respecto a hardware, ambos cuentan con una notctil-pero-muy-eficiente pantalla e-Paper con una resolucin
de 144x168 pixels, y 24 kb de RAM para aplicaciones.
Tu punto de partida para el desarrollo en Pebble es
developer.getpebble.com. Las aplicaciones estn escritas en
C. Puedes usar el IDE basado en navegador cloudpebble6 en
cualquier sistema operativo, o el SDK de Pebble para sistemas
Mac y Linux, y tambin puedes utilizar Javascript para el
desarrollo de aplicaciones que se ejecutan en el telfono. Una
versin inicial pero no oficial de emulador est disponible en
GitHub7. Con aplicaciones en segundo plano, el acceso a los
sensores y opciones de comunicacin con AppMessage/AppSync
puedes crear grandes aplicaciones de Pebble. Puedes seguir a
Pebble en Twitter en @PebbleDev.
6 cloudpebble.net
7 github.com/PebbleDev/qemu_pebble
Programando Smartwatches
196
Activity Trackers
Hay muchos trackers de actividad que ofrecen oportunidades
para desarrolladores. A menudo, la nica opcin es tener
acceso a los datos en la nube para poder crear tus propias
estadsticas, pero algunos dispositivos tambin son compatibles con aplicaciones independientes. Estos son los trackers
ms populares, junto con las pginas correspondientes para
desarrolladores:
Fitbit, dev.fitbit.com
Garmin, developer.garmin.com/connect-iq
Jawbone, jawbone.com/up/developer
Misfit, build.misfit.com
Microsoft Band, microsoft.com/microsoft-band (SDK
anunciado)
Nike, dev.nike.com
Polar, developer.polar.com
Razer Nabu, developer.razerzone.com/nabu#
Programando Smartwatches
197
Analticas Mviles
Las analticas mviles no son, probablemente, la primera cosa
que tenemos en cuenta cuando desarrollamos aplicaciones.
Sin embargo, es una gran manera de entender qu ocurre con
tu aplicacin en el mundo real, cuando los usuarios estn
utilizndola. Las tiendas de aplicaciones proporcionan algunos
datos clave e incluso informacin sobre los bloqueos de
nuestra aplicacin, pero podemos aprender mucho diseando
e implementando analticas mviles, y cubriremos los aspectos
esenciales de este captulo.
Los datos de las analticas mviles pueden ayudar en
muchos aspectos de nuestro trabajo, incluyendo negocio y
operaciones, y tambin podemos aprender formas de mejorar
el desarrollo y testeo del software. Entre toda esa emocin de
desarrollar, necesitamos recordar proteger la privacidad del
usuario y respetar sus preferencias y expectativas. Los efectos
de las analticas pueden molestar a los usuarios al consumir
recursos valiosos o abusar de la informacin confidencial del
usuario y su uso de la aplicacin.
Para qu molestarse?
Las analticas mviles pueden aadir valor a tu organizacin y
tu aplicacin, e incluso a los usuarios de la misma, si se utiliza
la informacin inteligentemente para mejorar lo que haces. Los
datos capturados se pueden utilizar para orientar tu trabajo y
reducir las ineficiencias. Estars bien acompaado: Ms de la
Analticas Mviles
199
Mobile DevOps
Mobile DevOps permite a los desarrolladores acercarse a los
aspectos operativos de su software. Las tiendas de aplicaciones
tienden a complicar las DevOps ya que el proceso de publicacin est ms all del control directo de los desarrolladores,
y algunos aspectos de la recogida de datos son gestionados y
retenidos por el proveedor de la tienda. La analytics mviles
pueden ayudar a recopilar informacin equivalente y ms datos
especficos de la aplicacin sobre cmo se est utilizando la
aplicacin. Estos datos pueden ayudar a mejorar los aspectos
DevOp de la aplicacin, proporcionando informacin oportuna
y relevante para ayudar a mejorar el funcionamiento de la
aplicacin. Tambin puedes utilizar los datos para ayudarte a
mejorar futuras versiones.
1 blog.velti.com/mobclix-index-the-when-where-what-of-apps,
static.usenix.
org/event/sec11/tech/slides/enck.pdf
Analticas Mviles
200
Ponindote En Marcha
Como mnimo, 20 empresas ofrecen un festn de soluciones
para analticas mviles con mltiples sabores, desde el trazado
de campaas hasta la mejora de calidad del software. Muchas
adems incluyen funcionalidades extra, por ejemplo informe
de cadas o el trazado de usuarios y beneficios. Casi la mitad
ofrecen implementaciones de cdigo abierto para sus libreras,
quizs para alejar el temor respecto al comportamiento de las
mismas.2
Muchos de los proveedores de soluciones de analticas para
mviles incluyen un apartado 'Getting Started' donde se aprende cmo comenzar a utilizar sus productos. Algunos ejemplos
son Flurry3 y KISSmetrics4 . En general, es necesario registrarse
antes de que puedas utilizar cualquiera de los productos de
manera til, ya que necesitan ser configurados con una nica
'clave' para tu aplicacin.
Examina muchas de las soluciones potenciales antes de
decidirte por una. Lee la documentacin y cdigo de ejemplo
para ver cmo de fcil es implementarla en tu aplicacin, y
revisa las licencias de usa, incluidos los trminos deprivacidad.
Elige entonces al menos una para experimentar con ella
implementando analticas mviles en tu aplicacin. Integrando
su cdigo aprenders mucho ms acerca de los que puedes
conseguir, y tambin acerca de las analticas mviles en la
prctica.
Por ltimo, lee sobre qu utilizan otras aplicaciones y por
qu tomaron esa opcin, por ejemplo VentureBeat ha descubi2 readwrite.com/2013/12/05/why-mobile-developers-need-open-source-
analytics-embedded-in-their-applications
3 support.flurry.com
4 support.kissmetrics.com/getting-started/overview
Analticas Mviles
201
5 venturebeat.com/2014/12/02/230-developers-and-1-8m-apps-reveal-the-
best-mobile-app-analytics-solutions
6 segment.io/
7 count.ly/
Analticas Mviles
202
Decidir Qu Medir
Qu te gustara a medir, comprender, acerca de cmo se est
utilizando la aplicacin? Algunas sugerencias:
Eventos clave de uso: Por ejemplo, de cundo se usa
la opcin de bsqueda o se abre una red social desde tu
aplicacin.
Eventos centrados en el negocio: Cualquier interaccin
generada por el usuario que suponga un beneficio para
t. Con qu frecuencia tus usuarios compran la versin
premium de tu aplicacin y otros tems ofrecidos en su
interior? Cundo cancelan pedidos o descartan un carrito
de compra antes de realizar el pago?
Eventos centrados en la aplicacin: Rendimiento, usabilidad, fiabilidad, y otros datos en torno al comportamiento
de la aplicacin.
Una vez definidas las principales reas de inters tendrs
que disear las mtricas de anlisis, por ejemplo, cules
elementos de los datos deberan ser reportados.
Analticas Mviles
203
msdn.microsoft.com/en-us/library/live/hh243648
11
support.localytics.com/Integration_Overview
Analticas Mviles
204
Adaptando tu Cdigo
Puede que tengas que declarar capacidades adicionales necesarias para que los anlisis mviles funcionen correctamente
cuando se integran con tu aplicacin.
Para Android, a stos se les conoce como permisos.
Probablemente las analticas necesitarn permisos de Internet
de modo que los eventos puedan ser enviados online, y
permisos centrados en la localizacin en el caso de que la
solucin registre la ubicacin del telfono. Si tu aplicacin ya
est utilizando esos permisos, no es necesario especificar su
uso de nuevo.
Para iOS, UIRequiredDeviceCapabilities indica a
iTunes y a la App Store qu caractersticas de dispositivo requiere la aplicacin. Se implementa como un diccionario donde los
elementos se especifican utilizando claves, que incluyen WiFi,
servicios de localizacin y GPS.
En Windows Phone 7 y 8, se utilizan capacidades para
decidir lo que la aplicacin utiliza. Localytics tiene online una
gua de arranque rpido12 que incluye un ejemplo de
configuracin de la capacidad ID_CAP_IDENTITY_DEVICE.
Windows Phone 8.1 recomienda en cambio utilizar App Specific
Hardware ID (ASHWID)13.
www.localytics.com/docs/windows-phone-7-integration/
13
msdn.microsoft.com/en-us/library/windows/apps/jj553431.aspx
Analticas Mviles
205
Qu puede ir mal?
El camino al infierno est empedrado de buenas intenciones.
Hay muchas cosas que pueden salir mal en la implementacin
de alas analticas. Algunas de los ms comunes incluyen:
Resultados sin calibrar: confiar ciegamente los datos
pueden conducir a una vorgine de problemas. Los
resultados puede ser inexacto y engaoso, causando
problemas derivados al ser utilizados para gestionar tu
negocio y trabajo. Una buena prctica es poner a prueba
la aplicacin de anlisis desde el principio, empezando
sin usuarios, y probando despus uno individual antes de
14
en.wikipedia.org/wiki/Triangulation_(social_science)
Analticas Mviles
206
Analticas Mviles
207
Privacidad
Tus aplicaciones se utilizan de manera remota por gente que
no conoces. Las aplicaciones pueden convertirse en vigilantes
de los usuarios y de su comportamiento con ellas.
Recuerda que debes explicar a los usuarios finales que la
aplicacin est diseada para registrar y compartir informacin
acerca de cmo la aplicacin se est utilizando, a ser posible
en los trminos y condiciones que desees. Puede que
necesites, o te interese, que los usuarios tengan
capacidad de decidir si permiten un seguimiento
a su uso de la aplicacin. Si es as, faciltale
al usuario el control sobre los ajustes;
adems, considera la posibilidad de proveer
al usuario de una forma de acceder a los
datos registrados, borrarlos, o ponerse en
contacto con el proveedor de soluciones
de analticas.
Analticas Mviles
208
15
www.google.com/analytics/terms/us.html
16
support.kissmetrics.com/apis/objective-c
17
mixpanel.com/docs/people-analytics/android
18
jnorthrop.me/2012/07/2/privacy-considerations-mixpanel-people-analytics/
19
disponible en shop.oreilly.com/product/0636920021872.do
Analticas Mviles
209
Aprende Ms
Esperamos que este captulo haya despertado tu curiosidad por
saber ms acerca de las analticas mviles. A continuacin,
algunos lugares para comenzar tu investigacin:
Capturing Mobile Experience in the Wild: A Tale of
Two Apps20, un estudio de la Universidad de Wisconsin
destacando la importancia de las analticas centradas en
las aplicaciones, basado en datos de 1milln de usuarios
recogidos durante 3 aos.
The Beginner's Guide To App Analytics21, disponible en
descarga gratuita.
The Mobile Developer's Guide to the Parallel Universe22,
libro hermano sta gua, centrado en las analticas mviles
desde la perspectiva del marketing.
TNW ofrece un buen artculo introductorio23 desde la
perspectiva de un desarrollador.
Upsight24 ofrece un gran abanico de documentos,
webinars y otros recursos sobre las analticas mviles.
20
static.googleusercontent.com/media/research.google.com/en//pubs/
archive/41590.pdf
21
info.localytics.com/download-beginners-guide-to-app-analytics
22
wip.org/resources/#mobile-developers-guide-parallel-universe
23
thenextweb.com/dd/2013/08/11/9-tools-to-help-you-measure-mobileanalytics
24
upsight.com/resources
Analticas Mviles
210
Application
Security
Seguridad de la Aplicacin
Los lectores de esta gua saben cmo de extendidos estn
los smartphones y cmo de tiles pueden ser las aplicaciones
mviles. Los dispositivos mviles, adems, son tambin mucho
ms personales que lo que jams lo han sido los ordenadores.
La gente se despierta con sus telfonos, permanecen cerca de
ellos todo el da, y duermen a su lado por las noches. Con el
tiempo se convierten en nuestros colaboradores de confianza.
Muchas de estas aplicaciones se aprovechan de tal cercana
y confianza. Por ejemplo, tu telfono puede ser tratado como
un eslabn en el proceso de autenticacin para acceder a tu
cuenta bancaria, o tu tableta puede tener acceso directo a
las pelculas online que has comprado. Tu dispositivo podra
incluso contener una cartera con dinero real para realizar pagos
con NFC o monedas virtuales como Bitcoins.
Las aplicaciones mviles estn atrayendo la atencin de
hackers y ladrones cuyos intereses se extienden mucho ms all
de conseguir gratis una aplicacin de 99 cntimos. En Q3 2014
Kaspersky Lab detect 74,489 programas mviles maliciosos1.
Los datos histricos de la red y las defensas de punto final
(como antivirus) no son suficientes. Incorporar medidas de
seguridad en una aplicacin mvil es un tema crtico.
La arquitectura de las aplicaciones mviles sigue evolucionando. Algunas aplicaciones son slo nativas, y requieren de
bases de cdigo muy diferentes para cada sistema operativo
mvil. Otras son webviews, poco ms que la URL de un sitio
web envuelta en un icono. Algunas son hbridas, una combinacin de funcionalidad de aplicacin nativa con webviews. La
mayora de aplicaciones mviles necesitan conectarse con los
1 securelist.com/analysis/quarterly-malware-reports/67637/it-threat-
evolution-q3-2014
Seguridad de la Aplicacin
212
213
Posibles Amenazas
En algunas plataformas (iOS y Android en particular), desactivar la verificacin de firmas es una prctica bastante comn.
Necesitas considerar si es relevante o no el que alguien pueda
modificar tu cdigo y ejecutarlo en un dispositivo jailbreakeado o ruteado. Un punto obviamente clave sera la eliminacin
de una verificacin de licencia, lo que podra dar lugar a que
tu aplicacin sea robada y usada de forma gratuita. Menos
evidente, pero ms grave, es la amenaza de insercin de cdigo
malintencionado (malware) que puede robar informacin de los
usuarios, o inyectar contenido ilcito, y destruir la reputacin
de tu marca.
La ingeniera inversa sobre tu aplicacin puede dar a
hackers el acceso a una gran cantidad de datos sensibles, tales
como las claves de cifrado para pelculas protegidas con DRM,
el protocolo secreto para hablar con tu servidor de juegos
online, o la manera de acceder al crdito almacenados en el
telfono para tu sistema de pago mvil. Slo se requiere un
hacker y un telfono jailbreakeado para explotar cualquiera de
estas amenazas.
Si tu aplicacin maneja dinero real o contenido valioso es
necesario tomar todas las medidas posibles para protegerla de
ataques Man-At-The-End (o MATE, en el que el atacante tiene
acceso fsico al dispositivo). Y, si ests implementando un
estndar DRM, tendrs que seguir las reglas de robustez que
hacen obligatorias las medidas de auto-proteccin.
Seguridad de la Aplicacin
214
Protegiendo tu Aplicacin
Escondiendo el Plano de tu Cdigo
Algunas plataformas mviles se programan utilizando cdigo
administrado (Java o NET.), integrado por los cdigos de
bytes ejecutados por una mquina virtual, en lugar de hacerlo
directamente en la CPU. Los formatos binarios para estas
plataformas incluyen metadatos que establecen la jerarqua de
clases y dan el nombre y tipo de cada clase, variable, mtodo
y parmetro. Los metadatos ayudan a la mquina virtual a
implementar algunas de las caractersticas del lenguaje (por
ejemplo, la reflexin). Sin embargo, los metadatos tambin son
muy tiles para un hacker que est tratando de realizar ingeniera inversa del cdigo. Hay programas de descompilacin,
de libre acceso, que regeneran el cdigo fuente a partir de los
cdigos de bytes, y hacen ingeniera inversa fcilmente.
La plataforma Android tiene la opcin de usar la Interfaz
Nativa Java (JNI, del ingls Java Native Interface) para acceder a funciones escritas en C y compilar en cdigo nativo. Es
mucho ms difcil que el cdigo nativo sea objeto de ingeniera
inversa en comparacin con Java, por lo que se recomienda
para cualquier parte de la aplicacin donde la seguridad es de
suma importancia.
"gcc" es el compilador utilizado normalmente para generar
cdigo nativo para Android, mientras que su gemelo "clang" se
utiliza para iOS. La configuracin predeterminada para estos
compiladores prepara cada funcin para ser exportada desde un
objeto compartido, y la agrega a la tabla de smbolos dinmicos en el binario. La tabla dinmica de smbolos es diferente
a la tabla de smbolos utilizada para la depuracin y es mucho
ms difcil de desmantelar despus de la compilacin. El
volcado de los smbolos dinmicos puede dar a un hacker un
ndice muy til de cada funcin en el cdigo nativo. El uso
Seguridad de la Aplicacin
215
Seguridad de la Aplicacin
216
217
Seguridad de la Aplicacin
218
Mejores Prcticas
No Almacenes Secretos o Informacin Privada
Minimiza la cantidad de informacin sensible almacenada en el
dispositivo. No almacenes las credenciales o claves de cifrado,
a menos que se utilice un almacenamiento seguro protegido
por una contrasea compleja. En su lugar, guarda los tokens
de autenticacin que tienen tiempo de vida y funcionalidad
limitados.
Los archivos de registro son tiles para diagnosticar errores
en el sistema y hacer un seguimiento del uso de las aplicaciones, pero vigila no violar la privacidad de los usuarios mediante
el almacenamiento de informacin de ubicacin, o registrar
informacin personalmente identificable de los mismos.
Algunos pases tienen leyes que restringen la informacin
de seguimiento que se puede recopilar, as que asegrate de
comprobar las leyes al respecto de los pases en los que ser
utilizada tu aplicacin.
No imprimas seguimientos de pila ni diagnsticos de
sistema que un havker pueda aprovechar para penetrar a mayor
profundidad.
No Confes en el Dispositivo
Cuando diseas una aplicacin, supn que el dispositivo ser
propiedad de un atacante tratando de abusar de la aplicacin.
Realiza el mismo ciclo de desarrollo de software seguro en
la creacin de aplicaciones mviles que emplearas con los
servicios de backend. No confes ni siquiera en las bases de
datos que creas para tus aplicaciones mviles, un hacker puede
cambiar su esquema. No confes en el sistema operativo para
obtener proteccin, la mayora de esas protecciones pueden
ser anuladas de manera trivial por un jailbreak al dispositivo.
Seguridad de la Aplicacin
219
Herramientas
Proteccin
El renombrado de cdigo bsico de Java puede ser realizado
mediante Proguard3, una herramienta de cdigo abierto, y
GuardIT de Arxan4 .
Dos comercializadores de herramientas de proteccin de
cdigo gestionado (Java y .NET) son Arxan Technologies5 y
PreEmptive Solutions6.
3 www.proguard.sourceforge.net
4 arxan.com
5 arxan.com
6 preemptive.com
Seguridad de la Aplicacin
220
7 www.irdeto.com
8 sourceforge.net/projects/paros
9 sourceforge.net/projects/wireshark
10
www.hex-rays.com
Seguridad de la Aplicacin
221
Aprende Ms
A continuacin, algunos recursos y referencias tiles que
pueden ayudarte:
Apple ofrece una gua general de seguridad de software11.
Tambin incluye mltiples enlaces a temas ms detallados
de su plataforma.
Hay cursos comerciales de entrenamiento disponibles para
iOS y Android, y el Lancelot Institute12 ofrece cursos de
programacin segura que cubren iOS y Android.
O'Reilly ha publicado el libro de Jeff Six sobre seguridad en
Android, Application Security For The Android Platform13
y otro para iOS, Jonathan Zdziarski: Hacking and Securing
iOS Applications14 .
Charlie Miller et al. publicaron el iOS Hackers Handbook15,
que demuestra cmo de fcil es robar cdigo y datos de
dispositivos iOS.
Investigadores acadmicos han demostrado cunta
informacin puede ser obtenida de aplicaciones pblicas
Android en USENIX 201116.
Qualsys Labs17 ofrece una herramienta de testeo SSL.
11
developer.apple.com/library/mac/navigation/#section=Topics&topic=Security
12
www.lancelotinstitute.com
13
shop.oreilly.com/product/0636920022596.do
14
shop.oreilly.com/product/0636920023234.do
15
www.wiley.com/WileyCDA/WileyTitle/productCd-1118204123.html
16
static.usenix.org/event/sec11/tech/slides/enck.pdf
17
www.ssllabs.com/ssltest/
Seguridad de la Aplicacin
222
Conclusiones
Cada vez hay mayor confianza en las aplicaciones mviles, pero
estn expuestas a mucha gente que quisiera aprovecharse de
tal confianza. El nivel adecuado de seguridad de una aplicacin
es algo que debe considerarse para cada caso en particular. Al
final, tu aplicacin va a estar ah fuera, sola ante el peligro,
y tendr que defenderse de los piratas informticos y otras
amenazas maliciosas, donde quiera que vaya.
Invierte tiempo en aprender acerca de las caractersticas y
capacidades de seguridad de las plataformas mviles que tienes
como objetivo. Usa tcnicas como el modelado de amenazas
para identificar los peligros potenciales relacionados con su
aplicacin. Realiza revisiones del cdigo y elimina mtodos no
esenciales de registro y depuracin. Considera cmo un hacker
podra analizar tu cdigo y, a continuacin, utiliza tcnicas
similares contra la aplicacin en un ambiente seguro para
descubrir vulnerabilidades y mitigarlas antes de publicar tu
aplicacin.
18
www.owasp.org
19
www.owasp.org/index.php/OWASP_Mobile_Security_Project
20
developer.att.com/application-resource-optimizer
Seguridad de la Aplicacin
223
Accesibilidad
En diciembre de 2014, la Organizacin Mundial de la Salud
(OMS) declar en su pgina web que ms del 15% de la
poblacin mundial tiene algn tipo de discapacidad1 y las tasas
de discapacidad estn aumentando debido al envejecimiento
de la poblacin y el aumento de las condiciones de salud
crnicas, entre otras causas. Esto significa que alrededor de mil
millones de usuarios potenciales podran tener dificultades para
la utilizacin de tu aplicacin en caso de que no sea accesible.
Ha habido un gran aumento en el uso de telfonos inteligentes y tablets en la poblacin general, y eso incluye a las
personas con discapacidad. Esto se debe a que ahora pueden
comprar un producto estandarizado que tiene servicios de
accesibilidad en el sistema operativo, cuando tradicionalmente
habran tenido que comprar costosos complementos. La
encuesta WebAIM Screen Reader2 muestra que ha habido un
aumento sorprendente en el uso de telfonos inteligentes por
personas ciegas que usan lectores de pantalla. Las personas
mayores pueden no haber utilizado un ordenador en el trabajo
pero, sin embargo, estn descubriendo que pueden llegar a
acomodarse a dispositivos de pantalla tctil ms rpidamente
que a un teclado y un ratn tradicionales. A medida que
nuestra poblacin envejece, tambin lo hacen los niveles de
discapacidad y esto significa que ms y ms personas tendrn
dificultades para acceder a los servicios de la manera tradicional. Proporcionar una solucin digital accesible alternativa
garantizar que las personas con discapacidad puedan seguir
siendo independientes. Tambin puedes descubrir un nuevo
1 www.who.int/mediacentre/factsheets/fs352/en
2 webaim.org/projects/screenreadersurvey5/
Accesibilidad
225
226
227
Qu Funciones de Accesibilidad?
Como muchos de tus usuarios potenciales pueden tener una
discapacidad, esto puede hacer que sea ms difcil para ellos
usar un telfono mvil y sus aplicaciones. Las discapacidades
podran incluir varios niveles de la vista o audicin, discapacidades mentales o dificultades de aprendizaje, discapacidades
fsicas, problemas de destreza, y as sucesivamente.
Muchos de estos usuarios confan en el software de terceros
fabricantes para ayudarles a utilizar su dispositivo. A este
software se le suele conocer como tecnologa de asistencia, e
incluye diversas utilidades en funcin del tipo de discapacidad.
Tradicionalmente este tipo de software o los servicios pblicos
han tenido que ser 'aadidos' a un dispositivo principal, a
menudo a un alto precio, con el fin de hacerlos accesibles o
ms fciles de usar para una persona con una discapacidad.
Algunos telfonos inteligentes y tablets proporcionan
ahora suficientes capacidades para que algunos usuarios con
discapacidad puedan utilizar los dispositivos sin necesidad de
pagar por tecnologa de asistencia adicional. Lo que se ofrece
depende de la plataforma y la versin del sistema operativo.
Sin embargo estas funcionalidades pueden necesitar de una
aplicacin para poder ser ejecutadas.
Usuarios con visin parcial - Alguien que es parcialmente
ciego se beneficia de ser capaz de cambiar el tamao
de fuente, estilo de fuente y el uso de la negrita y el
contraste de color. iOS, Android, Blackberry y Windows
Phone ofrecen varias opciones para cambiar estos trminos
en su configuracin. Adems del universal 'pellizca para
ampliar' , iOS, Android, Blackberry y Windows Phone
ofrecen una funcin de ampliacin o zoom, que ampla una
seccin de la pantalla y mantiene este nivel de aumento
Accesibilidad
228
229
htm?csnumber=39080
4 www.rnib-business.org.uk
231
Accesibilidad
232
Accesibilidad
233
234
235
and youtube.com/watch?v=ld7kZRpMGb8
7 developer.apple.com/wwdc/videos
8 developer.android.com/about/versions/lollipop.html
Accesibilidad
236
9 developer.android.com/tools/support-library/index.html
10
developer.android.com/guide/topics/ui/accessibility/apps.html
11
developer.android.com/training/accessibility/index.html
12
developer.android.com/tools/testing/testing_accessibility.html
13
code.google.com/p/eyes-free
Accesibilidad
237
mobileapps.blackberry.com/devicesoftware/entry.do?code=bsr
15
us.blackberry.com/legal/accessibility.html
Accesibilidad
238
Accesibilidad en iOS
Apple fue la primera empresa de integrar funciones de accesibilidad directamente en el sistema operativo. Debido a esto
el apoyo a la accesibilidad en iOS es un poco mejor que en
Android, aunque Android se est igualando rpidamente.
Algunas de las caractersticas de accesibilidad en iOS 8
incluyen, entre otras:
16
developer.blackberry.com/native/documentation/cascades/best_practices/
accessibility/accessibility_features_best_practices.html
17
developer.blackberry.com/devzone/design/bb10/accessibility.html
18
developer.blackberry.com/java/documentation/intro_
accessibility_1984611_11.html
Accesibilidad
239
Accesibilidad
240
19
developer.apple.com/library/ios/#documentation/UserExperience/
Conceptual/iPhoneAccessibility
20
developer.apple.com/library/ios/technotes/TestingAccessibilityOfiOSApps/
TestAccessibilityonYourDevicewithVoiceOver/
TestAccessibilityonYourDevicewithVoiceOver.html
Accesibilidad
241
Accesibilidad
242
msdn.microsoft.com/en-us/library/windows/apps/xaml/dn263101.aspx
22
msdn.microsoft.com/en-us/library/windows/apps/hh700407.aspx
23
www.w3.org/TR/wai-aria/markup
24
msdn.microsoft.com/en-us/library/windows/apps/xaml/hh994937.aspx
25
msdn.microsoft.com/en-us/library/windows/apps/xaml/jj161016.aspx
Accesibilidad
243
26
www.w3.org/Mobile/mobile-web-app-state
27
w3.org/TR/mwbp-wcag/
Accesibilidad
244
28
w3.org/TR/mwabp
29
www.w3.org/TR/wai-aria
30
www.w3.org/TR/indie-ui-context
Accesibilidad
245
Testeo
Hay muchos mundos paralelos en el universo de las aplicaciones mviles y, mientras tanto, los dispositivos mviles
evolucionan muy rpidamente en comparacin a otros tipos de
bienes. El testeo de aplicaciones mviles tiene que mantenerse
en vanguardia an cuando el ritmo de cambios contina
acelerndose.
El destino de las aplicaciones mviles depende de que los
usuarios, al igual que las multitudes en los anfiteatros de la
poca romana, a menudo toman la decisin final de si una aplicacin vive para luchar otro da, o muere. Del mismo modo, las
aplicaciones comunes y corrientes son propensas a languidecer
como un mero dato estadstico ms en la tienda de aplicaciones, faltando al duro trabajo de su ideacin, produccin y
lanzamiento. Adems, el estigma de una mala calificacin tiene
una vida media larga y es difcil sobreponerse a l.
Testear podra ser visto como una inconveniencia, pero
los fallos en tu aplicacin pueden ser demasiado notorios,
y recuperar tu credibilidad es difcil cuando tu aplicacin
tiene mala puntuacin en la tienda de aplicaciones. As que
puedes esperar a que los usuarios decidan su destino, o testear
tus aplicaciones mviles para inclinar la balanza a tu favor.
Tienes la oportunidad de ayudarte a ti mismo y a tu equipo de
pruebas para testear de manera ms efectiva tu aplicacin.
Testeo
247
1 blog.testmunk.com/quizup-mastering-android-device-fragmentation-
automated-testing
2 Capturing
248
3 tambin
249
Bajo
10 3 2
Alto
10
60
50
600
Horas de
Trabajo
Defectos
detectados
Horas de
Trabajo
50
250
251
team
Testeo
252
7 kohl.ca/articles/ISLICEDUPFUN.pdf
8 moolya.com/blogs/2014/05/34/COP-FLUNG-GUN-MODEL
253
Implementando la Testeabilidad
Comienza diseando e implementando formas de probar tu
aplicacin durante su desarrollo; especialmente para pruebas
automatizadas. Por ejemplo, utilizar tcnicas como la inyeccin de dependencias en el cdigo permite sustituir servidores
reales (lentos y fragmentados) con los servidores de simulacros
(controlables y rpidos). Utiliza identificadores nicos y claros
para los elementos clave de la interfaz de usuario. Si los
mantienes sin cambios tus identificadores pruebas requerirn
menos mantenimiento.
Separa tu cdigo en mdulos comprobables. Hace varios
aos, cuando los dispositivos mviles y herramientas de
software eran muy limitadas, los desarrolladores optaron por
optimize su cdigo mvil en bloques monolticos de cdigo;
sin embargo, los dispositivos actuales y plataformas mviles
implican que esta forma de optimization es innecesaria y
posiblemente contraproducente .
Ofrece maneras para consultar el estado de la aplicacin,
posiblemente a travs de una interfaz de depuracin personalizado. Si no, tu, o sus testers, podrais pasar mucho tiempo
tratando de comprender los problemas cuando la aplicacin no
funciona como se esperaba.
Prueba de combinacin : es una tcnica para encontrar
errores mediante la combinacin de los parmetros de
manera eficiente, requiriendo muchas menos pruebas que
intentando todas las permutaciones posibles. Una tcnica
popular se llama All Pairs Testing9.
9 en.wikipedia.org/wiki/All-pairs_testing
Testeo
254
10
11
from michaeldkelly.com/blog/2005/9/20/touring-heuristic.html
Testeo
255
12
www.amazon.com/Exploratory-Software-Testing-Tricks-Techniques/
dp/0321636414
Testeo
256
Posible Base
de Datos de
dispositivo
Base de Datos
de dispositivo
instalada
Base de Datos
de dispositivo
objetivo
El dispositivo o plataforma
ms interesante
13
developer.nokia.com/Devices/Remote_device_access/
Testeo
258
Pruebas Automatizadas
Las pruebas automatizadas pueden ayudar a mantener y
mejorar tu velocidad, es decir tu capacidad de lanzar funcionalidades, proporcionando la deteccin temprana de problemas.
Para ello, tienen que estar bien diseadas e implementadas. De
lo contrario, corres el riesgo de duplicar la carga de trabajo y
mantener un embrollo de aplicacin y pruebas automatizadas
incompletas y poco fiables. Las buenas pruebas automatizadas
imitan las buenas prcticas de desarrollo de software, por
ejemplo utilizando Patrones de Diseo15, modularizacin,
revisiones de cdigo, etctera.
Testear aplicaciones mviles con eficacia puede ser algo
14
developer.samsung.com/remotetestlab/rtlDeviceList.action
15
en.wikipedia.org/wiki/Design_Patterns
Testeo
259
en.wikipedia.org/wiki/Behavior-driven_development
17
github.com/cucumber/cucumber/tree/master/examples/i18n/ja
Testeo
260
y varias implementaciones que se integran con SeleniumWebDriver para testear aplicaciones web, incluyendo web apps
en iOS y Android.
A menudo, los 'step-definitions' (pequeos scripts que
interactan con la aplicacin en pruebas) tienen que ser
escritos por alguien con conocimientos de programacin.
Automatizacin de Pruebas GUI
La automatizacin de pruebas de GUI permite a las pruebas
automatizadas interactuar con la aplicacin a travs de la
interfaz grfica de usuario (GUI). Es uno de los elixires de la
industria de pruebas, muchos han intentado, pero pocos han
tenido xito en la creacin de una automatizacin de pruebas
GUI til y viable para las aplicaciones mviles. Una de las
principales razones por las que la automatizacin de pruebas
GUI es tan difcil es que la interfaz de usuario est sujeta a
cambios significativos que puedan romper la forma en que las
pruebas automatizadas interactuan con la aplicacin.
Para que las pruebas sean eficaces a largo plazo, y como
la aplicacin tiende a cambiar, los desarrolladores necesitan
disear, implementar y soportar las etiquetas y otros elementos
utilizados por las pruebas automatizadas de interfaz. Tanto
Apple, con UI Automation18, y ms recientemente Android19
18
developer.apple.com/library/ios/documentation/DeveloperTools/
Conceptual/InstrumentsUserGuide/UsingtheAutomationInstrument/
UsingtheAutomationInstrument.html
19
developer.android.com/tools/testing/testing_ui.html
Testeo
261
gorillalogic.com/testing-tools/monkeytalk
21
github.com/calabash
22
code.google.com/p/robotium
23
testingwithfrank.com
24
en.wikipedia.org/wiki/JUnit
Testeo
262
Testeo
263
www-plan.cs.colorado.edu/diwan/3308-07/p17-armour.pdf
Testeo
264
265
Fase 3: Lanzamiento
Esto incluye pre-publicacin y publicacin.
Aquellos de vosotros que an no habis trabajado con las
principales tiendas de aplicaciones, estad preparados para una
desafiante experiencia donde la mayora de los aspectos estn
fuera de tu control, incluyendo los plazos para la aprobacin
de tu aplicacin. Adems, en algunas tiendas de aplicaciones,
no es posible revertir a una versin anterior, as que si tu
versin actual tiene defectos importantes, tienes que crear una
nueva versin que corrija los defectos y, luego, esperar hasta
que haya sido aprobada por la tienda de aplicaciones antes de
que tus usuarios puedan recibir una versin operativa de la
aplicacin.
Dadas estas limitaciones es til ampliar tus pruebas para
incluir verificaciones de pre-publicacin, por ejemplo respecto
a si es adecuada para el conjunto de los dispositivos de destino. Los proveedores de las principales plataformas publican
actualmente pautas para ayudarte a verificar que tu aplicacin
responde a sus criterios de presentacin. Estas directrices
pueden ayudarte incluso si tu objetivo son otras tiendas de
aplicaciones.
Testeo
266
Apple
developer.apple.com/appstore/resources/
approval/guidelines.html
Android
developer.android.com/distribute/
googleplay/publish/preparing.html#coreapp-quality
Windows Phone
msdn.microsoft.com/en-us/library/
windowsphone/develop/hh394032
BlackBerry
developer.blackberry.com/devzone/
appworld/tips_for_app_approval.html
Fase 4: Vinculacin
Esto incluye bsqueda, confianza, descarga e instalacin.
Una vez que tu aplicacin es de disponibilidad pblica, los
usuarios necesitan encontrarla, confiar en ella, descargarla e
instalarla. Podemos probar cada aspecto de esta fase. Intenta
buscar tu aplicacin en la tienda de aplicaciones pertinente y
en los motores de bsqueda principales. De cuntas maneras
diferentes puede ser encontrada por los usuarios de destino?
Qu pasa con los usuarios fuera de los grupos objetivo,
quieres que la encuentren? Cmo van a confiar los usuarios en
tu aplicacin lo suficiente como para descargarla y probarla?
Tu aplicacin realmente necesita tantos permisos? Cmo
de grande es la descarga, es prctico descargarla mediante la
Testeo
267
Testeo
268
Herramientas de Testeo
Application Ressource Optimizer (ARO) de AT&T:
developer.att.com/application-resource-optimizer, proyecto
de cdigo abierto en github.com/attdevsupport/ARO
Fiddler por Telerik: telerik.com/fiddler permite encontrar
y modificar el trfico de red entre tu mvil y su conexin
de red.
Genymotion: genymotion.com, un emulador rpido y
muy potente para controlar, por ejemplo, valores de los
sensores.
iFunbox: i-funbox.com/ ayuda a instalar aplicaciones y
gestionar archivos en dispositivos iOS.
iTools: itools.en.uptodown.com/, un configurador de
aplicaciones para iOS que incluye el monitorizado de la
cache y logs en tiempo real.
Testeo
269
Aprende Ms
Testear aplicaciones mviles se est convirtiendo en una
importante corriente con mltiples fuentes de informacin.
Algunos recursos tiles son:
testdroid.com/blog, un frtil blog que trata varios temas,
entre ellos el testeo de apps. Tambin publican una lnea
editorial sobre el testeo de juegos mviles26.
appqualitybook.com/, el sitio sobre el interesante libro de
Jaron Arbon, basado en sus experiencias en el testeo y
anlisis de un gran nmero de aplicaciones mviles.
kohl.ca, el sitio de Jonathan Kohl incluye enlaces a su
aclamado libro sobre el testeo de aplicaciones mviles, y
otros artculos.
slideshare.net/karennjohnson/kn-johnson-2012-heuristicsmnemonics, presentacin de Karen Johnson sobre tests
heursticos y el uso de SFDPOT en el testeo mvil.
appqualityalliance.org/resources, el sitio oficial de la App
Quality Alliance AQuA incluye unas tiles directrices para
el testeo de aplicaciones.
26
testdroid.com/testdroid/7790/best-practices-in-mobile-game-testing
Testeo
270
Monetizacin
Por fin, has terminado tu aplicacin, o sitio web para mviles,
y la has pulido como resultado del feedback de beta testing.
Suponiendo que no ests desarrollando como hobby, para
promocionar una marca, etc., es el momento de hacer algo de
dinero. Pero, cmo se hace eso y cules son tus opciones?
En general, tienes las siguientes vas de monetizacin:
Pago por descarga: Vende tu aplicacin por descarga
Pago en aplicacin: Aade opciones de pago dentro de tu
aplicacin
Publicidad mvil: Gana dinero por publicidad
Patrocinios: Recibe un pago cada vez que uno de tus
usuarios se da de alta en un servicio de tu patrocinador
Participacin en ingresos: Obtn ingresos por servicios
del operador que se originen en tu aplicacin
Ventas indirectas: Afiliados, venta de datos y bienes
fsicos, entre otros
Mercado de componentes: Vende componentes o una
versin marca blanca de tu aplicacin a otros desarrolladores
Cuando planifiques tu desarrollo, la determinacin de la
monetizacin en tu modelo de negocio debera ser uno de los
elementos clave de su diseo inicial, ya que podra afectar
al comportamiento tcnico y funcional de la aplicacin. El
artculo "Five strategies to monetize your mobile app"1 es
una excelente referencia sobre cmo plantear los aspectos
1 medium.com/@signored/dont-fall-below-the-app-poverty-line-
9b800a214e4a
Monetizacin
272
www.businessweek.com/articles/2013-09-19/the-profitablefuture-of-free-mobile-aplicaciones
273
Monetizacin
274
4 daopay.com
5 en.wikipedia.org/wiki/Price_elasticity_of_demand
Monetizacin
275
Pagos en la Aplicacin
El pago dentro de la aplicacin (o IAP, en ingls In-App
Payment) es una forma de cobrar por acciones o contenidos
especficos dentro de tu aplicacin. Un uso muy bsico podra
permitir la compra unitaria de tu aplicacin (sin suscripciones
ni cargos recurrentes) despus de un perodo de prueba,
que puede generar ms ventas que PPD si crees que las
caractersticas de tu aplicacin justifican un precio ms alto.
Alternativamente, puedes ofrecer las caractersticas bsicas
de tu aplicacin de forma gratuita, pero cobrar por contenido
premium (vdeos, crditos virtuales, informacin premium,
caractersticas adicionales, eliminacin de los anuncios y
similares). La mayora de las tiendas de aplicaciones ofrecen
una opcin de compra en aplicacin, o puedes implementar tu
propio mecanismo de pago. Si quieres algo ms que una "licencia completa" por pago, tienes que pensar cuidadosamente
acerca de cmo, cundo y qu estn dispuestos a pagar tus
usuarios, y disear tu aplicacin en consecuencia. Los pagos
en aplicacin recurrentes, tambin llamados subscripciones,
son posibles en la mayora de las plataformas. Este tipo de
pagos son adecuados cuando tu aplicacin ofrece contenido
que se actualiza de manera regular, por ejemplo peridicos
online o revistas digitales.
Las compras dentro las aplicaciones se han convertido en
el modelo ms prspero de monetizacin en muchos mercados,
particularmente en los juegos "freemium", que se distribuyen
gratuitamente para enganchar a los usuarios antes de convertirlos en clientes. La IAP es especialmente popular en los videojuegos (por ejemplo para comprar energa extra, ms niveles,
crditos virtuales, etc.) y puede ayudar a conseguir una gran
base de usuarios si ofreces la aplicacin gratuitamente.
Distimo inform en el 2014 que las compras in-app suponen
Monetizacin
276
Publicidad Mvil
Como es comn en los sitios web, puedes decidir ganar dinero
mostrando anuncios. Hay una serie de entidades que ofrecen
herramientas para mostrar anuncios para mviles, siendo
sta la forma ms fcil de ganar dinero en aplicaciones de
6 2014
277
Patrocinios
La startup alemana Apponsor10 ofrece una nueva manera de
ganar dinerp sin tener que mostrar publicidad o cobrar por
descargar la aplicacin: El usuario obtiene tu aplicacin de
manera gratuita y se le pide darse de alta en una newsletter
de tu patrocinador. El patrocinador te paga por cada nuevo
registro en esa newsletter. No debe ser confundida con las
empresas de tipo App Sponsors, que pagan el coste de desarrollo de la aplicacin pidiendo a cambio una participacin en
los beneficios. Para ms informacin entra en Apps Funder11.
10
apponsor.com
11
appsfunder.com
Monetizacin
279
Ventas Indirectas
Otra opcin es utilizar tu aplicacin para dirigir las ventas
donde desees.
Habitualmente ofreces tu aplicacin o website de manera
gratuita, y entonces empleas mecanismos tales como:
1. Programas de afiliacin: Promover aplicaciones de pago
propias o de terceros en el interior de una gratuita. Ver
tambin MobPartner12 . Esto puede ser considerado una
variacin de publicidad mvil.
2. Venta de datos: Seguimiento del comportamiento y
venta de los datos a partes interesadas. Ten en cuenta
que, por razones de privacidad, no debe revelar ninguna
informacin personal, y que debes asegurarte de que todos
los datos son proporcionados en informes annimos y
consolidados.
3. Mundo real versus virtual: Usa tu aplicacin como
herramienta de marketing para vender bienes en el mundo
real. Ejemplos tpicos son aplicaciones para vehculos,
revistas y marcas tales como McDonalds y Starbucks.
Tambin utilizan este modelo de negocio aplicaciones de
cupones empresas como Groupon.
No hay nada que te impida combinar esta opcin con
cualquiera de las otras de monetizacin si lo deseas, pero ten
la precaucin de no dar la impresin de realizar promociones
extremadamente intrusivas.
12
mobpartner.com
Monetizacin
280
Mercado de Componentes
Un mercado de componentes o CMP (del ingls Component
Marketplace) proporciona otra oportunidad para los desarrolladores de monetizar sus productos mediante la venta a otros
desarrolladores de componentes de software o aplicaciones de
marca blanca. Un componente es una pieza de construccin
de software que ofrece una funcionalidad definida para ser
utilizado por el software de nivel superior.
La tpica pregunta que surge en este punto es cmo los
CMPs conviven con el cdigo abierto. Como usuario, el cdigo
abierto es a menudo gratuito, por lo que el cdigo fuente debe
ser proporcionado y los usuarios tienen el derecho de modificar
el cdigo fuente y distribuir la obra derivada.
Algunos proveedores de componentes requieren una cuota
de licencia. Ellos pueden proporcionar el cdigo fuente
completo que permite al desarrollador depurar cdigo en el
nivel ms bajo. Algunos CMP soportan todos los modelos:
componentes de pago as como componentes libres, ambos con
o sin el cdigo fuente.
Si eres un desarrollador en busca de un componente, los
CMP ofrecen dos ventajas principales: En primer lugar, no
tienes que abrir su cdigo fuente slo porque uses componentes de software. Todo cdigo abierto viene con una licencia.
Algunas licencias como la Apache estn comercialmente
compatibles, mientras que otras, como AGPL y OSL, requieren
que abras el cdigo fuente tuyo que se integrar con el
suyo. Es posible que no quieres esto. En segundo lugar, los
CMPs proporcionan una forma fcil de encontrar y descargar
componentes. Puedes pasar das mirando los repositorios de
cdigo abierto para encontrar el componente adecuado.
Los mercados de componentes han existido durante
dcadas. El mercado ms importante es de componentes para
Monetizacin
281
www.developergarden.com/component-marketplace/
14
www.chupamobile.com
15
www.appdevelopersalliance.org/app-monetizacin
Monetizacin
282
283
Monetizacin
284
Monetizacin
285
Mltiples tiendas
Tienda nica
Monetizacin
286
Mltiples tiendas
Tienda nica
16
androidpit.de
Qu Puedes Ganar?
Una de las preguntas ms comunes de un desarrollador es
acerca de cunto dinero se puede ganar con una aplicacin
mvil. Est claro que algunas aplicaciones han hecho millonarios a sus desarrolladores, mientras que otros no renunciarn
a su puesto de trabajo en el corto plazo. De acuerdo con una
investigacin del 2013 por Forbes.com17, la mayora de los
desarrolladores de aplicaciones no estn generando suficientes
ingresos para llegar a ser rentables y los desarrolladores
dedicados a una nica plataforma confirman que los ingresos
generados por su aplicacin de ms xito no resultan suficientes para sustentar un negocio independiente. Segn el estudio
Business and Productivity apps de VisionMobile, realizado
a ms de 6.000 desarrolladores mviles, el 50% de ellos se
encuentran por debajo del lmite de pobreza por aplicacin
al obtener menos de 500 dlares americanos al mes por cada
aplicacin (el 67% en el 2013)18. inMobi afirma que en el
tercer trimestre del 2014, los juegos mviles eran la categora
ms rentable de software mvil en trminos de ingresos por
publicidad. Segn su informe19 , el mejor tipo de anuncio son
las aplicaciones rich media. Y Gartner no predice un futuro
prometedor: consideran que hasta el 2018 menos del 0,01%
de las aplicaciones mviles de consumo sern consideradas un
xito financiero por sus desarrolladores20.
En ltima instancia, lo que puedes ganar depende de
17
www.forbes.com/sites/tristanlouis/2013/08/10/how-much-do-average-appsmake
18
www.visionmobile.com/products/research
19
www.inmobi.com/insights/download/whitepapers/the-state-of-mobile-appmonetization-q3-2014
20
www.gartner.com/newsroom/id/2648515
Testeo
288
satisfacer una necesidad y de un marketing eficaz. La experiencia sugiere que las aplicaciones que ahorran dinero o
tiempo al usuario son ms atractivas (descuentos, cupones de
hotel, msica gratuita y similares), seguidas por los juegos
(basta con ver el xito de Angry Birds) y las herramientas de
negocio (los visores de documentos de oficina, herramientas
de sincronizacin, herramientas de copia de seguridad y otras),
pero a menudo el xito (econmico) de una sola aplicacin no
se puede predecir. El xito, por lo general, viene con un bagaje
en experimentacin y mucha perseverancia.
Testeo
289
Eplogo
Gracias por leer esta 15 edicin de nuestra Gua del Desarrollador Mvil. Esperamos que hayas disfrutado de su lectura y
que te hayamos ayudado a clarificar tus opciones. Tal vez ahora
ests listo para participar en el desarrollo de una aplicacin
mvil o hayas descubierto nuevas opciones en el negocio
de las aplicaciones. Esperamos que s. Por favor, involcrate
tambin con la comunidad y comparte tus experiencias e ideas
con nosotros y el resto de compaeros.
Si quieres contribuir a esta gua, patrocinar prximas
ediciones, o te interesa obtener ediciones anteriores, por favor
escrbenos a mobiledevguide@enough.de. Si utilizas Twitter, te
invitamos a seguirnos en twitter.com/enoughsoftware y difundir
este proyecto utilizando el hashtag #mdgg.
Por supuesto, puedes descargarte esta edicin en formato
ebook en amazon.com, y en formato PDF desde nuestro website: www.enough.de/mdgg. En el momento de escribir estas
palabras, tambin estamos en proceso de publicar el contenido
de este libro como website en www.mobiledevelopersguide.
com, donde esperamos que encuentres nuevas maneras de
involucrarte y hacernos llegar tu feedback.
Publicaremos la prxima edicin a comienzos de 2016!
Eplogo
291
292
293
294
295
296
297
298
299
Patrick Mortara
Patrick estudi informtica en Frankfurt y ha estado desarrollando software para ordenadores de sobremesa desde mediados
de los noventa, tanto por libre como contratado por diversas
empresas. Comenz a desarrollar para mviles en el 2010,
cuando Samsung lanz su primer smartphone bada, el Samsung
Wave I.
Twitter: @pmortara
www.mortara.org
Marcus Ross
Marcus es un desarrollador y formador independiente. Despus
de 10 aos de estar empleado en varias empresas, ahora est
haciendo proyectos SQL-BI y todo tipo de actividades mviles
multiplataforma. Es un autor regular en la revista alemana
"mobileWebDeveloper". En su tiempo libre se le ve a menudo
en conferencias, hablando sobre temas mviles y JavaScript.
Tambin escribe artculos, libros y tweets sobre desarrollo
mvil.
Twitter: @zahlenhelfer
www.zahlenhelfer-consulting.de
300
301
302
303
www.enough.de
esponsorizado por:
msdn.microsoft.com
developers.sap.com
hp.com/go/mobile
wip.org
www.mobiledevelopersguide.com