Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

309
Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES a Edición c o m p l e t a m e n t e a c t u a l i z a d o a ú n g r a t i s 1

Transcript of Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

Page 1: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

msdn.microsoft.com hp.com/go/mobiledevelopers.sap.com

www.enough.de

una iniciativa de:

esponsorizado por:

“Si quieres empezar tu propio negocio en el ámbito móvil, este es el libro que tienes que leer primero.” Minh Nguyen en amazon.com

Una lectura obligatoria para cualquiera que esté considerando crear y comercializar apps.” Steve en amazon.com

“El títol és magní�co, pero el contenido hace honor al título en cierta medida. Este libro electrónico ofrece un amplio vistazo a casi cualquier cosa relacionada con el desarrollo de aplicaciones móviles existente.” Azzief Khaliq en hongkiat.com

“¡Una obra espectacular! Te asombrarás por cómo de increíblemente rápido puedes establecer tu presencia en el mercado móvil con los simples pasos explicados en esta guía.” Daniel Hudson en webtechman.com

Socio de distribución:

wip.org

Don’t PanicGUIA A LA GALAXIA DE APLICACIONES MÓVILES

aEdición

com

plet

amente actualizado

aún gratis

www.mobiledevelopersguide.com1

Page 2: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

2

publicado por:

Enough Software GmbH + Co. KG Stavendamm 22 28195 Bremen

Alemania www.enough.de

15a edición, Febrero de 2015Esta guía se encuentra bajo la licencia Creative Commons

“Algunos derechos reservados”.

Por favor, envía tus aportaciones, preguntas o esponsorización a: [email protected]

Síguenos en Twitter: @MobileDevGuide

traducción hecha posible por:

Diseño:

Cornelius Kwietniak (Enough Software)

Editores:

Marco Tabor (Enough Software)

Julian Harty, Chris Ward

Traductores:

Javier Melenchón, Eva Casado de Amezua

www.mobiledevelopersguide.com

Page 3: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

3

1 Prólogo4 La Galaxia Móvil: Introducción17 De la Idea al Concepto27 Experiencia de Usuario & Diseño de Interfaz38 Android56 BlackBerry 1068 Firefox OS74 iOS90 Java ME (J2ME)101 Tizen106 Windows117 Hacia Multiplataforma135 Sitios para Móviles & Tecnologías Web151 Aplicaciones Empresariales163 Videojuegos para Móviles182 Desarrollo Móvil y el Internet de las Cosas191 Programando Smartwatches199 Analíticas Móviles212 Seguridad de la Aplicación225 Accesibilidad247 Testeo272 Monetización291 Epílogo292 Acerca de los Autores

Page 4: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

4

Page 5: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

5

Page 6: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

1Prólogo

PrólogoEl desarrollo de aplicaciones ha avanzado mucho en los últimos 10 años. Cuando fundamos Enough Software en el 2005, las aplicaciones móviles eran algo realmente exótico y limitado a los teléfonos, y la distribución era más que difícil. Ahora, no sólo tenemos que limitarnos a los móviles como plataforma, sino que hemos ampliado nuestro alcance a tablets, phablets, PCs, relojes inteligentes (smartwatches), televisores y sistemas de automoción. Asimismo, muchos productos derivados del Internet de las Cosas (o IoT, del inglés Internet of Things) han sido posibles gracias a la aplicaciones móviles.

En esta quinceava edición, y como siempre desde el 2009, mostramos esas nuevas oportunidades, siendo en este caso los capítulos más notables los capítulos dedicados a IoT y smart-watches; pero también cabe destacar que otros capítulos han sido ampliados, mejorados, y en algunos casos completamente renovados. Por ello queremos felicitar a los autores, ¡habéis hecho un trabajo fantástico!

También agradecer el soporte de nuestros patrocinadores, que hace posible imprimir esta guía en formato de libro de bolsillo: ¡SAP, HP y Microsoft! Podéis documentaros sobre su oferta de plataformas móviles en developers.sap.com, developers.hp.com y dev.windows.com. Y por supuesto: ¡Muchísimas gracias a los traductores!

Page 7: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

2Prólogo

Por favor, compartid vuestro entusiasmo con no-sotros vía Twitter en @enoughsoftware o vía email en [email protected], y recordad que podéis encontrar la edición electrónica de este libro, en varios idiomas, en mobiledevelopersguide.com.

Robert + Marco / Enough Software Bremen, Febrero 2015PD: ¿Necesitas ayuda para triunfar en el universo móvil?

Contáctanos en [email protected] para saber más sobre nuestros servicios de coaching de aplicaciones.

Page 8: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

10EDITIONth

Page 9: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

4La Galaxia Móvil: Introducción

La Galaxia Móvil: IntroducciónBienvenido al mundo del desarrollo móvil, un lugar donde antiguos gigantes se tambalean y nacen nuevas estrellas, aparentemente de forma habitual.

Éste libro se centra en el desarrollo de aplicaciones móviles, abarcando fases como: planificación y especificación, prototi-pado y diseño, implementación, testeo interno y despliegue, publicación en una tienda de aplicaciones, descubrimiento por los usuarios, instalación, uso y feedback. En última instancia, queremos que nuestros usuarios disfruten utilizando nuestras aplicaciones y que nos den valoraciones positivas para alentar a otros a hacer lo mismo.

Sigue leyendo para aprender cómo desarrollar aplicaciones para las principales plataformas. Si ésta es la primera vez que has considerado involucrarte en este tema, te recomendamos no demorarlo más ya que el mundo se está enfocando rápidamente hacia el móvil como forma predominante en la informática, y es probable que otros te adelanten si esperas demasiado.

Aunque el desarrollo de aplicaciones móviles tiene algunos puntos en común con el de otro tipo de software, también posee características específicas. Vamos a tratar algunas de ellas a continuación.

Page 10: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

5La Galaxia Móvil: Introducción

Topología: Factores de Formato y Patrones de UsoTradicionalmente, los desarrolladores de aplicaciones sólo nos habíamos centrado en los teléfonos móviles; posteriormente las tablets aparecieron en escena como plataformas objetivo; y, hoy en día, nuestras aplicaciones pueden cubrir un amplio espectro de dispositivos: smartwatch, móvil, tablet, PC, TV y automoción. Y otros factores de forma se incorporarán en el futuro. Cada factor de forma plantea sus propios retos de usabi-lidad; por ejemplo, un tablet exige una navegación diferente a un teléfono y la entrada de datos en un televisor puede resultar muy incómoda.

Naturalmente, los patrones de uso de Android difieren de los de iOS, que a su vez son diferentes de aquellos para Windows Phone, etcétera. Por tanto, deberías evitar ofrecer la misma experiencia de usuario en todos los factores de forma, incluso si tu plataforma objetivo se limita a los smartphones, de lo contrario corres el riesgo de ofrecer un servicio mediocre a algunos segmentos de tus base de usuarios.

Formación Estelar: Creando un Servicio MóvilHay varias maneras de producir un servicio móvil:

— Aplicación (app) — Sitio Web — SMS, USSD1 y STK2

1 es.wikipedia.org/wiki/USSD

2 en.wikipedia.org/wiki/SIM_Application_Toolkit

Page 11: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

65 La Galaxia Móvil: Introducción

AplicacionesLas aplicaciones se ejecutan directamente en el dispositivo. Se pueden desarrollar como nativas, web o híbridas.

Aplicaciones NativasUna aplicación nativa está programada en un lenguaje específico con APIs propias de la plataforma. Se suele comprar, descargar y actualizar a través de la tienda de aplicaciones específica de la plataforma. Las aplicaciones nativas suelen ofrecer mejor rendimiento, integración más completa y la mejor experiencia de usuario en comparación con otras opciones; sin embargo, el desarrollo nativo suele ser también la opción de desarrollo más compleja.

Aplicaciones WebUna aplicación web (web-app/web-based) se basa en HTML5, JavaScript y CSS, y no depende de ninguna tienda de aplicacio-nes. Es un sitio almacenado localmente en el móvil que trata de emular el look-and-feel (aspecto y comportamiento) de una aplicación. Un famoso ejemplo de aplicación web es la del Financial Times, que abandonó la tienda de aplicaciones con el fin de evitar compartir los ingresos de los suscriptores; en cambio, la aplicación web basada en Facebook iOS fue puesta al día como aplicación nativa para mejorar dramáticamente su rendimiento y usabilidad. Hay frameworks para aplicaciones web que permiten construir un contenedor nativo para tales aplicaciones de manera que puedan ser publicadas en las tiendas de aplicaciones, por ejemplo Phonegap3.

3 www.phonegap.com

Page 12: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

7

Aplicaciones HíbridasExiste una exagerada controversia en torno a si las aplicaciones nativas son el futuro o si lo son las aplicaciones web. Para muchos de los desarrolladores de aplicaciones móviles esta controversia ya no es relevante, porque la aproximación híbrida al desarrollo de aplicaciones se ha convertido en algo bastante común: una aplicación puede utilizar código nativo para incre-mentar su rendimiento e integrarse con la plataforma, mientras que utiliza una webview con contenido basado en HTML5 para otras partes de dicha aplicación. Una aplicación híbrida hace uso tanto de las tecnologías nativas como las web. Partes de ella se comportarán como una aplicación nativa, mientras que otras se ejecutan sobre tecnologías web y pueden utilizar la conexión a Internet para ofrecer contenidos actualizados y funcionalidades sin necesitar de publicar actualizaciones en las tiendas de aplicaciones. Mientras que esto podría ser visto como un inconveniente, el uso de las tecnologías web permite a los desarrolladores mostrar contenido actualizado sin tener que volver a subir la aplicación a las tiendas de aplicaciones. El desafío clave es combinar las capacidades únicas de tecnologías nativas y web para crear una aplicación verdadera-mente fácil de usar y atractiva.

Sitios webUn sitio web se ejecuta en tu servidor, pero puedes acceder a varias funciones del dispositivo con JavaScript, por ejemplo para almacenar datos de forma local o solicitar la ubicación actual del dispositivo. A diferencia de las aplicaciones, los sitios web para móviles son inherentemente multiplataforma. Históricamente, los sitios web se han centrado en ser com-patibles con navegadores basados en WebKit como Safari. Hoy en día, tanto WebKit como Chromium son los motores de renderizado web dominantes, con Trident de Internet Explorer

Page 13: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

87 La Galaxia Móvil: Introducción

y algunos otros como actores secundarios. En aras de una Web abierta, intenta usar estándares HTML5 tanto como sea posible y evita renderizar código específico de un sólo motor.

SMS, USSD y STKLos servicios sencillos pueden ser realizados con SMS, USSD o STK. Todo el mundo sabe cómo funciona el sistema de mensajería de texto SMS (Short Message Service), y todos los teléfonos son compatibles con él, pero necesitas convencer a los usuarios de que recuerden comandos de texto para servicios más complejos. Algunos operadores ofrecen APIs para servicios de mensajería que funcionan para dispositivos que sólo usan WiFi, tales como las APIs de red de Deutsche Telekom4. En el Reino Unido, se puede pagar en los parkings de muchas ciudades via SMS. El USSD (Servicio Suplementario de Datos no Estructurados, del inglés Unstructured Supplementary Service Data) es un protocolo GSM utilizado para enviar sencillos menús basados en texto, cuyas capacidades dependen de la compañía operadora y el dispositivo. En Sri Lanka, los turistas pueden recibir una tarjeta SIM gratuita que se registra utilizando menús USSD.

El STK (SIM Application Toolkit) permite implementar aplicaciones interactivas de bajo nivel directamente en la tarjeta SIM de un teléfono. El STK puede parecer irrelevante cuando se están dando tanta relevancia a las aplicaciones para smartphones, sin embargo hay casos como el de M-Pesa, una aplicación STK que está transformando las transacciones financieras en Kenia y otros países5.

4 www.developergarden.com/apis

5 memeburn.com/2012/03/how-m-pesa-disrupts-entire-economies/

Page 14: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

9La Galaxia Móvil: Introducción

El Universo de los Sistemas Operativos MóvilesEl espacio móvil es mucho más diverso que otras áreas TIC. Cuando estás desarrollando software para ordenadores perso-nales, tienes básicamente 3 sistemas operativos para elegir, pero en el caso de los móviles hay muchos más. Este libro te ofrece una introducción a aquellos sistemas operativos móviles más relevantes actualmente, pero hay que ser consciente de que el entorno móvil cambia continuamente a una velocidad que rara vez se observa en otros negocios. Hemos visto cómo muchas tecnologías prometedoras aparecen y desaparecen rápidamente, sin importar lo grandes que eran las compañías que las respaldaban o la relevancia que tuvieran históricamente en el mercado.

Así que sigue leyendo, aprende cómo es el mercado actual y prepárate para seguir sus cambios (o asegúrate de tener la última edición de esta guía a mano).

Quásars: Android e iOSCuando la gente habla sobre aplicaciones móviles, en su mayoría sólo se refieren a Android e iOS. ¿Por qué? En términos de cuota de mercado, estas dos plataformas combinadas dominan el mercado de smartphones con alcanzando fácilmente el 90% de cuota en los principales mercados6 (ver la tabla a continuación para los números globales). El estudio Developer Economics 20147 también muestra que iOS y Android están a la cabeza en términos de atención por parte de los desarrol-ladores, es decir, el porcentaje de desarrolladores utilizando una plataforma, independientemente de la plataforma que

6 www.idc.com/getdoc.jsp?containerId=prUS24442013

7 developereconomics.com

Page 15: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

109 La Galaxia Móvil: Introducción

ellos consideran su 'primaria'. Android era líder, con un 71% de los desarrolladores trabajando en ella, seguido por iOS con un 55%.

Naturalmente, esto también significa que si vas a usar Android o iOS, vas a tener muchos competidores.

Materia Oscura: Plataformas de Móviles de Gama MediaSi bien los smartphones acaparan todo el protagonismo en los medios, algunas partes del mundo pertenecen al universo del móvil de gama media. A nivel global, alrededor del 50% de todos los teléfonos vendidos en el tercer trimestre de 2014 fueron feature phones (teléfonos de gama media)8, con una base instalada muy superior a esa cifra. Aún así, Android está incrementando su penetración en el mercado de dispositivos de bajo coste, así que su futuro no está del todo claro. Incluso los jugadores clave en el mercado de teléfonos de gama media se han dado cuenta: Nokia planea cerrar completamente su tienda para feature phones durante la primera mitad del 2015, para ser "reemplazada" por Opera9.

Aunque se pueden desarrollar aplicaciones nativas para teléfonos de gama media cuando se tiene estrecha relación con el comercializador, normalmente desarrollarás aplicaciones para esos teléfonos utilizando Java ME o BREW.

Magnetoestrella: WindowsWindows se ha convertido en el 'tercer ecosistema'10 en el universo móvil, superando en ventas al iPhone en algunas regiones, como Italia o Argentina. La cuota de mercado de Win-

8 gartner.com/newsroom/id/2944819

9 blogs.opera.com/news/2014/11/nokia-store-become-opera-mobile-store

10 kantarworldpanel.com/global/News/news-articles/Apple-iPhone-5S-outsells-5C-three-to-one-in-Great-Britain

Page 16: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

11

dows 8.1 y Windows 8 ha superado a la de todas las versiones de Mac OS X juntas, y también las versiones de Windows XP, según Net Applications11. Mientras que Windows 8 y 8.1 nunca ha alcanzado tal popularidad entre los usuarios, parece posible que Windows 10 sí lo consiga. Windows 10 soportará una gran variedad de dispositivos, comenzando por sistemas embebidos, dispositivos ponibles (wearables), teléfonos, tablets, PCs, e incluso la Xbox One.

Supernovas: Sailfish OS, Firefox OS, BlackBerry 10 y Aliyun¿Se convertirán estas plataformas en espectaculares historias de éxito o en desafortunados capítulos de la industria móvil? Nadie lo sabe con seguridad, pero hay señales ambivalentes abiertas a la interpretación.

La empresa finlandesa Jolla12 entró en el mercado en el cuarto trimestre del 2013 con Sailfish OS13. Aunque aún es un sistema enfocado a un nicho del mercado, Jolla ha lanzado una versión estable de su firmware y ha recibido más de 1,8 millones de dólares estadounidenses vía crowdsourcing para producir una tablet Jolla14 en Mayo de 2015.

Firefox OS15 no ha llegado muy lejos. Originariamente su objetivo eran los dispositivos de bajo coste, pero la experi-encia que ofrece un sistema operativo basado en web no es óptima en ese tipo de hardware. Ya que habrá nuevas mejoras en hardware en el 2015, será interesante probar Firefox Os en potentes dispositivos de bajo coste.

BlackBerry 10 se niega a morir, y tiene buenas razones para

11 netmarketshare.com/operating-system-market-share

12 jolla.com

13 sailfishos.org

14 www.indiegogo.com/projects/jolla-tablet-world-s-first-crowdsourced-tablet

15 mozilla.org/firefox/os

Page 17: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

1211 La Galaxia Móvil: Introducción

ello. A medida que la seguridad de datos gana atención en un mundo cada vez más conectado, BlackBerry aporta algunas ideas interesantes en ese ámbito. Aunque es claramente un nicho de mercado, parece un nicho acogedor y provechoso.

Aliyun fue lanzado en el 2014 en un solo dispositivo en China, con una cuota de mercado desconocida. Como no le siguieron otros dispositivos, es posible asumir que esa plataforma está muerta desde el punto de vista de los desarrol-ladores.

Enanas Blancas: Symbian, bada y otras estrellas muertasAlgunos sistemas operativos han ido consumiéndose lenta-mente (como Samsung bada), otros han terminado con una explosión (como WebOS), y algunos han sido reabastecidos gra-cias a nuevos desarrollos (Windows Mobile). ¿Por qué algunos sobreviven mientras que otros fracasan? Al final todo se reduce al marketing, al reconocimiento por parte de la comunidad de desarrolladores, a las políticas corporativas y a una buena dosis de pura suerte. Cada vez es más difícil competir con el enorme peso que tienen iOS y Android, un hecho que parece reflejarse en el mercado de smartwatches.

Nuevas Estrellas: Tizen y UbuntuDespues de que el esfuerzo en crowdsourcing16 para financiar el primer teléfono con Ubuntu no alcanzó sus objetivos, en Febrero 2015 la empresa española BQ17 presentó el Aquaris E4.5 con Ubuntu.

Tizen18 ha disfrutado de un cierto éxito en el mercado de smartwatches (ver el capítulo dedicado a esos dispositivos), aunque se ha retrasado la producción de los teléfonos

16 indiegogo.com/projects/ubuntu-edge

17 www.bq.com

18 tizen.org

Page 18: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

13La Galaxia Móvil: Introducción

prometidos por Samsung que lo soportarían. El Z1, el primer teléfono Tizen ha sido finalmente lanzado en India en enero de 2015. Aparentemente impulsado suave pero firmemente por Samsung e Intel, Tizen aspira soportar no sólo teléfonos y smartwatches, sino también televisores, tablets, netbooks y sistemas de infotenimiento para vehículos. El hecho de que incluyamos un capítulo dedicado a Tizen en esta edición refleja que nos estamos tomando esa plataforma seriamente.

Sistema Solar: Cuotas de Mercado de Sistemas Operativos para SmartphonesSi hechas un vistazo a la cuota de mercado mundial de smartphones para el mismo trimestre durante años sucesivos, la imagen resulta muy clara:

Plataforma Cuota T3 2014

Cuota T3 2013

Cuota T3 2012

Cuota T3 2011

Android 84,4% 81,2% 74,9% 57,4%

iOS (Apple) 11,7% 12,8% 14,4% 13,8%

Windows Phone

2,9% 3,6% 2,0% 1,2%

BlackBerry 0,5% 1,7% 4,1% 9,6%

Otras 0,6% 0,6% 4,5% 18,8%

Es posible que, como la mayoría de los desarrolladores, consideres que invertir tiempo en todo lo que no sea iOS y Android es una pérdida de tiempo, pero te aeguramos que no es tan sencillo como parece. En el primer trimestre del 2013, por primera vez, las ventas de smartphones a nivel global

(Fuente: idc.com/prodserv/smartphone-os-market-share)

Page 19: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

1413 La Galaxia Móvil: Introducción

superaron a las de teléfonos de gama media19, y Nokia Asha está considerada como la próxima plataforma que llegará al billón de usuarios, ofreciendo ya la posibilidad de portar aplicaciones desde Android.

Recuerda también que se estas son cifras globales; la participación de cada plataforma en los mercados regionales es muy variable. En un mundo donde el contenido geolocalizado está aumentando en importancia, es fundamental conocer los detalles y las características del mercado objetivo. Por ejemplo, China es el mayor mercado de smartphones en la actualidad y es responsable de más del 40% de las ventas de aplicaciones Android en el tercer trimestre de 201320, pero los dispositivos Android chinos se comercializan habitualmente sin acceso a Google Play y otros servicios Google para móviles.

Para obtener información sobre la cuota de mercado en tu región objetivo, tienes recursos en línea tales como comscore21, StatCounter22, VisionMobile23, Gartner24 o Kantar Mobile World Panel25.

Sobre Tiempo y Espacio

Como desarrolladores, tendemos a mostrar mucha pasión por nuestros sistemas favoritos. Sin embargo no debemos olvidar que estas tecnologías son sólo eso, tecnologías que son relevantes en un momento y lugar dado, pero nada más. Sí, al-

19 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

Page 20: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

gunas flamewars son divertidas pero, en retrospectiva, siempre son pueriles. ¡Que levanten la mano aquellos que participaron en el debate Atari versus Amiga, en los viejos y buenos años 80! Probablemente no muchos de vosotros, pero seguramente, entendéis a los que nos referimos. Iniciativas como FairPhone26 o IndiePhone27 pueden ser más importantes que el sistema operativo o el proveedor que elijas en el futuro.

Perdido en el Espacio

Si estás perdido en el vasto universo del desarrollo móvil, no te preocupes, mantén la calma y sigue leyendo. Explora tus opciones y evalúa el problema que deseas resolver, tu público objetivo y tu know-how. Pon un gran esfuerzo en diseñar la experiencia de tu servicio, concéntrate en el problema en cuestión, y mantenlo simple. Es mejor hacer una cosa bien que hacer "todo" sólo regular. Invierte en el diseño y la usabi-lidad de la solución. Por último, pero no menos importante, encontrar el nicho de mercado adecuado es a menudo mejor que tratar de copiar algo que ya ha tenido éxito. ¡Esta guía te ayudará a tomar una decisión informada!

26 fairphone.com

27 indiephone.eu

Page 21: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES
Page 22: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

17De la Idea al Concepto

De la Idea al ConceptoDesarrollar soluciones digitales populares e innovadoras significa beneficios importantes en esta industria. Hay millones de apps en las tiendas de aplicaciones, muchas agrupadas en una masa de aplicaciones similares que no ofrecen nada especial. Sin embargo, algunas aplicaciones son excepcionales. Es posible que te hayas preguntado: ¿Qué hace que estas aplicaciones tengan éxito, y cómo puedo lograr un éxito similar con mis productos? Este capítulo te ofrece herramientas y un marco para generar sistemáticamente ideas innovadoras para productos.

Los Ingredientes del Éxito: Conveniencia, Viabilidad & FactibilidadComenzaremos debatiendo qué hace a un producto innovador y exitoso. Una característica importante de los productos innovadores es su combinación de tres aspectos principales: conveniencia humana, viabilidad financiera y viabilidad técnica.

Comprender su conveniencia implica poder responder a las preguntas: ¿Qué desean las personas, y qué les hace felices? Por un lado, esto significa que una buena idea debe crear valor para las personas en su vida cotidiana; una buena idea debería simplificar tareas o hacer más cómoda la vida de las personas. Así, una idea de producto genera interés y atrae a la gente a utilizar el producto. Por otro lado, una experiencia de usuario atractiva fomenta el placer de su uso, ya que las tareas se pu-eden realizar fácilmente, la estructura de la aplicación es muy clara y fácil de entender, y las actualizaciones periódicas sobre el contenido o sitio ofrecido mantienen el interés en la misma constante. Las aplicaciones móviles pueden permitir a los

Page 23: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

18De la Idea al Concepto

usuarios hacer cosas que no podrían hacer antes fácilmente; por ejemplo, comprar precios en una tienda, comprar y vender sobre la marcha, o el control de su salud y estado físico. Considera formas de desarrollar aplicaciones que aprovechen lo que ofrecen los dispositivos móviles.

La viabilidad financiera es crucial para el desarrollo de la mayoría de productos, incluyendo las aplicaciones móviles. La viabilidad ayuda a cubrir los costes en tiempo y energía del desarrollo y mantenimiento de tu aplicación. Para aquellos que esperan que la aplicación se autofinancia, el desafío es definir un modelo de negocio que permite crear ingresos a partir de una idea y mantener los costes en niveles aceptables para los clientes finales. Sin embargo, muchos desarrolladores de aplica-ciones se mantienen por debajo del umbral de la pobreza1 .

En particular, en el mundo digital han surgido varios nuevos modelos de negocio en la última década. Por ejemplo, tanto la publicidad como el modelo freemium se han utilizado en a las aplicaciones móviles, siendo las compras In App especialmente populares en los videojuegos, aunque con riesgo de ser contraproducentes2. Lee el capítulo monetización de esta guía para aprender más sobre qué opciones tienes de ganar dinero con el software móvil.

El tercer aspecto es la viabilidad técnica. La mayoría de los ingenieros de software y desarrolladores están involucrados en la evaluación de esta dimensión. A menudo, construir y com-binar la tecnología adecuada para hacer un producto es todo un desafío. Casos de la vida real muestran que los productos innovadores no siempre necesitan tecnología de vanguardia

1 developereconomics.com/reports/developer-economics-q3-2014/

2 juego-developers developereconomics.com/freemium-apps-killing-game-developers/

Page 24: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

1918 De la Idea al Concepto

para tener éxito y que una combinación inteligente de las tecnologías existentes puede generar productos innovadores.

Es importante tener en cuenta los tres aspectos (conve-niencia, viabilidad y factibilidad) para desarrollar un concepto suficientemente detallado antes de invertir esfuerzos innec-esarios en la implementación de una solución. Obtén feedback de otras personas, incluidos los usuarios potenciales, para ayudarte a refinar idea y concepto.

Céntrate en el Usuario

En teoría, es posible que un producto encaje inmediatamente con los deseos de su grupo objetivo, pero en la práctica esto es poco habitual. En la mayoría de casos, el producto no agrada a muchos de los clientes previstos. Aunque las capaci-dades ofrecidas por el producto pueden ser muy innovador,as frescas, y realmente útiles, los usuarios pueden considerar el producto no apto para su contexto o pueden necesitar varias funciones adicionales para hacer un uso real del mismo. Para mejorar la satisfacción de los usuarios, las empresas de software tienden a hacer ajustes y tratar de responder a todos los deseos y al perfil del grupo objetivo de una manera desorganizada. Consecuentemente, el producto se va volviendo complejo, no es muy usable, y pierde más y más usuarios, ya que las expectativas de los usuarios no se pueden cubrir con la aplicación existente.

Comenzar a desarrollar sin comprender realmente las necesidades del usuario es muy arriesgado porque los cambios en una aplicación ya lanzada son caros. Además, los recursos se malgastan creando funciones innecesarias.

Page 25: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

20De la Idea al Concepto

Define las Necesidades del UsuarioPara evitar ese tipo de fallos, es importante centrarse en el usuario y desarrollar la aplicación usando su feedback. El análisis de los requisitos de usuario describe los procesos cruciales al revelar las necesidades del usuario y determinar sus expectativas. Analizar el escenario del problema y comprender los requerimientos del usuario son partes integrales del diseño de soluciones digitales innovadoras.

El primer paso es saber quiénes son tus usuarios y definir el grupo(s) de destino para tu aplicación. Tienes que comprender cuáles son los objetivos de los usuarios, qué tareas necesitan realizar, y por qué tu aplicación es relevante para sus necesi-dades. Comprueba que sabes qué grupos de usuarios desearían utilizar la aplicación.

Con el fin de revelar lospain points (puntos de dolor) y deducir los requisitos reales, es necesario entender cómo los usuarios realizan las tareas actualmente, incluyendo sus soluciones alternativas. La mejor manera de obtener esa infor-mación es hablar directamente con los representantes de los grupos de usuarios y observarlos en su vida o su trabajo diario. Los estudios secundarios de mercado, por ejemplo informes o datos demográficos, pueden ampliar tu investigación, ¡pero no dependas de ellos como principal fuente de información!

Además, durante el análisis de requisitos es importante tener en cuenta las diferencias entre deseos y necesidades. Según Merriam Webster, un deseo es "un deseo de que algo suceda o sea hecho."3 Además, se trata de "un acto de pensar en algo que deseado, con la esperanza de que se conseguirá o que va a pasar de alguna mágica manera." Este deseo es, habitualmente, consciente. Los deseos se centran en objetos materiales concretos (por ejemplo los smartphones) o en las

3 www.merriam-webster.com/dictionary/wish

Page 26: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

2120 De la Idea al Concepto

habilidades (por ejemplo la creatividad). Es por esto que los usuarios pueden expresar sus deseos para un determinado producto, como funciones o colores especiales. Los deseos se pueden cambiar (por la publicidad o cuando mejores productos llegan a ser conocidos, etc.), pero si un nuevo producto refleja sólo los deseos de usuarios, no significa necesariamente que ayude a los usuarios con sus objetivos. Por ejemplo, algunos clientes quieren obtener un producto sólo porque tiene un diseño agradable.

En cambio, las necesidades se esconden tras los deseos. Éstas no se centran en objetos o habilidades, sino en factores emocionales, como el recibir reconocimiento, la confianza, o una habilidad. Según Merriam Webster, una necesidad es "algo que una persona debe tener" y "algo que se necesita para vivir o tener éxito o ser feliz."4. Una necesidad es un deseo basado en la escasez. Si una persona experimenta la ausencia de algo, esto crea un deseo profundo en el subconsciente. Este deseo motiva los actos, lo que debería eliminar dicha ausencia. Diferentes carencias inducen diferentes niveles de acción. De acuerdo con la famosa pirámide de Maslow5, la necesidad fisiológica de dormir o el hambre son, por ejemplo, mucho más fuertes que la necesidad de comunicación social. A diferencia de los deseos, las necesidades son inespecíficos y, a menudo, inconscientes.

Para iniciar el análisis de los requisitos, asegúrate de plantear las necesidades y definir tu producto basándote en necesidades reales en lugar de deseos arbitrarios.

4 merriam-webster.com/dictionary/need

5 en.wikipedia.org/wiki/Maslow’s_hierarchy_of_needs

Page 27: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

22De la Idea al Concepto

IdeandoEl resultado del análisis no es una solución, sino una declara-ción clara y bien fundamentada del problema. Este plant-eamiento debe ser una base para explorar el escenario de la solución en la fase de ideación del proyecto. Durante esta fase, es importante comenzar a pensar muy divergentemente y llegar a una gran cantidad de ideas. Si creas una gran cantidad de ideas, será más fácil discutir diferentes enfoques para resolver los pain points de los usuarios y combinar las mejores.

Existen muchas técnicas para fomentar el pensamiento creativo. Algunas son bien conocidas, como el brainstorming (lluvia de ideas). Sin embargo, se han inventado muchas otras que se pueden utilizar en situaciones específicas, como el método 6-3-56, la confrontación visual, o el método Disney7. Lo que todas estas técnicas tienen en común es que fomentan tanto el pensamiento divergente como el convergente, fomentando el pensar fuera de la caja (del inglés thinking outside the box).

Un consejo habitual es celebrar sesiones de creatividad en un grupo con 5-8 participantes. Un grupo, por lo general, tiene mejores resultados que los de una persona individual. El brainstorming es el método más popular, pero no produce los mejores resultados en cuanto a la cantidad de ideas; para mejorarlos, se recomienda la aplicación de técnicas de brainwriting, que permiten a cada participante recabar ideas individualmente antes de discutirlas en grupo. Esto anima a cada miembro del equipo a participar activamente en la lluvia

6 una técnica de brainwriting para grupos, ver en.wikipedia.org/wiki/6-3-5_Brainwriting

7 desarrollado por Robert Dilts en 1994, ver en.wikipedia.org/wiki/Disney_method

Page 28: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

2322 De la Idea al Concepto

de ideas y reduce el riesgo de que estas se evalúan antes de tiempo.

No es importante la técnica que se utilice, sino tener en cuenta las siguientes reglas de equipo durante la fase de ideación del proyecto:

— Aplazar el juicio — Fomentar ideas extrañas — Mantenerse centrado — Centrarse en la cantidad — Ser visual — Construir sobre las ideas de otros

Una vez recogidas las diversas ideas, deberán revisarse, retocarse o combinarse por el equipo,

y las resultantes más prometedoras serán las seleccionados.

Probando las IdeasTras seleccionar una idea, es crucial descubrir si proporciona un valor real para el grupo objetivo y si lo realmente satisfaría las necesidades de los usuarios. Los comentarios de los usuarios potenciales son clave para evaluar el valor de tu idea. Al principio sólo tienes que hablar de tu idea y el concepto general de la aplicación. Sin embargo, puede ser un reto para describir tus pensamientos de una manera en la que el público los entienda. El lenguaje natural se interpreta

Page 29: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

24De la Idea al Concepto

a menudo de manera diferente y crea diferentes modelos mentales de cada persona. Por tanto, la comprensión puede ser diversa y la comunicación de las ideas un reto.

Con el fin de superar los retos de la comunicación, debes expresar tus ideas de maneras visuales y tangibles, por ejemplo con prototipos. El término prototipo puede sonarte como algo que requiere mucho esfuerzo; de hecho, tradicionalmente se entiende como una pre-versión de un producto final, pero un enfoque más moderno del concepto es más versátil al incluir borradores (por ejemplo, un dibujo en papel). En las primeras fases de desarrollo de una aplicación innovadora, un prototipo debe ser una herramienta que se utiliza para discutir ideas y conceptos. Un prototipo puede ser, por ejemplo, un dibujo, guión gráfico, o la visualización física de un concepto. Debe ser fácil y rápido de construir y representar las partes esencia-les de tu idea.

El principio más importante para trabajar con prototipos es "empezar poco a poco, fallar pronto y aprender rápido". Esto significa que puedes crear un prototipo rápido con costes muy bajos para hacer tangible tu idea, obteniendo feedback y aprendiendo en ciclos de iteración muy cortos. En esas iteraciones puedes probar y mejorar el prototipo rápidamente y a bajo coste. De esta manera, es posible validar nuevas ideas con riesgos bajos y sin costes adicionales para la ejecución del proyecto.

Cuando se trata de la ingeniería de software, hay tres herramientas relacionadas con el término prototipo: wireframe, mock-up, y una prueba de concepto. Wireframes y maquetas se utilizan generalmente en las primeras fases para validar un concepto, arquitectura de la información o interacción básica. Implementar una prueba de concepto se utiliza para validar la viabilidad técnica. Durante la implementación de una prueba de concepto, es fundamental centrarse en los riesgos del

Page 30: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

2524 De la Idea al Concepto

proyecto e identificar soluciones y límitaciones técnicas. Lee el siguiente capítulo para obtener más información sobre cómo crear prototipos.

Si conveniencia y viabilidad son validados, también es importante pensar en el modelo de negocio que vas a adoptar. Herramientas como el Osterwalder Business Model Canvas8 pu-eden ayudar a construir tu modelo de una manera estructurada.

Aprende Más

Aquí puedes aprender más acerca sobre metodologías y técnicas:

— businessmodelgeneration.com, el sitio web del famoso libro sobre cómo generar tu propio modelo de negocio. También ofrecen una herramienta online, una vista previa del libro9, y mucho más.

— mycoted.com/Brainwriting, una buena introducción a métodos de brainwriting. Forma parte de una Wiki sobre técnicas creativas mantenida por la empresa inglesa mycoted.

— uxbooth.com/articles/complete-beginners- guide-to-design-research, la "Complete Beginner’s Guide to Design Research" por Andrew Maier. El título es un tanto exagerado, pero el libro es una buena introducción con enlaces útiles a otros recursos.

— theleanstartup.com, el sitio web del libro "Lean Startup" de Eric Reis. Ayuda a los lectores a descubrir maneras de crear productos más deseables con menor coste.

8 alexosterwalder.com

9 businessmodelgeneration.com/book

Page 31: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES
Page 32: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

27Experiencia de Usuario & Diseño de Interfaz

Experiencia de Usuario & Diseño de InterfazA estas alturas probablemente ya tienes una idea para tu aplicación. Este capítulo trata sobre las técnicas a utilizar para transformar tus planteamientos en un producto utilizable.

Diseñar una aplicación desde cero requiere una aproxi-mación diferente a trabajar con una interfaz de usuario (o UI, del inglés User Interface) ya existente. En ambas situaciones, habitualmente irás alternando una visión más global con una más detallada para asegurarte de que continuas mejorando su calidad pero alineándote con las directrices del proyecto.

Utiliza los métodos descritos aquí como una caja de herramientas más que como una fórmula magistral, y aplícalos en el orden que mejor encaje con el proyecto en el que estés trabajando.

Las fases de diseño -diseño conceptual, aplicar las capas con los detalles a la interfaz, y verificar los conceptos imple-mentados con usuarios- forman un ciclo que puedes repetir tantas veces como necesites (o tiempo tengas para ello).

Pensamiento Conceptual

PersonasPersona es un perfil ficticio de usuario que representa una po-tencial tipología de usuario para un producto. En diseño, una persona típica consistirá en una información de base acerca de un usuario tipo, por ejemplo su profesión y motivaciones para usar tu aplicación, y cómo ésta podría mejorar su vida. ¿Le ayudaría a ser más productivo en el trabajo? ¿Realizar nuevas actividades? ¿Aprender nuevas habilidades? Habitualmente hay

Page 33: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

28Experiencia de Usuario & Diseño de Interfaz

más de una persona para un proyecto. Para facilitarte adecuar la aplicación a las necesidades de tus usuarios, elige también nombres y fotografías que te permitan perfilar en detalle las personas que utilizarás.

Los perfiles de usuarios son relevantes para ayudarte a evitar que tiendas a diseñar para ti mismo. Dado que ya estás trabajando en el producto, tu conocimiento de él es mayor que el que tendrá cualquier la primera vez que lo utilice. Incluso si tu propio perfil personal encaja en el de una persona, es probable que no seas el único tipo de usuario al que te quieras enfocar. Ya que vas a invertir tiempo y esfuerzo en comprender y diseñar tu interfaz, no será así para tus usuarios. En cambio, juzgarán la interfaz de tu aplicación según cómo esta encaje en sus prejuicios al respecto. Para asegurarte de que estás comunicando sus funciones con claridad, mantén en todo momento tus personas presentes, y realiza el tipo de preguntas que esos perfiles harían en cada paso de su viaje por tu aplicación (llamados User Journeys).

User journeysCuando tengas una idea precisa del tipo de audiencia para la que estás diseñando, puedes comenzar pareando las funciones con escenarios de uso; pensar en flujos -un viaje específico en tu aplicación desde un punto A a uno B- antes de pasar a definir en más detalle la interfaz es también importante. Esbozar esos flujos cuanto antes te ayudará a definir el número de interacciones y pantallas que realmente vas a necesitar para ellos.

Ejemplos de viajes pueden ser el flujo de compra en la aplicación, subir y compartir una imagen, hacer un boceto, etc. Para mapearlos deberás usar diagramas de flujo, mockups, diseños de pantalla, descripciones escritas de cada paso, storyboards o simples ilustraciones anotadas. Cualquier

Page 34: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

2928 Experiencia de Usuario & Diseño de Interfaz

técnica que elijas como la más apropiada para cada estado de desarrollo te ayudará no solo a visualizar nuevos productos, sino a evolucionas funciones existentes. Los flujos pueden ser detallados y usar diseños precisos o ser abstractos y enfocados a elementos específicos, por ejemplo el sistema de mensajería de la aplicación.

Tras definir el flujo principal, puedes dividirlo en múltiples tareas menores que necesites considerar en cada paso del flujo. Esto te dará el enfoque que necesitas para diseñar una experiencia complete con la comodidad de tener el flujo principal cubierto antes de entrar en detalles.

Iterar sobre un problema de diseño revelará diferentes retos según el tipo de persona que tengas en mente. Algunos usuarios necesitan más guía que otros. Incluso si es poco prob-able que todo el mundo perciba cada detalle de información y diseño, mientras estén disponibles para quienes los necesiten y equilibrados no interfieran en la experiencia de usuario de usuarios avanzados, mayor amplitud de usuarios alcanzará.

WireframesLos wireframes (o maquetas de estructura) son versiones esquemáticas de las pantallas de tu aplicación. Muestran dónde debe colocarse cada elemento y qué relevancia tiene en relación con el resto en pantalla. Esta composición básica ayuda a comprender el nivel de complejidad de contenido e interacciones.

Los wireframes pueden ser tan sencillos como bocetos en papel, o puedes usar una de las muchas herramientas existentes. Dibujar en papel es probablemente la mejor manera de generar conceptos rápidamente. Las herramientas más espe-cializadas incluyen una librería de widgets listos para utilizar en una página del diseño. La ventaja de utilizar herramientas digitales es que tienes una versión editable de tus mockups

Page 35: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

30Experiencia de Usuario & Diseño de Interfaz

que puedes transformar en prototipos funcionales. Aunque también puedes usar bocetos para ello, cuando profundices en el nivel de detalle te será mucho más fácil de actualizar una versión digital del diseño.

Mantener actualizados tus mockups guiará tu desarrollo de contenidos y diseño visual, y son un excelente punto de referencia para la discusión de los detalles y pasos a seguir con tu equipo. Tu librería de patrones de interfaz de usuario se basará en elementos reutilizables de tus diseños. La arquitectura de información de la aplicación se estructurará según cómo elijas organizar el contenido y la navegación a su alrededor del mismo.

Añadir los detalles

Diseñar para una plataforma y varios tamaños de pantallaPiensa en estructura y widgets en el contexto de la plataforma en la que se ejecutará tu aplicación. Cada plataforma tiene sus propias convenciones de estilo y métodos para gestionar la interacción. Seguir las prácticas recomendadas hará que tu aplicación sea más fácil de utilizar para los usuarios familiar-izados con esos dispositivos. Para más información y enlaces a recursos online ve a los capítulos específicos para cada plataforma en esta guía.

Debido a la naturaleza siempre cambiante del mercado móvil deberías considerar cómo se verá tu interfaz en diferentes tamaños de pantalla y densidades de resolución. Aunque puede ser demasiado pronto para analizarlo en detalle si no tienes tu concepto de aplicación refinado, trabajar la ratio escalabilidad-usabilidad durante el wireframing y la fase de diseño visual puede ahorrarte tiempo de desarrollo y testeo después. Si este tema es completamente nuevo para ti, vale la pena que

Page 36: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

3130 Experiencia de Usuario & Diseño de Interfaz

leas más acerca de las mejores practicas en Responsive Web Design (RDW). Los diseñadores web llevan tiempo resolviendo estos problemas. Averigua si la plataforma ofrece directrices específicas al respecto.

LenguajeTan pronto como comiences a utilizar etiquetas y nombres significativos en los elementos, comenzarás a definir cómo comunicarte con tus usuarios. Según sea tu aplicación, el len-guaje tendrá diferentes roles a la hora de guiar a tus usuarios. Pero incluso si el uso de palabras en tu interfaz es mínimo, no las abandones a un rol secundario (por ejemplo como place-holders). Tu manera de nombrar es algo que también deberías someter a testeo de usuarios. Una sola palabra errónea puede llevar a los usuarios a confusión o hacerles creer cosas que pueden afectar negativamente a la experiencia que quieres construir.

Diseño visualA menos que estés construyendo una app que utilice un sistema no visual de entrada/salida, su interfaz deberá basarse en el uso de gráficos. Cuidar los detalles visuales del diseño te ayudará a mejorar la experiencia de usuario y destacarla de la gran masa de aplicaciones del mercado.

Hay una serie de principios de diseño gráfico que ya deberías haber aplicado durante el wireframing. Estos incluyen la jerarquización espacial y visual así como la posición de sus elementos. Un estilo visual pulido no sólo mejora el atractivo de la interfaz en sentido estético, reforzar la marca también mejora la funcionalidad y reduce la curva de aprendizaje al ofrecer una visualización intuitiva.

Page 37: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

32Experiencia de Usuario & Diseño de Interfaz

La consistencia de estilo en toda la aplicación ayuda a los usuarios a comprender el sentido de tu interfaz y aprender sus interacciones más rápido. Por ejemplo, si un botón principal cambia de color de una pantalla a otra, deberás considerar el impacto de dicho cambio. ¿Se confundirán los usuarios? ¿Comprenderán el sentido de dicho cambio? Si los cambios de estilo son intencionales, asegúrate de que los haces por una buena razón.

De manera similar al diseño de interfaz e interacción a nivel wireframe, algunas decisiones de estilo deben seguir una guías de estilo específicas de la plataforma. Tu aplicación puede verse muy diferente dependiendo de para qué plataforma fue diseñada. Asegúrate de que tu diseño sigue las prácticas recomendadas respecto a uso de fuentes, iconos y convencio-nes de disposición de elementos. Como ya hemos mencionado, lee los capítulos de esta guía dedicados a las plataformas que te interesan para saber más y acceder a recursos específicos.

El branding en la interfaz puede ser aplicado de manera no obstructiva para que los usuarios puedan concentrarse en interactuar con tu aplicación. Utiliza los colores de fondo, de control, y tal vez algunas imágenes u opciones de diseño para conseguir el aspecto deseado. Una pantalla de inicio (si la utilizas) es el lugar donde mostrar algunos gráficos adicionales.

Por último, el icono de la aplicación es el elemento visual que dará la primera impresión de tu aplicación y su identidad, y el cual se la juzgará. Haz que sea muy atractivo. Si planeas lanzar en múltiples plataformas, comprueba los requisitos de diseño cuanto antes para que tu grafismo sea fácilmente portable.

Page 38: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

3332 Experiencia de Usuario & Diseño de Interfaz

PrototipadoUn prototipo es la mejor manera de visualizar y evaluar las interacciones de tu aplicación, porque es suficientemente funcional para comunicar tu visión sin tener que aportar mucha documentación adicional, por ejemplo imágenes estáticas. Tu prototipo puede tener ya su diseño visual y mostrarse exacta-mente como lo hará después de la implementación, o puedes dejarlo simplificado a nivel wireframe.

No importa el tamaño de tu presupuesto, o si trabajas en un proyecto personal durante el fin de semana, tener un prototipo suficientemente completo es la mejor manera de comunicar tu concepto y discutirlo con terceros. La narración no lineal de tus aplicaciones debe explicarse por sí misma ya en esta etapa. Puedes experimentar tu concepto con algunos prototipos en un dispositivo real, recuerda que tu interfaz puede verse muy diferente en diferentes tamaños de pantalla.

No existe la manera perfecta de crear un prototipo. Puedes usar cualquier técnica con la que estés cómodo. Desde papel hasta alguna herramienta especializada, u otra aplicación con la que puedas crear una mínima interactividad. Si sabes programar, usar HTML es una buena opción. Puedes crear rápi-damente prototipos sobre la parte de la aplicación existente y trabajar directamente en el código final, todo depende de qué enfoque encaje con las especificaciones del proyecto.

Los prototipos se desarrollan, normalmente, antes de invertir tiempo en el desarrollo del código final y de realizar diseños con precisión a nivel de píxel. Un prototipo funcional validado también es una referencia útil para que los equipos puedan trabajar sin arriesgarse a desviarse demasiado del plan director, y también es útil para obtener feedback de terceros.

Algunas herramientas son gratuitas, y la mayoría de las comerciales ofrecen una versión de prueba o gratuitas para un número limitado de proyectos. A menudo aparecen nuevas

Page 39: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

34Experiencia de Usuario & Diseño de Interfaz

aplicaciones; a continuación, una lista de algunas que puedes probar:

Herramientas de prototipado & wireframing

— Axure: axure.com — Balsamiq Mockups: balsamiq.com — Framer: framerjs.com — Mockingbird: gomockingbird.com — OmniGraffle: omnigroup.com/products/omnigraffle — Origami: facebook.github.io/origami — Pencil: pencil.evolus.vn — POP: popapp.in/ popapp.in — Proto io: proto.io — Sketch: designcode.jo/sketch

Pruebas de usuarioLa mejor manera de validar tu interfaz es enfrentarla con usuarios reales, tan pronto como sea posible. No tienes que esperar hasta que haya un producto acabado y pulido. De hecho, una prueba temprana puede ahorrarte mucho tiempo a largo plazo ya que saca a la luz rápidamente las ideas que no funcionan. A más tiempo inviertas en desarrollar tus diseños, más difícil será abandonarlos y comenzar de cero. Es más difícil aceptar comentarios sobre algo que se considera casi termi-nado 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 familiariza-dos con el producto que realicen ciertas tareas, por lo general acciones básicas. Durante la búsqueda de usuarios a entrevistar

Page 40: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

3534 Experiencia de Usuario & Diseño de Interfaz

es positivo utilizar las descripciones originales de Persona como referencia y buscar gente que coincida con estos perfiles.

Para un mejor uso del tiempo de prueba, prepárate con antelación. Define tus presentaciones, piensa en cómo vas a explicar la sesión a los usuarios y cómo utilzarás su feedback. También deberías preparar las tareas correspondientes a lo que quieres probar. Ponlas en una lista y ten ésta a mano para asegurarte de que se prueban todas.

Si estás probando un prototipo, vale la pena mencionar a los usuarios que la applicación no está terminada y que pueden encontrar elementos sin terminar. Si asumen que quien dirige la sesión es el autor del diseño pueden tener reparos en dar un juicio negativo. Asegúrales que pueden expresar sus opiniones con total honestidad. Después de todo, la única razón por la que organizaste la sesión es obtener información independiente. Una vez que las introducción ha terminado, es importante que sigas las reglas y no dirijas a los usuarios a ninguna conclusión. No demasiado (a menos que si no lo haces no puedas continuar con la sesión) y formula tus preguntas de manera que no interrumpas su flujo de trabajo. Graba a los usuarios para registrar el feedback obtenido o asegúrate de tomar suficientes notas.

Cuando recibes feedback, puedes iterar sobre tus diseños y mejorar las partes incompletas, o avanzar en el desarrollo con más confianza. Si estás explorando nuevas áreas y el prototipo aún no está listo, puede realizar sesiones de pruebas en otras aplicaciones ya publicadas. Lo que otros llegan a percibir de una aplicación son cosas que pueden sorprendente porque nunca las hubiéras pensado.

Page 41: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

36Experiencia de Usuario & Diseño de Interfaz

Incluso si no puedes probar con un gran número de personas, realizar pruebas con un número limitado de usuarios identificará problemas clave que podrían causar problemas de usabilidad. No tengas miedo de emprender estas sesiones siempre que tengan sentido para validar la dirección que has tomado. Una sola opinión no sesgada es mejor que ninguna opinión en absoluto.

Aprende más

Hay una gran cantidad de recursos disponibles online. Aquí te mostramos algunos para abrirte el apetito:

— UX Archive: uxarchive.com — User Onboarding: useronboard.com — Smashing Magazine (UX design section):

uxdesign.smashingmagazine.com — UX Magazine: uxmag.com — UX Matters: uxmatters.com — Nielsen Norman Group: nngroup.com — Interaction Design Foundation: interaction-design.org

Page 42: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES
Page 43: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

38Android

AndroidEl Ecosistema

La plataforma Android ha sido desarrollada por la Open Handset Alliance, liderada por Google, y ha estado a disposición del público desde noviembre de 2007. Su uso por muchos fabri-cantes de hardware la ha convertido en el sistema operativo de smartphones con mayor crecimiento. Alrededor del 84% de todos los smartphones vendidos en el tercer trimestre del 2014 en todo el mundo fueron Android1. En la keynote anual Google I/O de 2014, Google anunció que más de 1 billón de dispositivos Android habían sido activados hasta la fecha2 incluyendo wearables, tablets, reproductores multimedia, de-codificadores de televisión, teléfonos de sobremesa y sistemas de infotenimiento para automóviles. Las Google Glass también incluyen una versión reducida de Android compatible tanto con aplicaciones web como nativas. Algunos dispositivos no-Android también son capaces de ejecutar aplicaciones Android con una funcionalidad reducida, como por ejemplo el Playbook de RIM con su BlackBerry Android runtime, el nuevo sistema operativo de código abierto Sailfish3 y la consola financiada en crowdfounding Ouya.

En diciembre de 2014, el número de aplicaciones Android en Google Play rompió la barrera de los 1,5 millones4.

1 www.idc.com/prodserv/smartphone-os-market-share.jsp idc.com/prodserv/smartphone-os-market-share.jsp

2 engadget.com/2014/06/25/google-io-2014-by-the-numbers

3 sailfishos.org

4 www.appbrain.com/stats/number-of-android-apps

Page 44: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

39Android

Android es un sistema operativo, una colección de aplicaciones preinstaladas y una plataforma de desarrollo de aplicaciones soportada por un amplio paquete de herramientas. La plataforma sigue evolucionando rápidamente, con la adición de nuevas características regularmente, cada 6 meses aproxi-madamente, siendo la última Android 5.0 (nombre en clave 'Lollipop'). Siendo el primer lanzamiento mayor tras una larga serie de versiones menores, Lollipop fue anunciado como la mayor y más ambiciosa versión hasta la fecha. El nuevo kit de interfaz de usuario, llamado Material Design5 tiene como meta unificar todas las plataformas, tales como teléfonos, wearables y televisores, con una misma filosofía de diseño. El anterior framework, Dalvik, ha sido reemplazado con el nuevo Android Runtime (ART), que aporta funciones tales como una recolec-ción de basura (garbage collection o GC) más inteligente que llega a multiplicar el rendimiento or 4. El proyecto Volta mejora la vida de la batería optimizando el comportamiento de la aplicación, mientras que otras funciones incluyen control de privacidad, compartición de cuentas entre dispositivos, y extensiones al sistema de notificaciones.

Uno de los problemas más debatidos cuando se desarrolla para Android es la fragmentación del sistema: La multitud de dispositivos diferentes de diversos fabricantes y el rápido progreso de la plataforma en sí generan incertidumbre sobre si una aplicación Android podrá ejecutarse o no en cualquiera situación. Además, la adopción de la última versión del sistema operativo está siendo más lenta que en otras plataformas. En cualquier caso, actualmente puedes alcanzar más del 90% de la base instalada si decides centrarte en Android 4.0 o versiones superiores6.

5 developer.android.com/design/material/index.html

6 developer.android.com/about/dashboards

Page 45: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

4039

Para fomentar una experiencia de usuario sólida y una apariencia consistente en las aplicaciones Android, Google publica una guía de diseño7. Al introducirnos en la importancia de los esquemas de color, pautas de diseño y el nuevo diseño Material, la guía provee una excelente orientación a la hora de construir aplicaciones para el ecosistema Android.

Prerrequisitos

El lenguaje de programación principal para Android está basado en Java. Pero ten cuidado, sólo un subconjunto de las librerías y paquetes de Java son compatibles y hay muchas APIs específicas de la plataforma que no funcionarán en Android. Puedes encontrar respuestas online a la preguntas "¿Qué y Por qué?" en la Dev Guide para Android8 y a al "¿Cómo?" en la documentación de referencia9. Además, Google ha introducido una sección en su documentación llamada "Android Training"10 que ayuda a los nuevos desarrolladores a aprender las mejores

7 developer.android.com/design

8 developer.android.com/guide

9 developer.android.com/reference

10 developer.android.com/training/index.html

0.4%Froyo 2.2

KitKat 4.4

Gingerbread 2.3

Ice Cream Sandwich4.0

7.8%

6.7%Jelly Bean4.1 - 4.3

API 17

API 18

46,0%

39,1%

(datos de Enero de 2015)

Page 46: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

41Android

prácticas. Allí es donde puedes aprender conceptos básicos como la navegación y comunicación entre aplicaciones, así como funciones más avanzadas como la descarga inteligente de bitmaps y la optimización de la aplicación para reducir el consumo de la batería.

Para empezar, necesitas el SDK de Android11, que está disponible para Windows, Mac OS X y Linux. Contiene las herramientas necesarias para crear, probar, depurar y analizar aplicaciones. Las herramientas de desarrollo de Android (ADT)12 son responsables de la integración con IDEs y de asegurarse que tu flujo de desarrollo es lo más cómodo posible.

Soporte a IDEsActualmente, Google ofrece IDEs basadas en IntelliJ llamadas "Android Studio". y Eclipse (entendido como "Eclipse + ADT Plugin"), uniendo de manera eficaz las Android Developer Tools con IDEs. Tras dos años de desarrollo, Android Studio 1.013 es por fin la IDE oficial para Android, soporta Gradle y ofrece muchas funciones específicamente diseñadas para desarrollos en Android.

IDE soporte a plugin versión incluida

Eclipse paquete ADT por separado

Eclipse + ADT Plugin

Intellij plugin Android por separado

Android Studio

11 developer.android.com/sdk

12 developer.android.com/tools/sdk/eclipse-adt.html

13 android-developers.blogspot.de/2014/12/android-studio-10.html

Page 47: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

4241

Encontrarás más información, así como los necesarios enlaces de descarga, en la sección "Tools" de la documentación de Android14.

Desarrollo nativoEl Android NDK15 permite la creación de componentes nativos para tu aplicación al aprovechar tanto JNI para la invocación de métodos nativos y el uso de subclases nativas que ofrecen callbacks a aquellos no nativos. Esto es importante tanto para desarrolladores de videojuegos como para cualquiera que necesite fiabilidad y eficiencia.

Implementación

Arquitectura de la aplicaciónLas aplicaciones Android incluyen habitualmente una mezcla múltiples objetos tipo actividades (Activity), servicios (Service), BroadcastReceiver y proveedores de datos (Data Provider), los cuales tienen que ser declarados en el manifiesto de aplicación.

Una actividad es un bloque de funcionalidad con una interfaz de usuario adjunta. Un servicio se utiliza para tareas que se ejecutan en segundo plano y, por lo tanto, éstas no están ligadas directamente a una representación visual. Un receptor de mensajes gestiona los mensajes transmitidos por el sistema, por tí mismo o por otras aplicaciones. Un proveedor de datos es una interfaz para el contenido de una aplicación que abstrae de los mecanismos de almacenamiento subyacentes (por ejemplo, SQLite).

Una aplicación puede consistir en varios de estos com-

14 developer.android.com/tools developer.android.com/tools developer.android.com/tools

15 developer.android.com/tools/sdk/ndk

Page 48: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

43

ponentes, por ejemplo, una actividad para la interfaz de usuario y un servicio para tareas dilatadas en ejecución. La comunicación entre los componentes se consigue con objetos Intent o llamadas a procedimientos remotos vía (AIDL) Android Interface Definition Language.

Los Intents empaquetan datos tales como la localización del usuario, o una URL, con una acción, desencadenan acciones en la plataforma y pueden ser utilizados como un sistema de men-sajería en tu aplicación. Por ejemplo, el Intent para mostrar una página web abrirá el navegador web. La fuerza de esta filosofía de bloques de construcción es que se puede sustituir cualquier funcionalidad por otra aplicación, ya que Android siempre utiliza la aplicación por defecto para un propósito es-pecífico. Por ejemplo, el Intent para compartir una página web llamada por una aplicación de lectura de noticias puede abrir un cliente de correo electrónico o una aplicación de mensajería de texto, dependiendo de las aplicaciones instaladas y de las preferencias de usuario: se puede utilizar cualquier aplicación que declare un Intent tipo share como interfaz.

La interfaz de usuario de una aplicación está separada del código en archivos XML de layout específicos de Android. Diferentes diseños pueden ser creados para diferentes tamaños de pantalla, localización por país y características del disposi-tivo, sin tocar el código Java. Con este fin, textos e imágenes están organizados en carpetas separadas de recursos. Por supuesto, también puedes definir y diseñar layouts vía código o hacer use de ambas estrategias para permitir actualizaciones dinámicas de la interfaz de usuario.

El SDK y los Plug-insPara ayudarte en el desarrollo tienes muchas herramientas a tu disposición en el SDK, los más importantes son:

Page 49: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

4443 Android

— android: Para crear un proyecto o gestionar dispositivos virtuales y versiones del SDK.

— adb: Para llamar a los dispositivos, conectarse e interac-tuar con ellos (así como dispositivos virtuales) moviendo archivos, instalando aplicaciones, etc.

— emulator: Para emular las características de un dispositivo virtual. Lleva un tiempo arrancarlo, por lo que hazlo sólo una vez por sesión de trabajo y no para cada compilación.

— ddms: Para observar el interior del dispositivo o emulador, ver los mensajes del registro (log) y funciones de control del emulador, como la latencia de red y la posición GPS. También se puede utilizar para monitorizar el consumo de memoria y terminar procesos. Si esta herramienta está en ejecución, también puedes conectar el depurador de Eclipse a un proceso que se ejecuta en el emulador. Aparte, ddms es la única manera (sin acceso root) para realizar capturas de pantalla de las versiones de Android por debajo de la 4.0.

Estas cuatro herramientas y muchas otras se pueden encontrar en el directorio de herramientas del SDK, incluyendo algunas para el análisis de los registros de método de rastreo, inspeccionar diseños y probar aplicaciones con los eventos al azar.

Los plug-ins IDE están disponibles para ayudar a gestionar estos archivos. La versión 11.x de IntelliJ incluye un editor visual de layouts, por lo que tienes libertad para elegir entre Eclipse e IntelliJ en caso de que quieras hacer prototipado rápido, arrastrando y posicionando elementos de la interfaz en el editor.

Si te enfrentas a problemas, tales como generación de excepciones, asegúrate de revisar el registro de ddms o usar el mecanismo logcat. Te permite comprobar si

Page 50: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

45Android

olvidaste agregar todos los permisos necesarios, tales como android.permission.INTERNET en el elemento uses-permission16.

Si estás utilizando las características introducidas después de Android 2.3, tales como Fragments17 para pantallas grandes, asegúrate de agregar el paquete Android Compatibility de Google. Está disponible a través del SDK y AVD Manager y ayuda a desarrollar para Android 3.0+ sin causar problemas con el despliegue a Android 1.6 a través de Android 2.318. Asegúrate también de utilizar los paquetes de la versión 4 en tu aplicación para proveer de máximo soporte a versiones previas. También hay una versión para Android 2.1 y versiones superiores, la librería v7 appcompat, que ofrece una manera de implementar la ActionBar; véase su documentación online19.

Desarrollar tu aplicación para Android 3.1+ te permitirá crear widgets flexibles en tamaño para la pantalla de inicio, conectar por USB a muchos dispositivos, por ejemplo cámaras digitales y gamepads. Las versiones Android 4.X introducen interesantes novedades, como notificaciones expandibles, widgets de bloqueo de pantalla y una cámara con detección de rostros. El Material Design UI Toolkit fue introducido con An-droid 5.0 e incluye nuevos widgets y otros elementos para usar en teléfonos, wearables y otras plataformas. El entorno nativo Renderscript (introducido en la 3.1) ha cambiado mucho y no proporciona la capacidad de renderizar gráficos, pero ahora es posible utilizarlo para tareas exigentes en procesamiento.

Para ofrecer compatibilidad con dispositivos con versiones anteriores de Android, Google comenzó a utilizar el framework

16 developer.android.com/reference/android/Manifest.permission.html

17 developer.android.com/guide/topics/fundamentals/fragments.html

18 android-developers.blogspot.com/2011/03/fragments-for-all.html

19 developer.android.com/tools/support-library/features.html

Page 51: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

4645

Google Play Services20, que se actualiza a través de la Play Store y añade librerías, como por ejemplo la más reciente de Google Maps. Si estás interesado en autentificar usuarios, puede que te interese echar un vistazo a los beneficios que aporta tener datos reales de usuarios en tu aplicación con Google+ Sign. La funcionalidad se gestiona vía tokens de OAuth 2.0 que permiten el uso de la cuenta Google del usuario en nombre de éste.

Testeo

El primer paso para probar una aplicación es ejecutarla en el emulador o en un dispositivo. Es posible depurarla, si es necesario, a través de la herramienta ddms.

Todas las versiones del sistema operativo Android están preparadas para ejecutarse en dispositivos sin necesidad de modificaciones aunque, sin embargo, algunos fabricantes de hardware pueden realizar cambios en algunos elementos de la plataforma; por tanto, probar la aplicación en varios dispositivos es esencial. La lista de AppBrain21 puede ayudarte a hacerte una idea de qué dispositivos son los más populares.

Para automatizar las pruebas, el SDK de Android viene con algunas herramientas muy útiles22. Los tests se pueden escribir con el formato estándar JUnit, utilizando los objetos simulados de Android (mock objects) que se incluyen en el SDK.

Las clases Instrumentation pueden monitorizar la interfaz de usuario y enviar eventos del sistema tales como pulsacio-nes de teclas. Tus tests pueden comprobar el estado de tu aplicación tras estos eventos. MonkeyRunner23 es una potente

20 developer.android.com/google/play-services/

21 www.appbrain.com/stats/top-android-phones

22 developer.android.com/guide/topics/testing/testing_android.html

23 developer.android.com/guide/developing/tools/monkeyrunner_concepts.html

Page 52: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

47Android

y extensible herramienta de automatización de pruebas que permite probar toda la aplicación. Estas pruebas se pueden ejecutar tanto en dispositivos virtuales como físicos.

En la revisión 21 del SDK, Google introdujo finalmente un framework de automatización de pruebas de interfaz más eficiente24, que permite realizar pruebas funcionales de interfaz de usuario en Android Jelly Bean y versiones superiores. La herramienta puede ser ejecutada desde el shell con el comando uiautomatorviewer y muestra la interfaz capturada, incluyendo información sobre las vistas. Ejecutar las pruebas es relativamente fácil: Una vez que hayas escrito tu test, éste se compila a través de ANT como un archivo JAR. Este archivo tiene que ser subido al dispositivo y ejecutado con el comando adb shell uiautomator runtest.

En octubre de 2013, una nueva herramienta llamada Espresso25 fue lanzada por Google. Proporciona una API muy sencilla que ayuda a escribir con rapidez test procedurales para la interfaz de usuario.

Entornos de prueba de código abierto, como Robotium26, pueden complementar otros tests automatizados. Robotium incluso puede ser utilizado para probar archivos binarios apk si el código fuente de la aplicación no está disponible. Roboelectric27 es otra gran herramienta que ejecuta las pruebas directamente sobre tu IDE en el JVM estándar de tu ordenador.

Tus pruebas automatizadas se pueden ejecutar en servidores de integración continua como Jenkins o Hudson. Roboelectric se ejecuta en una JVM estándar y no necesita un runtime Android. Muchos otros entornos automatizados de pruebas,

24 android-developers.blogspot.de/2012/11/android-sdk-tools-revision-21.html

25 googetesting.blogspot.de/2013/10/espresso-for-android-is-here.html

26 code.google.com/p/robotium

27 robolectric.org

Page 53: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

4847 Android

incluyendo Robotium, se basan en el entorno de Instrument-ación de Android, y requerirán ser ejecutados en la JVM Dalvik. Plug-ins como el Android Emulator Plugin28 permiten que estos tests sean configurados y ejecutados en Hudson y Jenkins.

Compilación

Aparte de crear tu aplicación directamente en el IDE que prefieras, hay maneras más cómodas de construir aplicaciones Android. Gradle29 es actualmente la herramienta de creación automatizada con soporte oficial para Android. También hay un plug-in de Maven30 que cuenta con un gran apoyo en la comunidad de desarrolladores. Ambas herramientas pueden tener dependencias de diferentes repositorios Maven, véase el Maven Central Repository31.

El sistema que utiliza Google para publicar librerías para Gradle se conoce como Android Archive (archivos .aar) y se puede acceder a él vía Android SDK Manager. También puedes crear tus propias librerías o SDKs utilizando el plugin android-library para Gradle. Una excelente fuente de librerías Android compatibles con Gradle es 'Gradle, please'32.

28 wiki.hudson-ci.org/display/HUDSON/Android+Emulator+Plugin

29 tools.android.com/tech-docs/new-build-system

30 code.google.com/p/maven-android-plugin/

31 www.maven.org/

32 gradleplease.appspot.com

Page 54: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

49Android

Firmado

Tus aplicaciones tienen que haber sido firmadas en el compilado, ya sea con una firma de depuración o con una de publicación. Puedes utilizar un mecanismo de auto-firma, lo que evita gastos relacionados con la firma (y seguridad).

La misma firma debe ser utilizada para las actualizaciones de tus aplicaciones, así que asegúrate de no perder tu keystore o contraseña. Recuerda: puedes utilizar una única clave para todas tus aplicaciones o crear una nueva para cada una de ellas.

Distribución

Una vez hayas creado tu rompedora aplicación y la hayas probado, debes publicarla en la tienda de aplicaciones de Android llamada "Play". Este es un buen lugar para llegar a los clientes y vender tus aplicaciones. Android, desde la versión 1.6 en adelante, también es compatible con compras desde la misma aplicación vía Google Wallet, lo que te permite vender contenido adicional, paquetes de funciones, etcétera, dentro de tu aplicación utilizando la infraestructura de Android Play33. También se utiliza por otros portales de aplicaciones como fuente de metadatos de aplicaciones. Para subir tu aplicación a Android Play, el punto de partida es play.google.com/apps/publish/.

Estás obligado a inscribirte en el servicio a través de tu cuenta de Google Checkout y pagar una cuota de inscripción de $25 (USD). Una vez aprobado tu registro, puedes cargar

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

Page 55: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

5049 Android

la aplicación, añadir imágenes y descripciones, y entonces publicarla.

Asegúrate de que has definido versionName, versionCode, un icono y una etiqueta en tu AndroidManifest.xml. Además, las características declara-das en el manifiesto (nodos uses-feature) se utilizan para filtrar aplicaciones para distintos dispositivos.

Una de las novedades más recientes en Google Play Store es que aceptan versiones alpha y beta, lo que te permite realizar pruebas con usuarios de manera amigable antes de lanzar la aplicación y hacerla pública a todos los usuarios. Aún más, puedes dirigirlas a países y dispositivos específicos utilizando el Developer Console y exportar las estadísticas resultantes para comprender mejor tu base de usuarios. Utilizando los ser-vicios de localización integrados, puedes fácilmente comprar la capacidad de añadir nuevos idiomas a tu aplicación (asegúrate de revisar la Localization Checklist34 para obtener información detallada acerca de la importancia de este tema).

Como hay una gran cantidad de aplicaciones compitiendo en Android Play, es posible que desees utilizar tiendas alternativas de aplicaciones35. Ofrecen diferentes métodos de pago y pueden dirigirse a grupos específicos de consumidores. Uno de esas tiendas es la Amazon Appstore, que viene instalada en la familia de tablets Kindle Fire.

Adaptación

A medida que la adopción de Android se incrementa, también lo hace un ecosistema de elementos específicos de fabricante que incluyen sus propios SDKs, versiones de Android comple-

34 developer.android.com/distribute/googleplay/publish/localizing.html

35 onepf.org/appstores/

Page 56: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

51Android

tamente adaptadas y herramientas en torno a temas tales como las pruebas de versiones alpha y beta. Esto tiene su lado positivo, por ejemplo una integración sólida que posibilita una fantástica experiencia de usuario, pero también negativo, incrementa la fragmentación del ecosistema. A menudo, las tiendas de los fabricantes bloquean la descarga de aplicaciones genéricas que utilicen servicios de terceros.

Un ejemplo es el ecosistema de la Kindle Fire de Amazon, que es básicamente una nueva y customizada rama de Android y supone la tablet Android con mayor cuota de mercado: en vez de utilizar Google Play Services para utilizar Google Maps o la compra de aplicaciones, obliga a utilizar las librerías propias de Amazon que ofrecen funcionalidades similares. Las razones tras esto son sencillas los dispositivos Kindle no se comer-cializan con las librerías necesarias para ejecutar servicios de Google porque Amazon ofrece sus propios servicios de juegos y publicidad (comparable a Google Play Glames) que te ayuda a dirigirte a tu audiencia objetivo. Además, ofreciendo emuladores para sus cuatro dispositovos (1st Gen, 2nd Gen, HD 7" y HD 8.9"), Amazon proveede de un entorno realista para perfeccionar las aplicaciones y, a parte de las herramientas de pruebas que ofrece a su comunidad de desarrolladores, también verifican todas aquellas que se suben a su Appstore.

Page 57: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

52Android

A continuación, un breve resumen que te ayudará a localizar los recursos que puedas necesitar:

Fabricante Documentación

Amazon developer.amazon.com/sdk/fire.html

HTC htcdev.com

LG developer.lge.com

Motorola developer.motorolasolutions.com/community/android

Samsung developer.samsung.com/android

Sony developer.sonymobile.com

Curiosamente, un número creciente de fabricantes (por ejemplo Samsung y HTC) han comenzado a ofrecer “vanilla versions” (versiones no customizadas) de Android en sus dispositivos, etiquetadas como “Google Play Edition”. Estos dispositivos usan el mismo hardware que los modelos estándar, pero sin software personalizado, que se distribuye directamente a través de la Play Store de Google y permite a los usuarios de los dispositivos más innovadores y novedosos (bleeding edge devices) utilizar servicios Google.

Monetización

Además de venderla en alguna de las muchas tiendas de aplicaciones , hay muchas maneras diferentes de monetizar una aplicación Android. Una forma viable es mediante el uso de la publicidad, que puede ser basada en clics o en número de visitas, y puede proporcionar un ingreso estable. Aparte, hay diferentes posibilidades para facturar desde la aplicación,

Page 58: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

53Android

como el servicio propio de facturación de Google36, que utiliza la tienda Google Play, el Mobile SDK de PayPal37 o la Librería Mobile Payments Library de PayPal38. La mayoría de los servicios difieren en las comisiones por transacción y las posibilidades que ofrecen, por ejemplo suscripciones, pagos paralelos o pagos previamente aprobados. Si buscas añadir una funcionalidad muy atractiva a tu aplicación, evalúa implemen-tar el SDK de card.io39 para el escaneado de tarjetas de crédito con la cámara del móvil.

Para los ecosistemas de los fabricantes, tales como Samsung Apps o Amazon Appstore, considera el uso de sus SDKs para beneficiarte de sus optimizados modelos de monetización.

Asegúrate de verificar que el método de pago de tu elección está en armonía con los términos y condiciones de las diferentes tiendas en las que deseas publicar la aplicación; en especial vale la pena echarle un vistazo a aquellas que permiten descargas digitales, ya que suelen tener diferentes directrices.

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

37 github.com/paypal/PayPal-Android-SDK

38 developer.paypal.com/webapps/developer/docs/classic/mobile/gs_MPL/

39 card.io

Page 59: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

54Android

Page 60: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES
Page 61: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

56BlackBerry 10

BlackBerry 10

Introducción

La plataforma BlackBerry 10 (BB10) es un relanzamiento global de BlackBerry (empresa anteriormente conocida como RIM). BlackBerry ha adoptado este enfoque con el fin de ponerse al día con los sistemas operativos móviles competidores: iOS, Android y Windows Phone 8. Los dispositivos BB10 fueron introducidos en el mercado en el primer trimestre del 2013 (sin planes de actualización para dispositivos anteriores), y actualmente hay cuatro modelos disponibles, siendo los nuevos buques insignia la Blackberry Passport y la Blackberry Classic. Blackberry ofrece modelos tanto con teclado físico como virtual.

Aunque el sistema operativo es nuevo, su núcleo está basado en QNX, un sistema operativo en tiempo real para dispositivos integrados. Las otras partes del ecosistema BlackBerry, como la BlackBerry World o el servicio push, no han cambiado, y se han aliado con Amazon para una mayor oferta de aplicaciones. Con el lanzamiento de la versión 10.3 del sistema operativo de Blackberry, los usuarios pueden elegir entre el Blackberry World Appstore y el Amazon Appstore. Un elemento importante para BlackBerry en el mundo empresarial es el software de gestión de móviles BlackBerry Enterprise Server.

La última versión del BlackBerry SDK es la 10.3.1, que ha sido lanzada en Noviembre del 2014.

Page 62: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

57BlackBerry 10

Desarrollo

Con BB10, las aplicaciones se pueden desarrollar utilizando una amplia variedad de tecnologías:

— C Native SDK — C++ Cascades SDK — HTML5 (WebWorks SDK) — Adobe Air — Android Runtime — BlackBerry App Generator

Con el fin de atraer a los desarrolladores a su nuevo sistema operativo, BlackBerry proporciona un amplio conjunto de recursos, incluyendo un simulador, y documentación frecuent-emente actualizada1. También se publica el eBook gratuito Learn BlackBerry 10 App Development2. y, en términos de programación, mucho código online3 y varios proyectos de ejemplo en GitHub4

Un punto importante de descontento, por el que BlackBerry ha recibido muchas críticas, es que BB10 ya no soporta la anterior API de Java. Esto significa que los desarrolladores Java que escriban código para dispositivos BlackBerry anteriores a BB10 deben reorientarse a una de las tecnologías anteriormente mencionadas. Como no todos los desarrolladores están dispuestos a hacer esto, hay cierta preocupación respecto a que un gran número de ellos “abandonen el barco" y se reorienten a las plataformas de la competencia. Además,

1 developer.blackberry.com/platforms/bb10

2 apress.com/9781430261575

3 developer.blackberry.com/develop/platform_choice/bb10.html

4 github.com/blackberry

Page 63: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

5857 BlackBerry 10

dado que no hay vía de migración para las aplicaciones de la generación actual, los desarrolladores tendrán que volver a escribirlas para la nueva plataforma. Esto es necesario porque el núcleo del nuevo sistema operativo se basa en QNX5, un sistema operativo de tiempo real. Por otra parte, la nueva plataforma ofrece nuevas oportunidades, por ejemplo para los desarrolladores web y Android, que pueden migrar fácilmente sus aplicaciones. En cualquier caso, algunas aplicaciones migradas no tienen especial valor y bien podrían desaparecer masivamente de la tienda de aplicaciones en bloque en vez de aparecer otras nuevas6.

C Native SDKEl BlackBerry SDK es compatible con estándares abiertos que permiten a los desarrolladores llevar sus aplicaciones ya existentes a la plataforma. Para comenzar tienes el sitio web Native Dev7. Escribir código con el SDK nativo permite que tu aplicación esté tan cerca del hardware como sea posible y, por tanto, mejorar el rendimiento y la integración con BB10. El BlackBerry 10 SDK incluye todo lo necesario para desarrollar programas que se ejecutan en BlackBerry OS 10: un compilador, un enlazador, librerías, y un extenso entorno de desarrollo integrado (IDE). Está disponible para Windows, Mac y Linux.

Los pasos básicos de desarrollo son los siguientes:

— Solicitar una cuenta de firmado y sus claves — Instalar el SDK nativo8

5 www.qnx.com

6 mashable.com/2013/08/21/blackberry-10-app-spam/

7 developer.blackberry.com/native/beta/

8 developer.blackberry.com/native/download

Page 64: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

59BlackBerry 10

— Instalar y configurar el simulador9

— Configurar el entorno para desarrollo y despliegue — Crear tu primer proyecto y/o ejecutar aplicaciones de

ejemplo

C++ Cascades SDKDesarrollar aplicaciones con C++ y Cascades es otra opción. Cascades ha sido diseñado para permitir a los desarrolladores crear una aplicación BlackBerry con facilitando la implemen-tación de la interfaz de usuario. El marco Cascades separa la lógica de aplicación del motor de renderizado de la interfaz. En la aplicación, los controles de interfaz de usuario declarados, sus propiedades y comportamiento se definen en un lenguaje de marcado llamado Qt Modeling Language (QML)10. Cuando se ejecuta la aplicación, el motor de renderizado de interfaz de usuario muestra los controles de la misma y aplica las transiciones y los efectos que hayan sido especificados. El Cascades SDK ofrece las siguientes características:

— Interfaz de usuario Cascades y APIs de plataforma — Herramientas para desarrollar tu interfaz en C++, QML, o

ambos — Capacidad de beneficiarse de controles básicos de la

interfaz y crear nuevos — Comunicación por redes móviles y WiFi — Grabación y reproducción de archivos multimedia — Almacenamiento y retorno de datos — Gestión de certificados y herramientas criptográficas

9 developer.blackberry.com/native/download

10 en.wikipedia.org/wiki/QML

Page 65: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

6059 BlackBerry 10

El entorno Cascades se basa en el entorno de desarrollo de aplicaciones Qt. Esta arquitectura permite a Cascades aprovechar los modelos Qt de objetos, eventos y threading. Los slots y señales en Qt permiten una potente y flexible comunicación entre objetos. El framework Cascades incorpora características de clases Qt fundamentales (tales como QtCore, QtNetwork, QtXml, QtSql, y otras) y compila sobre ellas. Esto permite a los desarrolladores definir las cosas en lugar de programarlas, por ejemplo, sólo tienen que definir la duración y el tipo de una animación, en lugar de programarla. Este enfoque es similar a iOS con Core Animation. Debido a su marcado parecido a JSON, QML puede incluso ser escrito por desarrolladores JavaScript experimentados.

Para ayudar a los desarrolladores con este nuevo enfoque en la construcción de interfaces de usuario, existe una herramienta llamada Cascades Builder. Está incluida en el QNX Momentics IDE y permite a los desarrolladores diseñar una interfaz de usuario mediante una interfaz visual. Cuando se realiza un cambio en el código, se puede ver el efecto inmedi-ato en la vista de diseño. El desarrollador no tiene necesidad de programar un control, puede simplemente arrastrar y soltar.

Si eres un diseñador, el Cascades Exporter11 es para tí. Este plugin de Adobe Photoshop recorta y reescala las imágenes y las empaqueta en un archivo tmz (en recursos de imagen comprimidos, recortados y mejorados con metadatos). Estos archivos de recursos puede ser utilizados fácilmente por un desarrollador con el QNX Momentics IDE.

Para más información, investiga el sitio web de Cascades Dev12.

11 developer.blackberry.com/cascades/documentation/design/cascades_exporter/

12 developer.blackberry.com/cascades/

Page 66: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

61BlackBerry 10

HTML5 WebWorksSi eres un desarrollador Web/JavaScript, puedes utilizar tus habilidades para escribir aplicaciones para BlackBerry. Hay dos herramientas relevantes que puedes utilizar:

La primera es WebWorks SDK13. Entre otras características, permite escribir páginas web regulares y luego compilarlas como aplicaciones nativas de BlackBerry con facilidad. La nueva versión de WebWorks, la 2.0, encaja perfectamente con el entorno Apache Cordova, también conocido como PhoneGap; BlackBerry publicó todas las APIs como plugins para ésta herramienta. Si quieres imitar el estilo de la interfaz de usuario BlackBerry en HTML, hay un proyecto en GitHub que te ayudará. Se llama BBUi.js14 y ofrece un amplio y detallado CSS para hacer que tu página web estándar se visualice como una aplicación nativa BlackBerry. En esta aproximación debes utilizar atributos de datos para mejorar el código HTML. Como alternativa a bbui.js también se soporta jQueryMobile con un tema de BB10, y el SenchaTouch framework15 también es compatible con BB10.

Es bueno saber que BlackBerry ofrece soporte WebGL acelerado por hardware, y que puedes realizar la depuración y perfilado del dispositivo móvil a través del WebInspector como una función integrada.

Para obtener más información sobre el desarrollo con WebWorks hay un micro-site de HTML5 Dev16.

13 developer.blackberry.com/html5/download/sdk

14 github.com/blackberry/bbUI.js

15 www.sencha.com/products/touch

16 developer.blackberry.com/html5

Page 67: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

6261 BlackBerry 10

Adobe AirLa versión 10.3.1 de BB10 ya no soporta Adobe Air.17

Android en Tiempo de Ejecución (Runtime)Puedes utilizar el BlackBerry Runtime para ejecutar aplicacio-nes Android Jelly Bean 4.2.2 en BlackBerry 10.2 y 10.3. Para utilizar el runtime, primero debes volver a empaquetar tus aplicaciones Android en el formato de archivo BAR, que es el necesario para que una aplicación se ejecute en BlackBerry 10.

Como desarrollador, tendrás que utilizar una de las her-ramientas siguientes para volver a compilar la aplicación. Estas herramientas también comprueban cómo es de compatible tu aplicación para ser ejecutada en BlackBerry 10, ya que algunas de las APIs del SDK de Android pueden no ser compatibles, o pueden serlo sólo parcialmente con la plataforma BlackBerry.

— Plug-in de recompilación para EclipseLa principal ventaja de la utilización de esta herramienta es

su capacidad de comprobar niveles de compatibilidad, compilar, depurar y ejecutar aplicaciones en BlackBerry PlayBook, BlackBerry Tablet Simulator, BlackBerry 10 Dev Alpha Simulador y dispositivos BlackBerry 10, todo sin salir de Eclipse. También puedes usar este plug-in para firmar tu aplicación antes de distribuirla. Si deseas probar la aplicación sin firmarla, puedes utilizarlo para crear e instalar un token de depuración en el dispositivo de destino o en el simulador.

17 developer.blackberry.com/air/downloads/endofsupport/

Page 68: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

63BlackBerry 10

— Compilador onlineLa ventaja principal de la BlackBerry Packager para

aplicaciones de Android es que se puede utilizar para volver rápidamente a compilar tu aplicación para Android utilizando sólo tu navegador. Puedes probar la compatibilidad de la apli-cación, volver a compilarla como un archivo BAR compatible con BlackBerry Tablet OS o BlackBerry 10, y después firmarlo para que pueda ser distribuido a través de la tienda BlackBerry App World.

— Herramientas recompiladoras de línea de comandosUna de las principales ventajas de utilizar el BlackBerry

SDK para aplicaciones de Android es que se puede utilizar para recompilar múltiples aplicaciones Android desde el formato de archivo APK al formato de archivo BAR. Además, también puedes utilizar este conjunto de herramientas de línea de co-mandos para comprobar la compatibilidad de tus aplicaciones Android, firmarlas, crear tokens de depuración y un certificado de desarrollador.

Si deseas obtener más información acerca de cómo ejecutar aplicaciones Android en BB10, visita el sitio web18.

BlackBerry App GeneratorSi no eres un desarrollador, BlackBerry proporciona una manera fácil de generar una aplicación sencilla para BB10 con el BlackBerry App Generator19. Esa página web genera una aplicación basada en fuentes de información como

18 developer.blackberry.com/android

19 blackberryappgenerator.com/blackberry/

Page 69: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

6463 BlackBerry 10

— RSS feeds — Tumbler — Facebook — YouTube — Flickr

y otras. Genera una aplicación master-detail que se puede personalizar con un logotipo y una selección de colores. Para una aplicación de noticias sencilla este enfoque es totalmente correcto, pero no esperes obras maestras tipo CNN.

Testeo

BlackBerry continúa proporcionando un simulador para teléfo-nos BB10 como una descarga independiente20. Este simulador permite ejecutar una aplicación en un PC/Mac/Linux de la misma manera que se ejecutaría en un dispositivo BlackBerry real. Para asistirte en tus pruebas, el simulador viene con una aplicación llamada controller. Esta utilidad te permite simular cosas tales como el nivel de la batería, la posición GPS, NFC o la inclinación del dispositivo y, por lo tanto, comprobar cómo reacciona tu aplicación en escenarios reales.

Firma

Muchas clases y características de la plataforma de nivel de seguridad crítico (por ejemplo, la creación de redes o APIs de archivo) requieren que la aplicación esté firmada para que el desarrollador pueda ser identificado. Este último paso en el desarrollo de una aplicación para BlackBerry a menudo es difícil.

20 developer.blackberry.com/devzone/develop/simulator/

Page 70: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

65BlackBerry 10

Si quieres probar tu aplicación sin firmar en un dispositivo físico, es necesario solicitar un archivo llamado token de depuración. Esta token permite a un dispositivo específico BB10 ejecutar aplicaciones sin firmar. Para realizar este procedimiento de configuración necesitas solicitar un archivo de firma (cliente-PBDT-xxxxx.csj) a través del BlackBerry Orden Key Form21. Después de recibir el archivo por email podrás instalar un token de depuración con las herramientas de línea de comandos. Después de realizar esta configuración, también podrás ejecutar aplicaciones sin firmar en tu dispositivo. Ten en cuenta que esto requiere ser hecho en cada dispositivo por separado.

Si quieres publicar tu aplicación en BlackBerry App World también necesitas una clave de firma, que se solicitan a través del BlackBerry Orden Key Form22. Para ayudarte con este proceso de configuración, BlackBerry ofrece una guía paso a paso en esta página web23 que te guiará en el proceso.

21 www.blackberry.com/SignedKeys/codesigning.html

22 www.blackberry.com/SignedKeys/codesigning.html

23 developer.blackberry.com/CodeSigningHelp/codesignhelp.html

Page 71: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

66BlackBerry 10

Distribución

Al igual que con todas las versiones anteriores del sistema operativo de BlackBerry, las aplicaciones para BB10 se distribuyen a través de BlackBerry App World24. La necesaria cuenta de proveedor se puede crear en el Portal de Proveedores para BlackBerry World25.

En el caso de aplicaciones de pago, los desarrolladores obtener una participación en los ingresos del 70%.

La otra opción es una distribución corporativa. Esto te permite lanzar una aplicación interna en tu organización en lugar de ponerla a disposición pública para cualquier usuario, lo cual es adecuado para aplicaciones B2B. Si deseas obtener más información acerca de la distribución corporativa, por favor visita el sitio web dedicado26.

24 appworld.blackberry.com/

25 appworld.blackberry.com/isvportal

26 developer.blackberry.com/distribute/enterprise_application_distribution.html

Page 72: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

67BlackBerry 10

Page 73: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

68Firefox OS

Firefox OS

El Ecosistema

¿Necesitamos otro sistema operativo para móviles? La Fundación Mozilla pensó que sí y desarrolló Firefox OS1, un sistema operativo de código abierto basado en Linux enfocado a teléfonos de gama media. Su primera versión fue publicada en febrero de 2013.

Seis meses después se lanzó el primer dispositivo Firefox OS disponible para el mercado de masas, el ZTE Open, que se comercializa al precio de 80 dólares americanos y fue promocionado en mercados emergentes. Con el lanzamiento de One Touch Fire de Alcatel en Alemania, Firefox OS entró oficialmente en el mercado europeo en octubre del 2013. El precio de lanzamiento fue de 90 euros. En diciembre de 2014, Mozilla y KDDI lanzaron en Japón el primer dispositivo basado en Firefox 2.02, publicitado como el primer teléfono de gama alta con Firefox OS.

Las aplicaciones Firefox están basadas en HTML pero, en vez de empaquetar aplicaciones web en HTML5 con herramientas como Phonegap, Firefox OS utiliza HTML/JavaScript/CSS como lenguajes nativos de desarrollo. Esto significa que es bastante fácil para un desarrollador web comenzar a escribir aplicaciones nativas para ése sistema. En ese sentido, necesitarás conocer la API de JavaScript que provee Firefox OS y aprender cómo se empaquetan las aplicaciones.

1 mozilla.org/firefox/os

2 blog.mozilla.org/press/2014/12/mozilla-and-kddi-launch-first-firefox-os-smartphone-in-japan-4

Page 74: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

69Firefox OS

Firefox OS consiste básicamente en tres componentes principales:

— Gonk: El kernel de bajo nivel de Linux y la capa de abstracción de hardware (HAL). En teoría, un comercializa-dor de hardware sólo necesita portar el Gonk a su hardware para hacerlo compatible con Firefox OS.

— Gecko: El runtime de aplicación. Gecko parsea, ejecuta y renderiza HTML, JavaScript and CSS. Todos los accesos al hardware necesarios para proveer a la aplicación de funcionalidad son gestionados por este runtime. Incluye un paquete de red, paquete gráfico, motor de diseño, máquina virtual (para JavaScript) y capas de portabilidad.

— Gaia3: Es la interfaz de usuario, escrita en HTML, CSS y JavaScript. Gaia provee de todos los elementos de interfaz de usuario necesarios para operaciones estándar. Se comunica con el sistema operativo a través de las Open Web APIs.

Desarrollo

Hay dos maneras de crear una aplicación para Firefox OS: Aplicaciones alojadas y aplicaciones empaquetadas. En ambos casos es necesario escribir el código en HTML, CSS y JavaScript. Las aplicaciones alojadas son, básicamente, un sitio web. Son fácilmente actualizables, pero a menudo tienen acceso limitado a la web API y necesitan conexión a Internet. Las aplicaciones empaquetadas se ejecutan localmente y son,

3 github.com/mozilla-b2g/gaia github.com/mozilla-b2g/gaia github.com/mozilla-b2g/gaia

Page 75: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

7069 Firefox OS

esencialmente, un archivo ZIP que contiene todos los archivos de la aplicación.

Al contrario que las webapps estándares, las aplicaciones en Firefox OS necesitan un manifiesto4. Se trata de metadatos para tu aplicación que indican su nombre, descripción, iconos e información adicional.

Éste es el contenido mínimo que debe tener un manifiesto:

{ "name":"Hola mundo", "description":"Una app más...", "launch_path":"/index.html", "icons":{ "128":"icon.png" }, "developer":{ "name":"Tu nombre", "url": "http://..." }, "default_locale":"en"}

La WebAPI de Firefox5 ofrece acceso a: vibración, geolocal-ización, estado de la batería, alarma, IndexedDB, sensor de proximidad, sensor de luz ambiente y un archivo. Utilizando la API puedes, por ejemplo, acceder al estado de la batería sim-plemente realizando la llamada navigator.battery.level en JavaScript.

Si necesitas más funcionalidades de las que la WebAPI ofrece, puedes usar Activities. Mozila usa el objeto MozActivity, similar a cómo Android utiliza Intents: se le preguntará al usuario qué aplicación quiere utilizar para realizar una cierta tarea.

4 developer.mozilla.org/en-US/docs/Web/Apps/Manifest

5 wiki.mozilla.org/WebAPI

Page 76: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

71Firefox OS

A continuación, un ejemplo de cómo crear un SMS:

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

Y otro de cómo acceder a la galería de imágenes:

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

Simulación y Testeo

Mozilla provee de un simulador para Firefox OS descargable como un plugin de navegador web6. Firefox OS 1.2 introdujo el App Manager7. Ésta nueva herramienta de desarrollo permite testear código y proporciona más asistentes de GUI, tales como el editor de manifiesto. Aún así, es muy recomendable no confiar ciegamente en el simulador: por ejemplo, dispone de mucha más RAM que un dispositivo Firefox real.

6 addons.mozilla.org/en-us/firefox/addon/firefox-os-simulator/

7 developer.mozilla.org/en-US/Firefox_OS/Using_the_App_Manager

Page 77: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

7271 Firefox OS

Distribución

Mozilla ha creado una AppStore global llamada Marketplace8. Tu aplicación será revisada conforme a las directrices de Mozilla9. Una vez esté publicada, obtendrás un 70% de los beneficios que genere.

Aprende más

Tu recurso principal para conocer más acerca de cómo desarrol-lar para Firefox OS será la red Mozilla Developer10. Una breve introducción, que incluye tutoriales en vídeo acerca de como comenzar está disponible en11. André Fiedler también ofrece información esclarecedora para los no-iniciados en su present-ación de Slideshare 'Doing mobile web Apps for Firefox OS - the right way'12. Para finalizar, el desarrollador y evangelista en Mozilla Chris Heilmann aporta mucha información en su blog13.

8 marketplace.firefox.com

9 developer.mozilla.org/en-US/docs/Web/Apps/Publishing/Marketplace_review_criteria

10 developer.mozilla.org

11 marketplace.firefox.com/developers/docs/quick_start

12 slideshare.net/andrefiedler1/doing-mobile-web-apps-for-firefox-os-the-right-way

13 hacks.mozilla.org/author/cheilmann

Page 78: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES
Page 79: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

74iOS

iOS

El Ecosistema

Desarrollar para iOS se ha vuelto más popular que nunca. En el verano de 2014, Tim Cook, CEO de Apple, declaró que en la actualidad hay 9 millones de desarrolladores de iOS registrados, un aumento del 47% respecto al año anterior1. En enero de 2015, Apple anunció que 1,4 millones de aplicaciones están disponibles en iOS y que la facturación de aplicaciones aumentó otro 50 por ciento en un año: El total de ingresos por aplicaciones iOS en 2014 suma 10 mil millones de dólares, lo que significa que los desarrolladores iOS han ganado un acumulado de 25 mil millones de dólares utilizando la Apple AppStore2.

Una pregunta habitual es por dónde empezar para con-vertirse en un desarrollador iOS. En este capítulo mostrará lo que se requiere para configurar un entorno de desarrollo y algunas de las diferentes opciones disponibles para escribir aplicaciones. También dará sugerencias sobre recursos para ayudar a desarrollar tus habilidades en el menor tiempo posible. El capítulo termina con unas palabras de consejo importantes para poder convertirte en un miembro del ecosistema de desarrolladores iOS.

1 techcrunch.com/2014/06/02/itunes-app-store-now-has-1-2-million-apps-has-seen-75-billion-downloads-to-date

2 apple.com/pr/library/2015 /01/08App-Store-Rings-in-2015-with-New-Records.html

Page 80: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

75iOS

Nacimiento de un Sistema Operativo MóvilEl 9 de enero del 2007, Steve Jobs presentó una nueva categoría de producto para la entonces empresa de ordenadores y dispositivos musicales. Seis años después, el New York Times informó de lo que no se había sabido durante tal anuncio: el día antes de la demostración Jobs aún no podía realizarla de inicio a fin en un iPhone (sólo existían alrededor de 100), "rechazaba llamadas al azar, perdía la conexión a Internet, se bloqueaba o simplemente apagaba"3. Pero cuando llegó el momento de la keynote Jobs la realizó magistralmente, y el resto es historia.

Con el lanzamiento del iPhone, Apple dio a conocer un nuevo sistema operativo para utilizar el dispositivo. Su nombre original era iPhone OS ya que el iPhone fue el único dispositivo que podía ejecutarlo. En noviembre del 2010, con el lanzamiento de la cuarta generación del sistema operativo, Apple cambió el nombre a iOS para coincidir con el lanzamiento del primer iPad. Esta versión fue nombrada iOS4 y desde entonces se ha lanzado una nueva versión cada año, culminando en la versión actual, iOS8, que salió al mercado en septiembre de 2014.

Mientras que iOS7 fue promocionado como una nueva inter-faz de usuario, iOS8 se ha centrado en los nuevos entornos y servicios, así como en el último modelo de dispositivo, Apple Watch. Una mayor integración con dispositivos iOS y Mac en Yosemite permite a los usuarios iniciar tareas, como la creación de correos electrónicos, en un dispositivo y acabarlas en otro a través de Handoff. Algunos de los nuevos entornos son HealthKit que permite a los usuarios gestionar la información relacionada con su salud, HomeKit para la comunicación y el

3 www.nytimes.com/2013/10/06/magazine/and- entonces-steve-dijo-let-no-ser-un-iphone.html

Page 81: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

7675 iOS

control de dispositivos en el hogar, y CloudKit que proporciona un canal para mover datos entre una aplicación e iCloud. Esto es un mero esbozo de todos los nuevos entornos y APIs disponibles en iOS8. Para obtener una lista completa, lee "What's New in iOS" en la iOS Developer Library de Apple4.

Base Instalada de iOSAdemás de vender más de 800 millones de dispositivos iOS, un plus a favor de Apple es la alta tasa de adopción de cada versión de iOS poco después de su lanzamiento. Esto permite a los desarrolladores centrarse en la versión más reciente como un objetivo de desarrollo y no se preocupan soportar una gran cantidad de dispositivos en versiones anteriores, lo cual ha sido un reto para los desarrolladores Android. Tres semanas después del lanzamiento de iOS 8, Apple anunció que había sido adoptado por el 48% de todos los dispositivos iOS5, con un 46% en iOS7, dejando sólo un 6 % de los dispositivos con una versión anterior de iOS. Esto contrasta con la versión de KitKat, el sistema operativo de Android, que necesitó más de un año para alcanzar el 34% de los dispositivos Android6.

Dispositivos Ejecutando iOSEn lugar de enumerar todos los dispositivos iOS que Apple ha creado, aquí están los dispositivos actuales que soportan iOS 7 y 8, ya que son en los que un nuevo desarrollador debería centrarse. iOS 8 es compatible con todos los dispositivos, excepto el iPhone 4:

4 developer.apple.com/library/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS8

5 www.cnet.com/news/apples-ios-8-1-hits-monday-with-apple-pay-icloud-photo-library

6 developer.android.com/about/dashboards

Page 82: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

77iOS

— iPhone - 4, 4S, 5, 5C, 5S, 6, 6 Plus — iPod Touch - quinta generación, pantalla de 4” — iPad - segunda a cuarta generaciones, Air, Air 2 — iPad Mini - primera generación, Mini 2, Mini 3 — Apple TV (SDK sólo disponible para desarrolladores de

terceros) — Apple Watch

Encontrarás una lista detallada de los dispositivos iOS, sus capacidades y las versiones de iOS compatibles en Wikipedia7.

Fundamentos de las Aplicaciones iOSComo la mayoría de los sistemas operativos, la arquitectura iOS se define por capas de tecnologías para permitir que tu aplicación se ejecute en un dispositivo sin comunicarse directamente a nivel de hardware (ver figura). Estas tecnologías se pueden pensar en capas o interfaces que están em-paquetadas como entornos que el desarrollador puede imoprtar a sus proyectos de iOS. El entorno principal se llama Cocoa Touch.

7 en.wikipedia.org/wiki/List_of_iOS_devices

Core Service

Core OS

Media

Cocoa Touch

Page 83: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

7877 iOS

Cocoa TouchAunque OSX e iOS son diferentes sistemas operativos, com-parten mucho en común en términos de entornos, herramientas de desarrollo, y patrones de diseño.

Apple potenció y amplió el entorno principal para el desarrollo de aplicaciones de OSX, Cocoa, y ha añadido soporte para las características únicas de iOS como los gestos táctiles, bautizándolo como Cocoa Touch. En Cocoa Touch se incluyen entornos para construir interfaces, sensores como el aceleró-metro y la gestión de redes y datos.

La App StoreEl método principal para el despliegue de aplicaciones es la App Store. Cada aplicación presentada es revisado por el equipo de Apple para garantizar que se cumplen los requisitos y normas de la compañía. Esta es una diferencia importante re-specto a la tienda de Google Play para aplicaciones de Android, pues Google no revisa las aplicaciones, pero se asegura de que el código está firmado.

Apple es muy estricta respecto a cómo las aplicaciones de terceros se ejecutan en iOS y utiliza la técnica de Sandbox para garantizar la seguridad de las mismas y evitar que código malicioso o con errores comprometa el sistema operativo, otras aplicaciones o el dispositivo. Piensa en un Sandbox como una barrera virtual alrededor de la aplicación que define a qué los recursos puede acceder la aplicación. Por ejemplo, una aplicación no tiene acceso a los directorios de archivos o re-cursos del sistema de otra aplicación que no sean accesible vía entornos del SDK. Apple ha dado más control al usuario para conceder acceso a sus datos (es decir, contactos, calendarios, fotos) y localización GPS. Los desarrolladores deben prepararse para los casos en que el usuario ha denegado su permiso.

Page 84: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

79iOS

Getting Started with iOS Development

Las aplicaciones móviles se clasifican comúnmente como "na-tiva" "mobile web" o "híbrida". En general, una aplicación iOS nativa se construye utilizando la plataforma de Apple, mientras que una aplicación híbrida utiliza una plataforma de terceros como Xamarin, Appcelerator o Phone Gap. Estas plataformas tratan de hacer posible el desarrollo para múltiples plataformas móviles utilizando un único lenguaje y conjunto de herramien-tas. Aplicaciones web móviles suelen utilizar estándares HTML5 para crear algo que aparente ser una aplicación nativa, pero ejecutable en el navegador web del dispositivo.

Junto con el SDK para desarrollar en iOS, Apple también ofrece un entorno de desarrollo integrado (IDE) llamado Xcode, para programar tanto para iOS como para OSX. Como Xcode ha evolucionado, Apple se ha esforzado en proporcionar todas las herramientas necesarias para escribir, probar, testear el rendimiento y lanzar aplicaciones en la App Store, todo directamente desde Xcode.

XcodeApple lanzó Xcode en 2003 para escribir aplicaciones en OSX. La versión 3 de Xcode soportó el primer iPhone SDK en 2008, y la versión más reciente es Xcode 6, lanzado con iOS 8 en sep-tiembre del 2014. Xcode es un entorno de desarrollo, pruebas de rendimiento y herramientas de medición utilizados durante todo el ciclo de vida de desarrollo de aplicaciones. Interface Builder es una herramienta de diseño visual utilizada para diseñar y estructurar vistas de la aplicación sin necesidad de escribir código y se integra con Xcode. También se proporciona un simulador de iOS para permitir a los desarrolladores probar sus aplicaciones en todos los dispositivos actuales sin tener que instalar las aplicaciones en los dispositivos físicos.

Page 85: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

8079 iOS

Interface BuilderUna discusión acalorada entre los desarrolladores iOS es si es mejor utilizar el Interface Builder para diseñar visualmente el flujo de interfaz de usuario y la aplicación o llevar a cabo todo de forma manual con el código. En el pasado, esto podía ser una preferencia personal, pero con nuevos dispositivos y tamaños de pantalla como el Apple Watch y iPhone 6, Interface Builder resulta cada vez más necesario. Una de las principales diferencias entre iOS y Android era precisamente no tener que desarrollar para muchos tipos de dispositivos y tamaños de pantalla. Sin embargo, esta frontera es cada vez más borrosa con iOS8 soportando cinco tamaños diferentes de pantalla. En lugar de soportar los 5 por separado en sus aplicaciones, Interface Builder utiliza conceptos tales como Auto-Layout y Adaptive Layout para ayudar al desarrollador a ser compatible con todos los tamaños de pantalla. Con cada nueva versión de Xcode, Interface Builder también ha mejorado por lo que es evidente que Apple prefiere que los desarrolla-dores lo aprovechen; algo que un nuevo desarrollador iOS debe tener en cuenta.

Objective CObjective C tiene sus orígenes en el sistema operativo NeXTSTEP, desarrollado en la década de 1980, de donde se derivan OSX e iOS. Es un lenguaje de programación orientado a objetos que agrega mensajería al lenguaje de programación C8. De hecho, C y C ++ se pueden escribir junto a Objective C y algunos de los entornos de iOS simplemente proporcionan una API para C. Sin embargo, ha sido criticado por tener una sintaxis peculiar con una gran cantidad de asteriscos, arrobas y corchetes, que conduce a una curva de aprendizaje peor

8 en.wikipedia.org/wiki/Objective-C

Page 86: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

81iOS

para desarrolladores procedentes de lenguajes más modernos como Java o C#. Han habido mejoras incrementales en los últimos años, incluyendo la notación de puntos de los objetos, bloques, literales y gestión de la memoria a través de Auto-matic Reference Counting (ARC). Pero la necesidad de utilizar punteros, archivos de cabecera y las limitaciones y riesgos del lenguaje C han hecho que Apple llegue a la conclusión de que es necesario un lenguaje más moderno.

SwiftEn julio de 2010 Chris Lattner, Director y Arquitecto Senior en el Departamento de Herramientas de Desarrollo de Apple, comenzó a implementar la estructura básica de un nuevo lenguaje de programación cuya existencia sólo unas pocas personas conocían. Se convirtió en un foco importante para el grupo de herramientas para desarrolladores de Apple en julio de 2013 y, casi un año después, Apple anunció en la World Wide Developer Conference (WWDC) un nuevo lenguaje de programación para iOS y OSX llamado Swift. Lattner admite que Swift está influenciado por otros lenguajes como C #, Ruby, Haskell, Python y muchos otros9

La razón de que Apple considerara necesario crear Swift fue que la sintaxis de ese lenguaje moderno es más concisa y fácil de aprender para los nuevos desarrolladores de iOS, incluy-endo características nuevas como tipos inferidos de datos, declaraciones de estructuras de datos, tuplas, cierres, punto y coma opcionales y la ausencia de punteros. Se ha sugerido que el apoyo de Apple para Swift es para asegurarse de que los desarrolladores de iOS permanecen interesados en herramientas de Apple y no estén tentados de usar otras plataformas que soportan lenguajes modernos para el desarrollo de iOS.

9 nondot.org/sabre

Page 87: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

8281 iOS

Herramientas de Rendimiento y TesteoAdemás de proporcionar las herramientas para desarrollar aplicaciones iOS, Xcode también proporciona herramientas para monitorizaje y pruebas de rendimiento.

InstrumentosInstrumentos permite a los desarrolladores recoger datos

sobre el rendimiento y el comportamiento de sus aplicaciones iOS durante un periodo de tiempo. Algunas de las plantillas comunes ofrecidas permiten a los desarrolladores rastrear fugas de memoria, o detectar "puntos calientes" en la aplicación utilizando un depurador. El instrumento de automatización se utiliza para automatizar las pruebas de interfaz de usuario de tu aplicación iOS a través de scripts de prueba escritos por el desarrollador. Estos scripts se ejecutan fuera de la aplicación y simulan la interacción del usuario llamando a la API UI Automation. Se pueden ejecutar en un dispositivo o simulador.

XC Test FrameworkXCTest es el entorno de pruebas integrado con Xcode para

proporcionar pruebas extensas de una manera organizada y eficiente. Por defecto, los nuevos proyectos creados en Xcode utilizando una de las plantillas de aplicaciones añadirán un objetivo de testeo para el proyecto. Esto permite al desarrolla-dor escribir sus propias clases de pruebas unitarias, ejecutarlas y analizar los resultados utilizando el navegador de pruebas, todo desde Xcode.

Preparando el Entorno de DesarrolloDespués de crear una cuenta de desarrollador gratuita en developer.apple.com, recibirás autorización para descargar Xcode, código de ejemplo, videos y documentación. Los req-uisitos para que todas las herramientas Xcode son un sistema operativo Mac X 10.8 (Mountain Lion) y el SDK de iOS. Esta configuración permitirá la creación y prueba de aplicaciones

Page 88: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

iOS que se puedan ejecutar en el simulador de iOS. Para enviar aplicaciones a la App Store debes actualizar la cuenta de desarrollador con un pago de 99 dólares al año, lo que también te da acceso a las versiones betas de las futuras versiones de Xcode e iOS.

Recursos de Aprendizaje

La popularidad de los desarrolladores del ecosistema de Apple también incluye una multitud de recursos de aprendizaje en diferentes formatos para ayudar a un nuevo desarrollador a empezar a programar para iOS, y muchos de ellos son gratuitos. Al tomar ventaja de estos recursos y otros como ellos la curva de aprendizaje del dominio del avance de iOS se optimizará considerablemente.

Websites y Blogs

— Developer.Apple.com contiene guías de referencia y de programación completas para aprender a desarrollar aplica-ciones iOS y una referencia de clases de todas las clases en entornos públicos. La página web de la biblioteca está or-ganizada por tipos de recursos, Temas, Estructuras y ofrece un buscador. Un documento importante para leer antes de diseñar tu primera aplicación es el iOS Human Interface Guidelines10. Ofrece recomendaciones para desarrolladores, aprobadas por Apple, sobre el diseño de aplicaciones para asegurar una experiencia de usuario positiva. La violación de estas recomendaciones sería, con toda probabilidad,

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

Page 89: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

84iOS

causa de que tu aplicación fuera rechazado por la App Store durante su revisión para publicación.

— RayWenderlich.com se ha convertido en un sitio esencial de tutoriales iOS gratuitos escritos por la comunidad de desarrolladores con el objetivo de ser "para tratar los temas más interesantes y complejos para que todos puedan aprender - y que todos podamos hacer aplicaciones increíbles." El sitio se ha expandido y ofrecer libros de programación y tutoriales en vídeo (con una suscripción de pago). Suscríbete a su podcast semanal para las últimas noticias relevantes para desarrolladores y entrevistas con líderes de la comunidad de desarrolladores iOS.

— iOS.devtools.me es una página web creada por Adam Swinden que se actualiza diariamente con las mejores herramientas para desarrolladores iOS y back-end de servicios para ayudar en el desarrollo de aplicaciones. El contenido está organizado por categorías (es decir, diseño, gráficos, depuración...), por popularidad, y por novedad. También se proporciona un boletín semanal de los últimos conteidos en el sitio.

— iOSDevWeekly.com es una revisión semanal de los mejores recursos online de desarrollo iOS. David Verwer opera el sitio y ofrece un boletín electrónico publicado todos los viernes.

— Galloway.me.uk, un blog del desarrollador iOS y au-tor Matt Galloway, afincado en Londres. Su "Effective Objective-C 2.0"11 es muy recomendable si estás listo para comenzar a aprender características avanzadas y quieres consejos sobre ese lenguaje.

11 available via www.amazon.com/Effective-Objective-C-2-0-Specific-Development/dp/0321917014

Page 90: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

85iOS

— Merowing.info es un blog del desarrollador, formador y conferenciante Krzysztog Zablocki, que ofrece tutoriales e información sobre el desarrollo en iOS a raíz de su experi-encia como consultor. También es activo en la comunidad de código abierto, creando herramientas y librerías para desarrolladores iOS.

— AshFurrow.com es otro popular blogger y desarrollador iOS, que orgullosamente plantea que el objetivo de su blog es "explorar los puntos de dolor de iOS". Es autor de varios libros de desarrollo de iOS, y un conferenciante activo involucrado en la comunidad de código abierto.

Formación con Vídeos OnlineComo miembro del Programa para Desarrolladores de Apple, tienes acceso gratuito a todos los vídeos de la World Wide Developer Conference, código fuente y presentaciones, dis-ponibles para descargar y transmitir a través del sitio web o la aplicación WWDC iOS de los últimos años. Por lo general, Apple publica los videos el día después de la presentación, cuando antes se necesitaban semanas para para poder acceder tras de la conferencia anual.

Lynda.com actualmente ofrece más de 30 cursos en vídeo vía subscripción sobre la iniciación al desarrollo iOS, incluidos cursos para iOS8. El código fuente de los proyectos está disponible para descargar en función del nivel de suscripción elegido. También tienen una aplicación gratuita en la App Store para ver vídeos en dispositivos iOS.

Un recurso gratuito popular para la formación de vídeo lo ofrece la iTunes University como curso semestre, impartido por la Universidad de Stanford, como iniciación al desarrollo para iOS. Las conferencias se sumergen en profundidad en el len-guaje Objective-C y los entornos de iOS. Los alumnos pueden

Page 91: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

8685 iOS

incluso descargar los ejercicios de desarrollo. Los vídeos se ven a través de iTunes o la aplicación iTunesU en dispositivos iOS

Por último, YouTube tiene un buen número de videos gratis para el aprendizaje de desarrollo iOS, incluyendo a channel created by Mohammad Azam12 que indexa varios tutoriales para iOS.

Lista de Usuarios Avanzados de iOS en TwitterAlgunos de los más expertos desarrolladores de iOS están activos en Twitter y aportan una gran comprensión sobre las últimas tendencias y debates sobre el desarrollo de aplica-ciones, además de ser de gran ayuda para aclarar dudas de desarrolladores. Es recomendable seguir e interactuar con:

— @rwenderlich - creador y Editor Jefe de RayWenderlich.com — @nicklockwood - autor de iOS Core Animation y especial-

izado en entornos y aplicaciones de código abierto — @NatashaTheRobot - autor de la newsletter semanal sobre

Swift "This Week in Swift"13 y contribuidor a la corriente de código abierto para iOS

— @tapbot_paul - fundador de tapbots.com y desarrollador de TweetBot App.

— @InvalidName - autor de varios libros, conferenciante y desarrollador

— @casademora - autor, conferenciante y desarrollador — @jaredsinclair - desarrollador de Unread y otras aplicacio-

nes

12 www.youtube.com/user/azamsharp

13 swiftnews.curated.co

Page 92: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

87iOS

— @Cocoanetics - desarrollador, formador y conferenciante — @mattjgalloway - autor y desarrollador — @azamsharp - desarrollador, autor, podcaster y creador del

canal de YouTube AzamSharp

Consideraciones Finales

Es un momento emocionante para ser parte de la comunidad de desarrolladores de iOS y esperamos que este capítulo sea de utilidad en la búsqueda de un punto de partida. Decir que las cosas cambian rápidamente es un eufemismo con todos los nuevos dispositivos, los entornos y los servicios que se han lanzado en los últimos años; pero no te dejes intimidar por la velocidad a la que la tecnología se mueve dentro del ecosistema de Apple. La mayor parte de los conceptos básicos en el desarrollo de una aplicación estándar se aplican ahora igual que como lo hicieron en las primeras versiones de iOS. Por suerte, hay un sinnúmero de recursos disponibles para empezar y hacer crecer tus habilidades de desarrollo en iOS, y la mayoría de ellos son gratuitos.

Cosas a considerar al crear tu aplicación iOS "Hola Mundo", y más allá:

— ¿Comenzar con Objective-C o lenguaje Swift? — ¿Tiene más sentido utilizar Interface Builder para diseñar

la interfaz o es mejor hacerlo en código? — Aunque el uso servicios de back-end como CloudKit facilita

el desarrollo, ¿me estoy enclaustrando demasiado en la arquitectura de Apple? ¿Podrían eso hacer que una versión en Android no puediera acceder a ese mismo back-end?

— ¿Cuáles son las desventajas del desarrollo de aplicaciones iOS fuera de Xcode (utilizando herramientas multiplata-

Page 93: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

8887 iOS

forma)? Es la comunidad de usuarios lo suficientemente grande como para encontrar respuestas a dudas? ¿Se mantienen sus productos al día con las últimas versiones de iOS?

— ¿Cómo es el entorno actual para ser un desarrollador indie para iOS a tiempo completo?

Las respuestas a estas preguntas están más allá del alcance de este capítulo, pero los recursos referidos pueden ayudarte a esquivar las dificultades en el desarrollo en iOS y ayudarte a avanzar más rápido el camino de ser un experimentado desar-rollador iOS. Buena suerte y bienvenido al club.

Page 94: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES
Page 95: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

90Java ME (J2ME)

Java ME (J2ME)

El Ecosistema

J2ME (oficialmente “Java ME”) es la plataforma de aplicaciones móviles más antigua que aún sigue estando ampliamente utilizada. J2ME está diseñada para funcionar principalmente en teléfonos de gama media, dominando este segmento del mercado. De todas maneras, esos teléfonos se están abandonando progresivamente en favor de smartphones con especificaciones básicas que ofrecen mejor hardware, APIs y opciones de monetización con un coste similar. Como conse-cuencia, la popularidad de J2ME ha caído significativamente en los últimos años. Entonces, ¿por qué querrías desarrollar para J2ME? Sobre todo por una razón: el alcance de mercado. A pesar de que el 72% de todos los teléfonos móviles producidos en el tercer trimestre del 2014 eran smartphones1, la mayoría de los teléfonos móviles en uso siguen siendo de gama media. Así que si tu modelo de negocio se basa en el acceso a tantos clientes potenciales como sea posible, J2ME podría ser una buena elección, especialmente si te diriges a mercados como algunos países de África o la India.

Sin embargo, si su modelo de negocio se basa en las ventas directas de tu aplicación, o si tu aplicación tiene que hacer uso de las funciones y hardware más avanzados, las plataformas para smartphones son la mejor opción.

1 counterpointresearch.com/marketmonitor2014q3

Page 96: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

91Java ME (J2ME)

Prerrequisitos

Para desarrollar una aplicación Java ME, necesitarás:

— El Java SDK2 y un IDE de tu elección, por ejemplo Eclipse Pulsar para Desarrolladores Móviles3, NetBeans4 con su plug-in Java ME o IntelliJ5. Los principiantes habitual-mente eligen NetBeans.

— Un emulador, como Wireless Toolkit6, el Micro Emulator7 o un SDK o emulador de un proveedor específico.

— Dependiendo de tu configuración, puedes necesitar un ofuscador como ProGuard8. Para desarrollos profesionales considera utilizar una herramientas como Maven9 o Ant10.

— Quizás te interese echarle un vistazo a J2ME Polish11, el framework de código abierto para desarrollar tu aplicación para varios dispositivos.

Completar la instalación y las instrucciones de configuración va más allá del alcance de esta guía, consulta la document-ación de las respectivas herramientas.

También puedes descargar y leer los JavaDocs para las tecnologías y APIs más importantes: puedes descargar la

2 oracle.com/technetwork/java/javame/downloads

3 eclipse.org

4 netbeans.org

5 jetbrains.com

6 oracle.com/technetwork/java/download-135801.html

7 code.google.com/p/microemu

8 proguard.sourceforge.net

9 maven.apache.org

10 ant.apache.org

11 j2mepolish.org

Page 97: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

9291 Java ME (J2ME)

mayoría de ellos desde www.jcp.org. Para APIs específicas del fabricante, la documentación suele estar disponible en la página web del vendedor, (por ejemplo, la de Nokia Asha12).

Implementación

La plataforma Java ME es bastante sencilla: comprende la Connected Limited Device Configuration (CLDC)13 y el Mobile Internet Device Profile (MIDP)14, y ambos son bastante fáciles de entender. Ellos forman la base de cualquier entorno J2ME y proporcionan un conjunto estandarizado de capacidades a todos los dispositivos J2ME. Dado que tanto CLDC y MIDP fueron diseñados hace una década, el conjunto predeterminado de las capacidades que ofrecen es rudimentario según los estándares actuales.

Los fabricantes pueden complementar estas rudimentarias capacidades mediante la implementación de diversas Java Specification Requests opcionales (JSR), por ejemplo el acceso a datos de usuario y el sistema de archivos (JSR 75), o soporte a GPS (JSR 179). Para una lista completa de JSRs relacionadas con el desarrollo de Java ME, visita el Java Community Process' Lista por JCP Technology15.

Es muy importante saber que los JSR que desees utilizar pueden no estar disponibles para todos los dispositivos, así que las capacidades disponibles en un dispositivo pueden no estar disponibles en otro.

12 developer.nokia.com/asha/documentation

13 java.sun.com/products/cldc/overview.html

14 java.sun.com/products/midp/overview.html

15 jcp.org/en/jsr/tech?listBy=1&listByType=platform

Page 98: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

93Java ME (J2ME)

Entorno de EjecuciónLas aplicaciones J2ME son llamados MIDlets. El ciclo de vida de un MIDlet es muy simple: sólo se puede iniciar, pausar y destruir. En la mayoría de dispositivos un MIDlet se pausa automáticamente cuando se minimiza, no se puede ejecutar en segundo plano. Los MIDlets también se pueden ejecutar aisladamente unos de otros y están muy limitados en su inter-acción con el sistema operativo subyacente. Estas capacidades están disponibles sólamente a traves de JSRs opcionales (por ejemplo, JSR 75) y APIs específicas de cada proveedor.

Creando Interfaces de UsuarioPuedes crear la interfaz de usuario de tu aplicación de varias formas:

1. Componente LCDUI de alto nivel: utilizas componentes estándares de la interfaz, tales como formularios y listas

2. Componentes LCDUI de bajo nivel: controlas manualmente cada píxel de tu interfaz utilizando funciones gráficas de bajo nivel

3. SVG: dibujas la interfaz en SVG y usas las APIs de JSR 22616 o JSR 28717

Además, algunos fabricantes ofrecen extensiones adicionales de interfaz de usuario. Por ejemplo, la última serie de teléfonos de Nokia (Nokia Asha) utiliza su propio paradigma de inter-faz18.

También existen herramientas que te pueden ayudar con el desarrollo de interfaces de usuario:

16 www.jcp.org/en/jsr/detail?id=226

17 jcp.org/en/jsr/detail?id=287

18 developer.nokia.com/asha/learning/ui

Page 99: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

9493 Java ME (J2ME)

1. J2ME Polish19: Esta herramienta separa el diseño en CSS y emplea HTML para la interfaz. Es compatible con el framework de alto nivel LCDUI

2. LWUIT20: Framework de interfaz inspirado en Swing3. Mewt21: Usa XML para definir la interfaz

La resolución de pantalla para Java ME varía desde los 176x208/220 hasta los 360x640, siendo la más popular 240x320. Gestionar tantas resoluciones diferentes puede ser un reto, pero utilizando las herramientas mencionadas puedes crear interfaces de usuario que escalen automáticamente. Crear UIs personalizadas para cada resolución es posible, pero no recomendable: consume gran cantidad de tiempo, es propenso a errores y elevado en costes.

El material gráfico debe estar optimizado siempre. Una herramienta gratuita excelente es PNGGauntlet22.

Testeado

Debido a la fragmentación de los dispositivos, probar las aplicaciones es vital. Ponlas a prueba en una combinación de dispositivos tan pronto y tan a menudo como sea posible. Algunos emuladores son bastante buenos, pero hay cosas que necesitan ser validadas en dispositivos reales. Fabricantes como Nokia23 y Samsung24 ofrecen acceso remoto de pago y a veces gratuito a algunos dispositivos seleccionados.

19 j2mepolish.org

20 lwuit.java.net/

21 mewt.sourceforge.net

22 pnggauntlet.com pnggauntlet.com

23 forum.nokia.com/rda

24 developer.samsung.com

Page 100: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

95Java ME (J2ME)

Testeado automáticoHay varios entornos de pruebas unitarias para Java ME, incluyendo J2MEUnit25, MoMEUnit26 y CLDC Unit27; herramien-tas avanzadas como JInjector28 aportan control sobre el código y validación de la interfaz de usuario.

Portar

En su esencia, Java ME es un conjunto de normas y especifi-caciones que, a veces, los comercializadores interpretan de manera diversa, lo cual produce todo tipo de errores y com-portamientos fuera del estándar. En las siguientes secciones describimos diferentes estrategias para portar tus aplicaciones a diferentes dispositivos y plataformas Java ME.

Mínimo Común DenominadorPuedes prevenir muchos problemas de portabilidad si limitas la funcionalidad de tu aplicación al mínimo común denominador. Esto normalmente implica CLDC 1.0 y MIDP 1.0, o CLDC 1.1 y MIDP 2.0 si sólo vas a publicar tu aplicación en los países/regiones más desarrollados.

Aunque ésta aproximación es adecuada para aplicaciones sencillas, para aquellas complejas no resulta el camino adecuado a seguir. En tal caso, es posible que quieras consid-erar el uso de Java Technology for the Wireless Industry (JTWI, JSR 185) o la Mobile Service Architecture (MSA, JSR 248) como base, pero deberás ser consciente de que éstas cuentan con menor soporte en el mercado.

25 j2meunit.sourceforge.net

26 momeunit.sourceforge.net

27 snapshot.pyx4me.com/pyx4me-cldcunit

28 www.code.google.com/p/jinjector

Page 101: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

9695 Java ME (J2ME)

Migrar FrameworksLos entornos enfocados a portabilidad pueden ayudarte a lidiar con la fragmentación, adaptando de forma automática tu aplicación a diferentes dispositivos y plataformas. Para conseguir esto, ofrecen librerías cliente en tiempo de ejecución y herramientas en tiempo de compilación (tales como cross compilers) muy fiables.

Los buenos entornos para portar te permiten usar código específico de plataformas y dispositivos en tus proyectos. En otras palabras: un buen entorno no oculta la fragmentación de dispositivos, sino que la hace más manejable.

Para Java ME, una de tus opciones es J2ME Polish de Enough Software29 (disponible bajo licencias comerciales y GPL Open Source). Portar desde C++ a Java ME también es posible con la herramienta de código abierto MoSync SDK30.

Para obtener más información acerca del desarrollo multi-plataforma y las herramientas disponibles, consulta el capítulo "Hacia Multiplataforma".

Firmado

El estándar de Java para dispositivos móviles diferencia entre las aplicaciones que han sido firmadas y las que no. Algunas funciones de los teléfonos están disponibles sólo para las aplicaciones de confianza.

Las aplicaciones firmadas por el fabricante de un dispositivo o un oeprador de telefonía disfrutan del nivel más alto de se-guridad y pueden acceder a todas las APIs de Java disponibles en el teléfono.

29 http://j2mepolish.org j2mepolish.org

30 http://mosync.com mosync.com

Page 102: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

97Java ME (J2ME)

Las aplicaciones firmadas por JavaVerified31, Verisign32 o Thawte33 están en el nivel más bajo de seguridad, y aquellas no firmadas están en el nivel más bajo.

Qué funcionalidades quedan afectadas y qué ocurre si la aplicación no está firmada depende principalmente de su implementación; más aún, no todos los teléfonos tienen todos los certificados raíz necesarios. El resultado es un buen lío, así que considera firmar tu aplicación sólo cuando sea necesario. En algunos casos una tienda de aplicaciones puede ofrecerse a firmar por ti, como es el caso de Nokia Store.

Otra opción es considerar el uso de un proveedor de servicios de certificación y pruebas, dejando la parte compleja para ellos. Intertek34 es probablemente el mayor proveedor de este tipo.

Distribución

Las tiendas de aplicaciones son probablemente la forma más eficiente de distribuir tus aplicaciones. Algunas de las tiendas más eficaces son:

— Mobile Rated35 es un proveedor de aplicaciones no dependiente de las operadoras.

— GetJar36 es uno de los distribuidores más antiguos de aplicaciones móviles, y no sólo Java.

31 javaverified.com

32 verisign.com

33 thawte.com

34 www.intertek.com/wireless-mobile

35 mobilerated.com

36 getjar.com

Page 103: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

9897 Java ME (J2ME)

— Opera Store37, reemplazará la tienda de Nokia, que será cerrada durante el 2015. La migración del contenido comenzó en Enero.

— Las operadoras también participan, tales como Orange38 y O239.

Se puede encontrar una lista de las tiendas de aplicaciones disponibles (no sólo las que venden aplicaciones J2ME) en el WIP App Store Catalogue40. Véase también el capítulo especial sobre tiendas de aplicaciones de esta guía para obtener más información.

Aprende Más

Si quieres aprender más sobre el desarrollo en Java ME, a continuación tienes algunos recursos que te pueden ayudar.

OnlineComo Java ME es una de las plataformas móviles más antiguas que todavía se utilizan, es fácil encontrar recursos relaciona-dos, 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

Page 104: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

99Java ME (J2ME)

LibrosCon el paso de los años se han llegado a escribir un buen número de libros de Java ME, por ejemplo:

— Beginning J2ME: From Novice to Professional por Jonathan Knudsen y Sing Li

— Pro Java Me Apps: Building Commercial Quality Java ME Apps por Ovidiu Iliescu

— Pro J2ME Polish: Open Source Wireless Java Tools Suite por Robert Virkus, sobre el desarrollo con J2ME Polish

— LWUIT 1.1 for Java ME Developers por Biswajit Sarkar, sobre el desarrollo con LWUIT

Desafortunadamente, debido a la decreciente popularidad de Java ME, muy pocos libros se han escrito sobre ella en los últimos años.

Page 105: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES
Page 106: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

101Tizen

Tizen

El Ecosistema

Tizen es un sistema operativo de código abierto basado en Linux y diseñado para ser ejecutado en smartphones, netbooks, smartwatches, sistemas de infotenimiento en vehículos (IVI) y otros dispositivos inteligentes. Se le puede considerar como el sucesor del Meego de Nokia /Intel, y del LiMo de Samsung; sistemas operativos anteriores también basados en Linux. Samsung también aprovechó Tizen para fusionar en él los restos del abandonado bada OS, aportando un entorno para aplicaciones nativas. Tizen, como marca de la Fundación Linux, fue anunciado por la Asociación Tizen en Diciembre del 2011, y la versión 1.0 (alias 'Larkspur') fue lanzada en Abril del 2012. Desde entonces, el sistema ha estado en desarrollo continuo, con Tizen 3.0 anunciado para el 2015. Los principales impul-sores de Tizen son Samsung para la rama móvil e Intel para el enfoque IVI. Algunas otras empresas participantes son Fujitsu, NTT Docomo, Huawei, Vodafone y Orange.

El primer dispositivo Tizen que ha sido comercializado es la cámara NX300M de Samsung. En el Mobile World Congress de febrero del 2014 Samsung lanzó nuevas versiones de sus smartwatches que utilizaban Tizen: Samsung Gear 2 y Gear 2 Neo. Casi un año más tarde, el primer smartphone Tizen se comercializó finalmente en la India y Samsung anunció que todos sus televisores inteligentes que se lancen durante el 2015 utilizarán Tizen.

Page 107: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

102Tizen

Desarrollo

El principal objetivo de Tizen es ser un sistema operativo estándar para aplicaciones escritas en HTML5, utilizado por el navegador web de Tizen, actualmente considerado la mejor implementación de HTML5 en un dispositivo móvil. Tizen tam-bién es compatible con aplicaciones nativas en C++, permitién-dote sacarle el máximo partido al hardware de los dispositivos. Ambos caminos de desarrollo están soportados por una gran variedad de frameworks y librerías populares, como JQuery, que suponen un buen punto de inicio para desarrollar tu primera aplicación Tizen.

Los desarrolladores de aplicaciones web pueden utilizar una lista completa de funcionaldiades HTML5, APIs de dispositivos Tizen y librerías (como JQuery y JQuery Mobile) para crear aplicaciones atractivas. Si ya has creado web apps con para bada, podrás usar la mayor parte del código en Tizen.

El SDK oficial de Tizen contiene un IDE basado en Eclipse que puede ser utilizado tanto para aplicaciones web como nativas. Los desarrolladores veteranos de bada reconocerán las bases de éste SDK: el SDK de Samsung bada. También tienes un editor de código, diseñador de interfaces y un emulador, todo listo para usar. Para las aplicaciones web también puedes usar el XDK de Intel, si lo prefieres.

Cambios en la versión 2.3Después de casi un año estancado, Tizen 2.3 fue lanzado en noviembre de 2014 y trajo diferencias sustanciales, especial-mente para los desarrolladores de aplicaciones nativas. Hasta entonces, los desarrolladores de aplicaciones construían apli-caciones en un marco de C ++ llamado OSP que ya fue utilizado por Samsung para su bada smartphones. Esto hacía que fuera fácil para los desarrolladores de bada portar sus aplicaciones

Page 108: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

103102 Tizen

a Tizen. En la versión 2.3 OSP ha desaparecido y los desarrol-ladores tienen que utilizar EFL para aplicaciones nativas. Hay rumores de que pronto se lanzará una librería de compatibili-dad 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 aplica-ciones web en la versión 2.3 es el uso de UTA (Tizen Advanced UI) en vez de jQuery (que todavía se puede utilizar se desea) y la posibilidad de que crear aplicaciones para smartphones y wearables con un solo SDK.

Testeando tu aplicación

Las mejoras pruebas son aquellas que realizan en un dis-positivo. En el momento de escribir estas líneas, tu única opción es conseguir uno de los pocos dispositivos de pruebas para Tizen de Samsung, el RD-PQ o el RD-210, pero es difícil conseguir tales dispositivos por lo que probablemente tengas que usar los simuladores y emuladores incluidos en el Tizen SDK mientras esperas al lanzamiento de los teléfonos Tizen en el mercado de masas. El simulador ofrece una aproximación sencilla al testeo de aplicaciones web, pero es limitado en funcionalidad y no puede ser comparado a las pruebas que se pueden realizar en un dispositivo real. El emulador está mucho más cerca de la experiencia real con el dispositivo y puede ser usado para testear aplicaciones nativas. Es una máquina virtual basada en QEMU y ejecutando una imagen de una instalación Tizen real.

Page 109: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

104Tizen

Para aquellos casos en los que un dispositivo real sea necesario, puedes usar el Samsung Remote Test Lab1. Los laboratorios están situados por todo el mundo y te dan la posibilidad de conectar de manera remota a dispositivos desde tu Tizen SDK.

Distribución

Las aplicaciones para Tizen se distribuyen en archivos de paquetes Tizen (*.tpk) y archivos de widgets (*.wgt) creados con el Tizen SDK. Los archivos son muy similares a los *.apk de Android y pueden ser instalados en un dispositivo Tizen simplemente abriéndolos en el explorador de archivos del dispositivo. El punto principal de distribución de aplicaciones será la TizenStore2.En contraste respecto a la Apple Appstore, Google Play Store y Microsoft Windows Phone Market, no necesitarás realizar ningún pago para convertirte en desarrol-lador registrado en la Seller Office3. Todas las aplicaciones pro-puestas para venta serán revisadas de acuerdo a las directrices de la Tizen Store. Normalmente, la certificación lleva entre 2 y 3 días, dependiendo de la complejidad de la aplicación.

Aprende Más

Como desarrollador, tu primera parada debería ser developer.tizen.org. Ese sitio aloja toda la documentación, herramientas y servicios de soporte para el desarrollo en Tizen. También podrás encontrar un foro con una comunidad de desarrolladores de aplicaciones muy activa y amigable.

1 developer.samsung.com/remotetestlab

2 www.tizenstore.com

3 seller.tizenstore.com

Page 110: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES
Page 111: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

106Windows

WindowsCon Windows 10, tanto las antiguas plataformas Windows Phone y Windows PC van a converger en un grado aún mayor, junto con una tienda de aplicaciones, las API para aplicaciones y herramientas universales universales. Con Windows 10 este modelo no sólo se extiende a teléfonos, tabletas y PCs, sino que también será capaz de incluir televisores a través de la Xbox Uno y dispositivos incrustados. Windows 10 ya está disponible como versión preliminar para desarrolladores y saldrá a la venta a mediados de 2015.

El Ecosistema

Microsoft cambió el ecosistema en el año 2014 al comprar la división Devices and Services de Nokia, incluyendo la línea de teléfonos Lumia. Microsoft también eliminó los costes de licencia asociados con la producción de teléfonos y pequeñas tabletas de Windows. Como resultado, se ha anunciado una nueva gama de dispositivos que serán lanzados al mercado por los comercializadores regionales. Es aún una incógnita si eso mejorará de manera sustancial la cuota de mercado de Windows. En 2014 la mejora fue mucho menor de lo que se esperaba, pero Microsoft fue capaz de mantener su segundo puesto después de Android en algunos países, entre ellos Italia y Argentina1. Windows también logró reducir la brecha en las aplicaciones; para agosto de 2014, había más de 300.000 aplicaciones disponibles2.

1 kantarworldpanel.com/global/smartphone-os-market-share

2 windowscentral.com/there-are-now-over-300000-windows-phone-apps-available

Page 112: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

107Windows

Algunos de los comercializadores de Windows Phone son: Microsoft, Samsung, Celkon Mobiles, Micromax, Lava Inter-national, Miia, Highscreen, Kazam, Blue, NGM, Yezz, Allview, Archos, HTC y otros.

Lenguages y Herramientas

El desarrollo para Windows se realiza en C/C++, C# o VB.NET utilizando Microsoft Visual Studio IDE3. Las aplicaciones se crean, habitualmente, utilizando la plataforma WinRT XAML, principalmente en aquellas basadas en eventos, y DirectX, para juegos basados en bucles de juego. Ambas tecnologías pueden ser utilizadas en una misma aplicación. Además, puedes crear aplicaciones HTML5 y JavaScript utilizando las correspondientes WinRT JavaScript APIs, aunque el desarrollo web no están incluido en este capítulo. Por último pero no menos importante, puedes crear aplicaciones Windows Phone sencillas sin programar utilizando Windows Phone App Studio4 o la aplicación Project Siena5.

Gracias a las bibliotecas de clases portables (PCL) y los componentes Windows Runtime puedes usar el lenguaje e interfaz que mejor encaje con cada módulo de tu aplicación.

Si quieres utilizar DirectX con C# deberás usar SharpDX.org, anxframework.codeplex.com o una librería para juegos basadas en las mismas, por ejemplo monogame.codeplex.com.

Aunque el escenario más habitual será emplear XAML para aplicaciones y DirectX para juegos, también puedes crear juegos en XAML y aplicaciones DirectX, dependiendo de tus necesidades, así como incluir Direct3D en tu aplicación

3 visualstudio.com

4 apps.windowsstore.com

5 microsoft.com/projectsiena

Page 113: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

108107

XAML; podrías utilizarlo para mostrar un modelo en 3D en una aplicación XAML, o crear atractivos menús con Silverlight en un juego creado en DirectX.

Históricamente, las aplicaciones para Windows Phone estaban creadas con Silverlight, un modelo de aplicaciones muy similar a la moderna aproximación XAML. Aunque las aplica-ciones basadas en WinRT son el futuro, Silverlight aún ofrece mayores opciones de integración con Windows Phone 8.1.

Paradigma de Diseño de MetroMicrosoft ha liderado el paradigma de diseño "flat", que también ha influenciado fuertemente a Android e iOS. Su característica más obvia es su interfaz única y fácil de usar, que se centra en tipografía y contenido. Este paradigma de interfaz de usuario llamado Metro, o Modern UI, o Microsoft Design Language6 se ha extendido a la Xbox y Windows 8, y contiene los siguientes principios:

— Content not Chrome elimina adornos innecesarios y permite que el contenido sea en sí mismo el foco principal principal de atención. También debes abstenerte de utilizar todos los píxeles disponibles, y tener en cuenta que los espacios en blanco dan equilibrio y énfasis al contenido.

— Alive in motion añade profundidad a un diseño plano con animaciones ricas.

— Typography is beautiful da protagonismo al uso de fuentes en Metro. La fuente Segoe de Windows Phone inspirada en Helvetica encaja con el enfoque moderno de la interfaz.

— Authentically digital el diseño no trata de imitar objetos del mundo real, sino que se centra en las interacciones disponibles para soluciones digitales.

6 wikipedia.org/wiki/Metro_(design_language)

Page 114: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

109Windows

Aunque Microsoft abandonó el nombre 'Metro' para su paradigma de diseño debido a problemas legales, los nombres alternativos como 'Modern UI' no han conseguido sustituirlo. Deberás aceptar los modernos principios de diseño Metro en tu aplicación, sobre todo cuando portes aplicaciones ya exis-tentes. Los diseñadores encontrarán inspiración e información en design.windows.com así como en design.windows.com. Un aspecto importante de la experiencia de usuario son los “live tiles”, pequeños widgets que residen en la pantalla de inicio. Puedes actualizarlos mediante programación o incluso remotamente mediante notificaciones push.

Integrarse en la Plataforma

La plataforma Windows Phone ofrece numerosas funcionali-dades, incluida la pantalla de bloqueo, la cartera móvil, y la ubicación. En el hardware se incluyen sensores, Bluetooth, y la detección de proximidad; y las aplicaciones pueden utilizar extensiones para incrustar la aplicación en la expe-riencia de Windows Phone. Obtendrás más información en msdn.microsoft.com/en-us/library/windows/apps/hh202969.

Las aplicaciones soportan las 'live tiles', mostrando información de manera arbitraria que puede ser actualizada vía mensajes push, y puedes usar aplicaciones de bloqueo de pantalla que controla la imagen en pantalla e integra control por voz tanto en Windows Phone como en Windows RT.

En las aplicaciones Windows Phone Silverlight puedes crear extensiones para la cámara, llamadas 'lenses'7 o integrar la her-

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

Page 115: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

110109 Windows

ramienta de búsqueda8. Podrás encontrar información detallada en la documentación de integración9.

En las aplicaciones universales hay contratos10 que ofrecen funcionalidades similares: puedes gestionar extensiones de archivo específicas, compartir contenidos, etc.

MVVMPara los desarrolladores de aplicaciones venidos de otras plataformas, el concepto de enlace de datos de XAML será una novedad. Para cada página debe haber un modelo de vista que incluya los datos de esa página. La vista en sí sólo describe la interfaz de usuario, mientras que los datos que se muestran proceden del modelo de vista. Las clases del modelo contienen los datos en sí. Éste concepto de un Modelo, una Vista y un Modelo de Vista (MVVM) facilita considerablemente el desar-rollo de aplicaciones complejas.

Motores de JuegoGracias a las capacidades de aplicaciones nativas existen varios motores de juego disponibles para Windows Phone 8 y Windows RT, por ejemplo:

— Cocos2d-x11

— Havok12

8 msdn.microsoft.com/library/windowsphone/develop/hh202957

9 msdn.microsoft.com/library/windowsphone/develop/hh202969

10 msdn.microsoft.com/library/windows/apps/hh464906

11 cocos2d-x.org/projects/cocos2d-x/wiki/Windows_Phone_8_Environment_Setup

12 havok.com/products/havok-windows-ecosystem

Page 116: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

111Windows

— Marmalade13

— OGRE14

— Unity 3D15

ServiciosHay disponibles notificaciones push16 que pueden actualizar los live tiles de tu aplicación. También puedes considerar el uso del espacio gratuito en nube OneDrive y la integración con otros servicios de Windows Live17 para tu aplicación. Hay disponibles también muchos servicios de terceros18.

Multitarea y Ciclo de Vida de la AplicaciónWindows tiene una capacidad limitada de multitarea que suspende las aplicaciones en segundo plano y permite el cambio rápido entre aplicaciones. Los únicos procesos que pueden ejecutarse en segundo plano, después de que una aplicación se haya abandonado, son la reproducción de audio, el seguimiento de la ubicación y la transferencia de archivos. Las aplicaciones también pueden programar la ejecución de código arbitrario en segundo plano en un intervalo (código que se conoce como agentes en segundo plano o Background Task). A dichas tareas se les permite el uso limitado de los recursos y pueden ser detenidos o ignorados si el sistema operativo determina que el teléfono debe conservar los recursos.

Las aplicaciones suspendidas en segundo plano pueden ser

13 madewithmarmalade.com/marmaladesdk/features/take-apps-windows-phone-8

14 ogre3d.org/2012/10/30/ogre-now-supports-windows-phone-8

15 unity3d.com/pages/windows

16 msdn.microsoft.com/library/windows/apps/xaml/hh913756

17 msdn.microsoft.com/live

18 dev.windowsphone.com/en-us/featured/partners

Page 117: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

112111 Windows

cerradas automáticamente si el sistema operativo determina que los recursos son necesarios en otro lugar.

Para crear la apariencia de una aplicación que nunca se cerró, Windows tiene un ciclo de vida de aplicaciones bien documentado19.

Testeo y Analíticas

Microsoft ofrece una excelente revisión del testeo de una aplicación Windows Phone 820 incluyendo tests a lo largo del procese de desarrollo. Las pruebas unitarias están integradas en Visual Studio, simplemente creando un proyecto nuevo de prueba unitaria y enlazándolo a los proyectos que te gustaría testear. MSDN incluye buena documentación del proceso21

Para desarrollos basados en comportamiento está disponible el Windows Phone Test Framework por Expensify22.

Hay varias opciones para los desarrolladores que deseen recopilar datos y analíticas en tiempo de ejecución. Flurry23 y Google Analytics24 proporcionan herramientas de análisis y ser-vicios compatibles con Windows. Los desarrolladores también pueden utilizar el servicio de Microsoft Application Insights service25. También hay disponibles sólidas herramientas de monitorizado de rendimiento en Visual Studio para controlarlo durante la fase de desarrollo.

19 msdn.microsoft.com/library/windows/apps/xaml/hh464925

20 msdn.microsoft.com/en-us/library/windows/apps/jj247547(v=vs.105).aspx

21 msdn.microsoft.com/en-us/library/windows/apps/dn168930(v=vs.105).aspx

22 github.com/Expensify/WindowsPhoneTestFramework/

23 flurry.com/flurry-analytics.html

24 googleanalyticssdk.codeplex.com

25 azure.microsoft.com/documentation/articles/app-insights-get-started

Page 118: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

113Windows

Distribución y Monetización

Distribuye tus aplicaciones a través de Windows Phone Store. Aunque el contenido de la aplicación es revisado y restringido de una manera similar a la App Store de Apple, Microsoft pro-porciona directrices más claras para la solicitud de publicación, disponibles en el Dev Center26. Aunque las herramientas de desarrollo se proporcionan de forma gratuita, se requiere una cuenta de pago para implementar una aplicación en dispositivos y distribuirla en Windows Store. Actualmente, una cuenta cuesta $19 (USD) en un pago único para desarrolladores en solitario, y $99 (USD) al año para empresas. Esas tarifas no se aplican a los estudiantes miembros del DreamSpark27. Windows Store también ofrece una distribución de betas por tiempo limitado y ofrece un hub corporativo para empresas28. Puedes utilizar el Windows Phone Store Test Kit29 para probar la aplicación en local antes de enviarla para su publicación.

Hay 128 tiendas regionales de Windows Phone App en 50 idiomas30, así que puedes tener un alcance global.

Los beneficios estandar para el desarrollador son del 70%, incrementable al 80% si tu aplicación supera los $25.000 (USD) en ventas. La Windows Store está disponible en más de 200 países y regiones y más de 100 idiomas, así que tienes un alcance global. Las aplicaciones son gestionadas por el usuario, no por el dispositivo, así que el usuario puede utilizarlas en una gran variedad de plataformas, por ejemplo un ordenador

26 dev.windows.com

27 www.dreamspark.com

28 msdn.microsoft.com/library/windowsphone/develop/jj206943

29 msdn.microsoft.com/library/windowsphone/develop/hh394032

30 kb.tethras.com/localizing-your-windows-phone-8-app/windows-phone-stores-and-supported-languages

Page 119: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

114113 Windows

de sobremesa o un tablet. Si creas una aplicación universal, puedes elegir si sólo necesitas que se adquiera una vez para todos los dispositivos, o una vez por cada dispositivo diferente del usuario.

Para aplicaciones de pago, el entorno Windows Phone ofrece la posibilidad de determinar si la aplicación está en 'modo de prueba' o no, y en consecuencia limitar su uso. Microsoft recomienda específicamente evitar la limitación por tiempo en las versiones de prueba (por ejemplo, una versión de prueba de treinta minutos) y, en cambio, sugiere limitar las funciones disponibles31.

Para la monetización basada en anuncios hay varias opciones. Microsoft tiene su propio Microsoft Advertising Ad Control32 (actualmente disponible en 18 países), mientras que Nokia33, Smaato34, Inneractive35, AdDuplex36 y Google37 ofrecen soluciones alternativas de publicidad. También puedes usar el servicio de Ad Mediation38 para seleccionar diferentes proveedores de publicidad según del precio máximo estipulado. Para obtener más información acerca de la monetización, consulta el capítulo sobre el tema en esta guía.

31 msdn.microsoft.com/library/windowsphone/develop/ff967558

32 advertising.microsoft.com/mobile-apps

33 www.developer.nokia.com/Distribute/NAX

34 smaato.com

35 inner-active.com

36 adduplex.com

37 developers.google.com/mobile-ads-sdk/

38 msdn.microsoft.com/library/windows/apps/xaml/dn864359

Page 120: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

115Windows

Aprende Más

Visita dev.windows.com para noticias, herramientas de desar-rollo y foros.

El equipo de desarrollo publica mensajes en su blog blogs.windows.com/buildingapps o en su cuenta de Twitter @wpdev. Para encontrar una gran colección de recursos para desarrolladores y diseñadores, visita windowsphonegeek.com y reddit.com/r/wpdev.

También puedes extender componentes y com-portamientos con varias herramientas tanto comer-ciales como de código abierto. Algunas populares son telerik.com, coding4fun.codeplex.com, cimbalino.org, mvvmlight.codeplex.com y github.com/MvvmCross/MvvmCross. Para la inspección del árbol visual, bindings y propiedades de las interfaces de usuario basados en XAML en tiempo de ejecución, está disponible xamlspy.com.

Microsoft provee una serie de videos para los recién iniciado en el desarrollo de aplicaciones Windows Phone 8.139

Asimismo, encontrarás código de ejemplo en code.msdn.microsoft.com/windowsapps, en varios proyec-tos de codeplex.com y en ejemplos disponibles en msdn.microsoft.com/library/windows/apps/br211375. La hoja de ruta para desarrolladores de apliaciones en msdn.microsoft.com/library/windows/apps/xaml/br229583 ofrece una buena visión global de estrategia, diseño y desar-rollo de aplicaciones para Windows.

Si estás portando una aplicación desde iOS o Android, puedes encontrar más ayuda en msdn.microsoft.com/library/windows/apps/dn751495.

39 microsoftvirtualacademy.com/training-courses/windows-phone-8-1-development-for-absolute-beginners

Page 121: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES
Page 122: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

117Hacia Multiplataforma

Hacia MultiplataformaTantas plataformas y tan poco tiempo: Esa frase define per-fectamente la situación que tenemos en el mundo móvil. Hay plataformas más que suficientes para elegir: Android, BlackBer-ry 10, Firefox OS, iOS, Tizen y Windows están, o probablemente estarán, entre algunas de las plataformas smartphone y tablets más importante, mientras Brew MP y Java ME dominan en el ámbito de los teléfonos de gama media (plataformas listadas no por importancia, sino por orden alfabético).

La mayoría de los promotores de aplicaciones, citando cierta famosa letra de una canción de Queen, le dirán al desarrol-lador: "Lo quiero todo, lo quiero todo, lo quiero todo... ¡y lo quiero ahora!", así que la elección puede muy bien estar entre invertir en múltiples equipos paralelos de desarrollo, o adoptar una estrategia multiplataforma.

Diferencias Clave Entre Plataformas Móviles

Si deseas hacer disponible tu aplicación a través de diferentes plataformas, tienes que superar algunos obstáculos. Ciertos retos son más fáciles de superar que otros:

Lenguajes de ProgramaciónA estas alturas ya te habrás dado cuenta de que las plataformas móviles publican sus propios SDK, lo que te permite desarrollar aplicaciones en los lenguajes de programación soportados por las plataformas.

Sin embargo, estos lenguajes tienden a pertenecer a alguna de las pocas familias de lenguajes raíz. La tabla siguiente

Page 123: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

118Hacia Multiplataforma

ofrece una descripción general de éstos y de las plataformas que los soportan:

Lenguaje Ciudadano de 1a Clase1 Ciudadano de 2a Clase2

ActionScript BlackBerry 10, BlackBerry PlayBook OS (QNX)

ninguno

C, C++ BlackBerry 10, Brew MP, Sailfish OS, Windows 10

Android (parcialmente, utilizando el NDK), iOS (parcialmente)

C# Windows 10 ninguno

Java Android, BlackBerry, dispositivos Java ME

ninguno

JavaScript BlackBerry PlayBook OS, Firefox OS, Tizen, Windows 10

BlackBerry (WebWorks), Nokia (WRT)

Objective-C iOS ninguno

Los frameworks multiplataforma pueden solventar las barreras de lenguaje de diferentes maneras:

— Tecnologías Web: Este enfoque se basa en que la mayoría de las plataformas ofrecen soporte directo a las tecnologías web a través de ‘webviews’ integradas en las aplicaciones nativas. Junto con HTML y CSS, esta aproxi-mación también admite JavaScript.

1 Soporte nativo en la plataforma, ya sea el idioma primario o uno específico para la creación de aplicaciones

2 Se admite como opción en la plataforma, se puede utilizar como alternativa al lenguaje nativo, pero no proporciona el mismo nivel de acceso a características de la plataforma

Page 124: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

119118 Hacia Multiplataforma

— Interpretación: El entorno ofrece un motor para cada plataforma que interpreta un lenguaje específico o un framework común. Por ejemplo, una opción popular para el desarrollo de juegos es Lua scripting.

— Compilación Cruzada: Es el santo grial de los frameworks multiplataforma, pero también la solución técnica más compleja. Permite escribir una aplicación en un lenguaje y transcribirla al lenguaje nativo de cada plataforma, obteniendo velocidad de ejecución nativa.

La mayoría de los frameworks también proporcionan un conjunto de APIs multiplataforma que permiten acceder de un modo común a determinadas funciones del dispositivo o plata-forma, como por ejemplo a las capacidades de geolocalización. Para funciones tales como mensajería SMS también puedes usar APIs de red que son independientes del dispositivo1.

Versiones de SOLas plataformas evolucionan y, tarde o temprano, ofrecerán características específicas de versión que desearás aprovechar. Esto añade otra capa de complejidad a tu aplicación y también un desafío para las herramientas multiplataforma: a veces se quedan atrás cuando una nueva versión del sistema operativo es publicada.

Interfaz de Usuario y UXUn obstáculo difícil para el enfoque de multiplataforma se origina por los diferentes patrones de interfaz de usuario y de experiencia de usuario que prevalecen en las plataformas individuales.

Es relativamente fácil crear una interfaz de usuario agrad-

1 www.developergarden.com/apis/

Page 125: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

120Hacia Multiplataforma

able que funcione de la misma manera en varias plataformas. Este enfoque, sin embargo, puede olvidar sutilezas importantes que sólo están disponibles en una única plataforma y que podrían mejorar drásticamente la experiencia de usuario. Tam-bién ignorará las diferencias respecto a la filosofía de diseño de las plataformas: si bien muchas plataformas se esfuerza nen conseguir un diseño realista en el que las aplicaciones se parecen a sus contrapartes del mundo real, la interfaz Metro de Windows Phone se centra en lograr una experiencia "auténticamente digital", en la que el contenido se enfatiza sin marcos. Otro desafío clave con una interfaz de usuario multiplataforma es que puede comportarse de manera diferente a lo que están acostumbrados los usuarios de la interfaz de usuario nativa, resultando en que la aplicación no "funciona" para los usuarios. Un ejemplo simple es no dar soporte una tecla de hardware correctamente, como la tecla de retroceso en una plataforma determinada. Otro reto es el valle de las sombras resultante de intentar imitar elementos nativos de la interfaz, que se parecen a los originales pero no funcionan de la misma manera. En lugar de imitar controles nativos, deberías usar unos de aspecto no nativo o, simplemente, limitarte a usar los “auténticos”.

Al dirigirte a los consumidores finales directamente (B2C), a menudo tienes que tener mucho más en cuenta la experiencia de usuario específica de plataforma que en aquellos casos en que el target es usuarios de negocio (B2B). En cualquier caso, debes tener en cuenta que la personalización y la adaptación de la interfaz de usuario y la UX para cada plataforma puede suponer una gran parte de tu esfuerzo de desarrollo, y que es sin duda el aspecto más desafiante de una estrategia multi-plataforma.

Page 126: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

121120 Hacia Multiplataforma

Soporte a la Integración en Pantalla de InicioLa integración de tu aplicación en las pantallas de inicio de los dispositivos varía mucho entre las plataformas. En iOS sólo se puede añadir una etiqueta de identificación con un número al icono de tu aplicación, en Windows Phone puedes crear live tiles que añaden información estructurada, mientras que en Android y Symbian se puede añadir un widget completo que muestre datos arbitrarios y emplee imágenes.

Utilizar la integración de tu aplicación en este sentido podría mejorar drásticamente su interacción con los usuarios.

Soporte MultitareaLa multitarea permite a servicios en segundo plano y múltiples aplicaciones funcionar al mismo tiempo, y es otra de las características que se gestionan de manera diferente según el sistema operativo. En Android, BlackBerry y Sailfish OS, hay servicios en segundo plano y puedes ejecutar varias aplicaciones al mismo tiempo, pero en Android el usuario no puede terminar las aplicaciones a voluntad, ya que esto se realiza automáticamente por el sistema operativo cuando los recursos disminuyen. En iOS y Windows Phone hay una selección limitada de tareas en segundo plano que pueden seguir funcionando después de salir de la aplicación. Así que, si los servicios en segundo plano pueden mejorar la operativa de tu aplicación, debes evaluar las estrategias multiplataforma cuidadosamente para asegurarte de permitir el acceso más completo a las capacidades del teléfono en este sentido.

Consumo de Batería y RendimientoEn estrecha relación con la multitarea está el consumo que hace tu aplicación de la batería.

Mientras que la potencia de CPU se duplica aproximada-mente cada dos años (la Ley de Moore dice que el número

Page 127: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

122Hacia Multiplataforma

de transistores se duplica cada 18 meses), la capacidad de la batería, en contraste, se duplica sólo una vez cada siete años. Esta es la razón por la que los smartphones pasan tanto tiempo conectados a su cargador. Cuanto más cerca estás de la plataforma en una capa de abstracción multiplataforma, mejor puedes controlar el consumo de la batería y el rendimiento de tu aplicación. Como regla general, cuanto más tiempo necesita tu aplicación para arrancar y funcionar, menor abstracción puedes conseguir.

Asimismo, algunas plataformas tienen una gran variedad de resultados en rendimiento, sobre todo Android, cuya gama de dispositivos va desde lo dolorosamente lento hasta lo super-rápido.

Servicios PushLos servicios push son una estupenda manera de aparentar que tu aplicación está activa, incluso cuando no está en funcio-namiento. En una aplicación de chat puedes, por ejemplo, enviar mensajes de chat entrantes para el usuario mediante un mecanismo push. Como en el caso anterior, la manera en que los servicios push funcionan y los protocolos que utilizan se emplean de manera diferente en cada plataforma. El tamaño de datos disponible, por ejemplo, oscila entre 256 bytes en iOS y 8 KB de BlackBerry. Los proveedores de servicios como Urban Airship2 soportan el envío de datos a través de varias plataformas.

2 urbanairship.com/

Page 128: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

123122 Hacia Multiplataforma

Compra desde AplicaciónLos mecanismos de compra desde aplicaciones permiten vender bienes o servicios dentro de tu aplicación. No hace falta decir que esto funciona de forma diferente en distintas plataformas. Véase el capítulo de monetización para más detalle.

Publicidad en AplicaciónExisten diferentes opciones para la visualización de anuncios en aplicaciones móviles, siendo algunas soluciones de terceros independientes del comercializador. Los servicios de publicidad específicos de plataforma, sin embargo, ofrecen mayores in-gresos y una mejor experiencia de usuario. Una vez más, estos servicios funcionan de manera diferente según las plataforma. El capítulo de monetización en esta guía proporciona más información sobre este tema.

Estrategias Multiplataforma

En esta sección se describen algunas de las estrategias que puedes emplear para implementar tus aplicaciones en diferen-tes plataformas.

Soporte DirectoPuedes soportar varias plataformas si cuentas con un equipo especializado para cada plataforma objetivo. Si bien esto puede consumir muchos recursos, es muy probable que te dé mejor integración y experiencia de usuario en cada sistema. Una vía fácil de inicio es comenzar con una plataforma y luego progresar hacia plataformas adicionales una vez que tu aplicación se ha defendido en el mundo real.

Page 129: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

124Hacia Multiplataforma

Las librerías de componentes pueden ayudarte a acelerar el desarrollo nativo, ejemplos populares se muestran en la siguiente tabla:

Biblioteca de Componentes Plataformas Objetivo

cocoacontrols.com iOS

chupamobile.com Android, iOS

verious.com Android, iOS, HTML5, Windows

windowsphonegeek.com/Marketplace Windows

Compartición de RecursosCuando mantienes varios equipos para diferentes plataformas puedes ahorrar mucho esfuerzo si compartes algunas estructu-ras de la aplicación:

— Concepto y recursos: Esto se hace habitualmente de forma automática: compartir las ideas y los conceptos de la aplicación, el flujo de interfaz de usuario, input y out-put y los recursos gráficos de la aplicación (pero debes ser consciente de la necesidad de dar soporte a las estructuras específicas de interfaz de usuario de cada plataforma).

— Estructuras de datos y algoritmos: Vé un paso más allá compartiendo estructuras de datos y algoritmos entre plataformas.

— Compartición de código del modelo de negocio: Utilizando compiladores de multiplataforma también puedes compartir el modelo de negocio entre las plata-formas. Alternativamente, puedes utilizar un intérprete o una máquina virtual y un lenguaje común en un grupo de plataformas.

Page 130: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

125124 Hacia Multiplataforma

— Abstracción completa: Algunas herramientas multiplata-forma te permiten abstraerte completamente del modelo de negocio, las vistas y el control de tu aplicación para diferentes plataformas.

Reproductores y Máquinas VirtualesLos reproductores suelen proporcionar un conjunto común de APIs sobre distintas plataformas. Ejemplos famosos incluyen Flash, Java ME y Lua. Este enfoque hace que el desarrollo sea muy fácil. Te vuelves dependiente, sin embargo, del proveedor de la plataforma para incorporar nuevas características, por lo que el reto aquí se da cuando las funciones están disponibles en una única plataforma. A menudo los reproductores tienden a utilizar una aproximación de “mínimo común denominador” respecto a las funciones ofertadas para mantener la unifor-midad entre las implementaciones para varias plataformas. Generadores de código como Applause3 llevan el concepto de reproductor un paso más allá, a menudo son específicos del dominio y permiten generar aplicaciones a partir de datos. También suelen carecer de flexibilidad en comparación con las soluciones programables.

Compilación CruzadaLa compilación cruzada permite la programación en un lenguaje que es transformado en el lenguaje específico de una plataforma diferente. En términos de rendimiento a menudo es la mejor solución de multiplataforma, aunque puede haber diferencias en comparación con las aplicaciones nativas. Esto puede darse, por ejemplo, cuando ciertas construcciones de programación no pueden ser traducidas de manera óptima desde el código fuente al lenguaje de destino.

3 applause.github.com

Page 131: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

126Hacia Multiplataforma

Hay tres enfoques habituales para la compilación cruzada: traducción directa del código fuente, de forma indirecta medi-ante la traducción del código fuente en un lenguaje intermedio abstracto, y recopilación directa en el formato binario de una plataforma. El enfoque indirecto típicamente produce código menos legible. Este es un problema potencial cuando se desea continuar con el desarrollo en la plataforma de destino usando el código fuente traducido como punto de partida.

Aplicaciones Web (Híbridas)En la tabla siguiente se enumeran algunos de los frameworks de aplicaciones web disponibles. Con estos entornos se pueden crear aplicaciones web que se comportan casi como aplicacio-nes reales, incluyendo capacidades offline. Sin embargo, ten en cuenta que las tecnologías tienen limitaciones cuando se trata de aspectos como la integración en plataforma o rendimiento. Lee el capítulo “Tecnologías Web” para aprender más acerca del desarrollo web móvil.

Solución Web App Licencia Plataformas de destino

Chrome Apps developer.chrome.com/apps

BSD Android, Mac, Windows

jQuery Mobile www.jquerymobile.com

MIT y GPL Android, BlackBerry, Firefox, iOS, Windows

Sencha Touch www.sencha.com/products/touch

GPL Android, BlackBerry, iOS, Windows Phone

The M Project the-m-project.org

MIT y GPL Android, BlackBerry, Firefox, iOS, Windows

Normalmente no tienes acceso a las características de hardware y elementos nativos de interfaz de usuario, por lo que en nuestra opinión no cuentan como soluciones multiplata-

Page 132: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

127126 Hacia Multiplataforma

forma “reales”; estas soluciones, por lo tanto, no aparecen en la tabla al final de este capítulo.

El desarrollo web híbrido implica insertar una webview dentro de una aplicación nativa. Esta aproximación te permite acceder a las funciones nativas desde los componentes web de tus aplicaciones y también utilizar código nativo para mejorar el rendimiento o aspectos críticos de la experiencia de usuario de tu aplicación. Las aplicaciones híbridas permiten reutilizar elementos de desarrollo web en las plataformas que hayas elegido (un buen ejemplo de entorno híbrido es PhoneGap).

ANSI CMientras que el HTML y la programación web se crean a partir de un nivel de abstracción muy elevado, también puedes elegir el camino opuesto utilizando ANSI C. Puedes ejecutar código ANSI C en todas las plataformas importantes, como Android, BlackBerry 10, iOS y Windows 8/Windows Phone. El principal problema con esta opción es que no puedes acceder a las APIs específicas de plataforma ni los controles de interfaz de usuario desde dentro de ANSI C. Utilizar C es especialmente adecuado para algoritmos complejos, como los codificadores de audio. Las librerías correspondientes se pueden utilizar en todos los proyectos de aplicaciones para una plataforma.

Frameworks de Aplicaciones MultiplataformaHay muchas soluciones multiplataforma disponibles, por lo que es difícil ofrecer una visión completa. Puedes llamarlo fragmentación, nosotros lo llamamos competencia. Una palabra de advertencia: no sabemos todas las opciones, si tienes una solución propia que está disponible públicamente, por favor háznoslo saber a través de [email protected]. Un

Page 133: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

128Hacia Multiplataforma

framework debe soportar al menos dos plataformas móviles para ser listado aquí.

A continuación, algunas preguntas que debes hacer al evaluar herramientas multiplataformas. No todas ellas serán relevantes para tí, así que sopesa las opciones adecuadamente. En primer lugar, ten una visión detallada de tu idea de aplicación, el contenido, su público objetivo y las plataformas de destino. También debes tener en cuenta a la competencia en las diversas plataformas, tu presupuesto de marketing y el know-how de tu equipo de desarrollo. Research 2 Guidance también ha publicado un informe sobre varias herramientas multiplataforma4.

— ¿Cómo funciona la herramienta multiplataforma? ¿Qué lenguajes de programación y APIs puedo usar?

— ¿Puedo acceder a funciones específicas de la plataforma? ¿En caso afirmativo, cuáles?

— ¿Puedo usar componentes nativos de la interfaz de usuario? ¿En caso afirmativo, cuáles?

— ¿Puedo usar una versión específica de la plataforma como base de mi desarrollo? ¿Cómo es el código fuente tradu-cido/generado?

— ¿Es posible la integración con la pantalla de inicio? — ¿Puedo controlar la multitarea? ¿Hay algún servicio en

segundo plano? — ¿Cómo funciona la solución con servicios push? — ¿Cómo puedo usar la compra desde aplicación y la

publicidad en aplicación? — ¿Se mantiene actualizado el framework a medida que

evoluciona el sistema operativo?

4 research2guidance.com/cross-platform-tool-benchmarking-2013

Page 134: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

129128 Hacia Multiplataforma

Para una comparativa de los entornos disponibles, puedes consultar el informe research2guidance disponible en research2guidance.com/cross-platform-tool-benchmarking-2014.

Solución Licencia Input Output

Adobe Air adobe.com/devnet/devices.html (Adobe)

Comercial Flash Android, BlackBerry Tablet OS, iOS, PC

Akula verivo.com

Comercial (Visual) Android, BlackBerry, iOS, Windows Phone

Application Craft applicationcraft.com

Comercial HTML, CSS, JavaScript

Android, BlackBerry 10, iOS, Windows Phone, sitios móviles

Codename One codenameone.com

Comercial Java Android, BlackBerry, iOS, J2ME, Windows

Corona coronalabs.com (Corona Labs)

Comercial JavaScript Android, iOS, Kindle, Nook, Windows

Evothings Studio evothings.com

Open Source HTML, CSS, JavaScript

Android, iOS

Feedhenry feedhenry.com

Comercial HTML, CSS, JavaScript

Android, iOS, HTML5, Windows

J2ME Polish j2mepolish.org (Enough Software)

Open Source + Comercial

Java ME, HTML, CSS

Android, BlackBerry, J2ME, PC

Kony One www.kony.com/products/apps

Comercial HTML, CSS, JavaScript, RSS

Android, BlackBerry, iOS, J2ME, Windows, PC, Web

Page 135: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

130Hacia Multiplataforma

Solución Licencia Input Output

LiveCode runrev.com (RunRev)

Comercial English-like Android, iOS, Windows y Web

M2Active service2media.com (Service2Media)

Comercial Drag and Drop + Lua

Android, BlackBerry, iOS, Windows

MobiForms mobiforms.com (MobiForms)

Comercial Drag and Drop + MobiScript

Android, iOS, PC, Windows Mobile

NeoMAD neomades.com

Comercial Java Android, BlackBerry, iOS, J2ME, Windows

Orubase orubase.com

Comercial ASP .NET MCV

Android, iOS, Windows

PhoneGap/Cordova phonegap.com cordova.apache.org (Adobe/Apache)

Open Source HTML, CSS , JavaScript

Android, BlackBerry 10, iOS, Windows

Qt qt.digia.com (Digia)

Open Source + Comercial

C++ Android, BlackBerry 10, iOS, Sailfish OS, Windows

Rhodes motorolasolutions.com/US-EN/RhoMobile+Suite/Rhodes (Motorola)

Open Source + Comercial

Ruby, HTML, CSS, JavaScript

Android, BlackBerry, iOS, Windows Phone

Titanium appcelerator.com (Appcelerator)

Open Source JavaScript Android, iOS, Tizen, Windows, Mobile Web

trigger.io trigger.io (Triggger Corp)

Comercial HTML5, JavaScript

Android, iOS

webinos webinos.org

Open Source JavaScript Android, BlackBerry, iOS, PC, TV

Page 136: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

131130 Hacia Multiplataforma

Solución Licencia Input Output

Xamarin xamarin.com Comercial C# iOS, Android, Windows, PC

XDK xdk.intel.com (Intel) Uso gratuito HTML, CSS, JavaScript

Android, iOS, Windows

XML VM xmlvm.org Open Source + Comercial

Java, .NET, Ruby

C++, Java, JavaScript, .NET, Objective-C, Python

Motores de Juego Multiplataforma

Los juegos están muy centrados en el contenido y a menudo no necesitan ser integrados en profundidad en la plataforma, así que el desarrollo multiplataforma es a menudo más atractivo para éstos que para las aplicaciones.

Page 137: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

132Hacia Multiplataforma

Solución Licencia Input Output

Cocos 2D cocos2d-x.org

Open Source C++, HTML5, JavaScript

Android, BlackBerry, iOS, Windows

Corona coronalabs.com (Corona Labs)

Comercial Lua Android, iOS, Kindle, nook, Windows

EDGELIB edgelib.com (elements interactive)

Comercial C++ Android, iOS, PC

Esenthel esenthel.com (elements interactive)

Comercial C++ Android, iOS, PC

GameSalad gamesalad.com

Comercial Drag and drop Android, iOS, Windows, PC, web

Gideros Mobile giderosmobile.com

Comercial Lua Android, iOS

id Tech 5 idsoftware.com (id)

Commercial C++ Consoles, iOS, PC

Irrlicht irrlicht.sourceforge.net

Open Source C++ Android & iOS with OpenGL-ES version, PC

Appease appeasymobile.com

Open Source C++ Android, iOS, Windows

Marmalade madewithmarmalade.com (Ideaworks3D)

Comercial C++, HTML5, JavaScript

Android, BlackBerry 10, iOS, Windows

Moai getmoai.com (Zipline Games)

Open Source, Comercial

Lua Android, iOS, PC, Web

MonoGame monogame.codeplex.com

Open Source C#, XNA Android, iOS, PC, Windows

Page 138: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

133132 Hacia Multiplataforma

Solución Licencia Input Output

Ogre 3D ogre3d.org

Open Source C++ Windows Phone, Window RT, PC

orx orx-project.org

Open Source C, C++, Objective-C

Android, iOS, PC

ShiVa 3D stonetrip.com

Comercial C++ Android, BlackBerry 10, iOS, PC, Consoles

SIO2 sio2interactive.com (sio2interactive)

Comercial C, Lua Android, iOS, PC

Unigine unigine.com (Unigine corp.)

Comercial C++, Unigine-Script

Android, iOS, PC, PS3

Unity3D unity3d.com (Unity Technologies)

Comercial C#, JavaScript, Boo

Android, BlackBerry 10, iOS, Windows, PC, consoles, web

Page 139: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES
Page 140: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

135Sitios para Móviles & Tecnologías Web

Sitios para Móviles & Tecnologías WebEl desarrollo contínuo de tecnologías web unido al incremento dispositivos conectados a Internet promete un gran futuro para aquellos deseosos de un incremento en la audiencia a través de webs móviles. El tráfico global de Internet móvil está creciendo rápidamente y ya ha superado el 30% del total1. El tiempo invertido en navegar por Internet con dispositivos (móviles, tablets, ordenadores de sobremesa y televisores) varía en diferentes puntos del planeta; mientras que los usuarios en China dedican un 16% de su tiempo a navegar desde dispositi-vos móviles, en EE.UU. es un 27% y en India un 70%. Muchas regiones donde el tráfico en Internet vía móvil ya ha superado a los ordenadores de sobremesa son mercados en desarrollo o emergentes. Mientras que el uso de smartphones crece alred-edor del planeta, aún hay una gran oportunidad para captar a los usuarios de teléfonos de gama media. Según Nielsen sólo el 18% de los indios poseen un smartphone, lo que equivale a la espectacular suma de 225 millones de usuarios2, mientras que un 68% posee un teléfono de gama media, de los cuales un 9,5% pueden navegar por Internet3. Esto quiere decir que con un site básico para móviles podrías alcanzar a 85 millones de usuarios más.

El uso más obvio de las tecnologías web es construir sitios web móviles, y ése es el tema de este capítulo. Vale la pena destacar que las tecnologías web también se usan de manera

1 gs.statcounter.com

2 nielsen.com/ph/en/insights/news/2014/asian-mobile-consumers.html

3 discovermobilelife.com

Page 141: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

136Sitios para Móviles & Tecnologías Web

intensiva en el desarrollo de aplicaciones web e híbridas, soluciones multiplataforma e incluso aplicaciones nativas (Firefox y Tizen). Para más información sobre el desarrollo multiplataforma y en nuevo sistema operativo Firefox y Tizen consulta los capítulos al respecto en esta guía.

Una gran ventaja de las tecnologías web es que ofrecen la ruta más fácil hacia el desarrollo móvil. Tecnologías web como HTML, CSS y JavaScript ya están plenamente desarrolladas; sin embargo, siguen y seguirán siendo las principales bases de desarrollo de sitios móviles. Además, son sin duda más fáciles de aprender que algunos de los complejos lenguajes necesarios para el desarrollo de aplicaciones nativas. Los sitios web para móviles y las aplicaciones web hacen los contenidos accesibles en casi cualquier plataforma con un menor esfuerzo en comparación con el desarrollo nativo para varias plataformas. Esto significa, directamente, que los sitios web para móviles tienen un alcance más amplio. Por consiguiente, el desarrollo web móvil no sólo ahorra tiempo y costes de desarrollo, sino que además proporciona una alternativa ajustada en costes y tiempo también en lo que se refiere a mantenimiento. Y ser independiente de las tiendas de aplicaciones te permite ofrecer cualquier contenido que quieras rápidamente y sin necesidad de suscribir las políticas de un tienda de aplicaciones.

No obstante, existen deficiencias. Las tecnologías web luchan por igualar el nivel de integración en plataforma y el acceso directo a funciones de hardware que ofrece el desar-rollo de aplicaciones nativas. Aún más, el rendimiento de las tecnologías web es altamente dependiente de la conectividad, grandes sites como Facebook y LinkedIn tienen dificultades para bregar con las limitaciones de memoria, y hay un deficiencia de herramientas de desarrollo en comparación a las disponibles para desarrollo de aplicaciones nativas.

Page 142: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

137136 Sitios para Móviles & Tecnologías Web

La monetización de sitios móviles puede resultar difícil, ya que los usuarios esperan tener acceso a las webs de forma gratuita. La herramienta más común para su monetización es la integración de publicidad. Las soluciones de pago para los sitios móviles se encuentran todavía en sus primeras etapas y tienden a ser bastante complejas de implementar. Los actuales instrumentos de monetización de las tiendas de aplicaciones ofrecen, por el contrario, una fácil instalación y un alto nivel de seguridad para el usuario final.

Si la monetización es uno de los requisitos clave, una estrategia híbrida o de aplicación web podría resultar una buena opción de compromiso. En este caso, el desafío clave es combinar las capacidades únicas de tecnologías nativas y web para crear un producto verdaderamente fácil de usar. En el capítulo sobre el tema multiplataforma de este libro encontrarás una lista de los frameworks disponibles para crear aplicaciones híbridas.

Por principio, los usuarios no deberían sufrir la frustración y la decepción de ser redirigidos a un sitio web que nunca termina de cargarse, exige una elevada transmisión de datos o simplemente no funciona. Por el contrario, en el peor escenario posible el usuario debería ser redirigido a un sitio básico, pero que provea de contenido relevante. Antes de comenzar a desarrollar hay que tener en cuenta las capacidades de los dispositivos que utiliza tu audiencia, sus hábitos de naveg-ación y sus planes de datos.

Page 143: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

138Sitios para Móviles & Tecnologías Web

Desde la perspectiva de la experiencia de usuario, Google ofrece las 10 directrices más importantes para que pequeñas y medianas empresas consigan conversiones4:

— Sé táctil - diseña tu sitio de manera que incluso unas manos grandes puedan interactuar con él

— Diseña para visibilidad - asegúrate de que tu contenido puede ser leído si el usuario extiende su brazo completa-mente

— Simplifica la navegación - navegación, jerarquía y scroll-ing vertical claros facilitan el acceso a la información

— Hazlo accesible - idealmente, tu sitio móvil debería funcionar en cualquier dispositivo y en ambas orientacio-nes, vertical y horizontal

— Hazlo fácilmente convertible - destaca la información que te ayudará a conseguir conversiones

— Hazlo local - incluye funcionalidades que ayuden a la gente a encontrarte y contactarte

— Redirecciona a sites versión móvil - da a los usuarios la oportunidad de utilizar el site desktop original, pero también facilita volver al site móvil

— Mantenlo ágil - ayuda a los usuarios de móviles, diseña tu sitio para que cargue rápido y muestra el copy de manera que sea fácil hacer una lectura superficial

— Hazlo cómodo - ofrece el mayor número de funcionali-dades de la versión completa como sea posible

— Aprende, escucha e itera - los buenos sitios móviles están centrados en el usuario; es decir, han sido creados contando con el feedback de la audiencia

Google ha implementado cambios en su modelo de

4 www.dudamobile.com/webinar/Google_DudaMobile_Webinar.pdf

Page 144: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

139138 Sitios para Móviles & Tecnologías Web

búsqueda móvil y ha anunciado que penalizará a los sitios que no sigan éstas recomendaciones. Echa un vistazo al site de desarrolladores de Google5 para estar al día de las novedades respecto a cómo optimizar tu sitio móvil.

HTML5

La quinta versión del estándar HTML promete la reproducción de características anteriormente sólo disponibles con ayuda de tecnología propietaria. HTML5 es uno de los factores clave que hacen que los desarrolladores sopesen el desarrollo de sitios móviles y aplicaciones web en lugar de aplicaciones nativas. El look-and-feel similar al de aplicaciones compiladas con un único código base para una serie de dispositivos populares, la capacidad de acceder a hardware de dispositivos tales como la cámara y el micrófono, el almacenamiento de datos en los dispositivos para utilizar sitios móviles sin conexión y la optimización de la página web según en el tamaño de pantalla, hacen de HTML5 una atractiva alternativa para el desarrollo de aplicaciones nativas.

Pero HTML5 depende del navegador y es exactamente ése apoyo el que escasea actualmente. Sólo el 60% de los usuarios de Internet tienen navegadores que soporten más del 50% de las características actuales de HTML56. El ex-CTO de Facebook Brent Taylor describe la situación de la siguiente manera: ‘Hay una desenfrenada fragmentación de la tecnología en los navegadores móviles, por lo que los desarrolladores no saben qué parte de HTML5 pueden utilizar. HTML5 es promovido como un estándar único, pero viene en diferentes versiones para cada dispositivo móvil. Cuestiones tales como la aceleración

5 developers.google.com/webmasters/smartphone-sites

6 gs.statcounter.com/

Page 145: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

140Sitios para Móviles & Tecnologías Web

de hardware y la gestión de derechos digitales se implementan de manera inconsistente. Eso hace que sea difícil para los desarrolladores escribir software que funcione en muchas plataformas diferentes y llegue a un público amplio’.

Sitios web líderes como LinkedIn han cambiado sus aplicaciones web por un paquete de aplicaciones nativas. Kiran Prasad, el director de ingeniería móvil de LinkedIn, decidió construir tanto un site en HTML5 como aplicaciones nativas. Su razonamiento es que HTML5 ya es relevante para el negocio, pero no está soportado como debería por el ecosistema: 'There are tools, but they are at the beginning. People are just figuring out the basics.'7.

Para más información acerca de la compatibilidad con navegadores, visita el site HTML5Test online8. Dicho website ofrece tanto una introducción como un análisis profundo a las características de HTML5 según su soporte por los diferentes navegadores web. Facebook también ha desarrollado ringmark9, que pone a prueba los navegadores web en 3 anillos, o niveles de soporte de características de HTML5, lo cual ayuda a los desarrolladores a comprobar rápidamente el nivel de soporte de múltipes navegadores web móviles (y desktop).

Resumiendo: Casi todo el mundo en el negocio móvil está de acuerdo en que HTML5 tendrá éxito a largo plazo y, especialmente, el último año se ha visto una rápida adopción del HTML5. ABI Research estima que los dispositivos móviles compatibles con HTML5 existentes en el mundo serán 2.100 millones a finales del 201610. Los sistemas operativos incre-

7 venturebeat.com/2013/04/17/linkedin-mobile-web-breakup

8 html5test.com/results/mobile.html

9 rng.io/

10 www.abiresearch.com/press/21-billion-html5-browsers-on-mobile-devices-by-201

Page 146: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

141140 Sitios para Móviles & Tecnologías Web

mentarán gradualmente el soporte a HTML5 y los navegadores web incrementarán la velocidad de su adopción. Las platafor-mas de código abierto, tales como Firefox OS, Sailfish y Ubuntu deberían favorecer dicha adopción. El informe Developer Economics 201411 ya identifica HTML5 como la plataforma más popular (47%), seguida por Java (42%).

La Fragmentación Requiere Adaptación

El mayor reto del desarrollo web móvil es la fragmentación. En teoría, todos los dispositivos con conexión a Internet pueden acceder a cualquier sitio móvil a través de un navegador. La realidad, sin embargo, es que los desarrolladores necesitan atender al creciente número de navegadores y dispositivos con diferentes niveles de capacidades de software y hardware para adaptar y optimizar el contenido web móvil.

En términos generales, existen dos enfoques para optimizar el contenido para dispositivos móviles: adaptación del lado del cliente o del lado del servidor:

— La adaptación del lado cliente hace uso de una combi-nación de CSS y JavaScript ejecutándose en el disposi-tivo para ofrecer una experiencia ‘mobile-friendly’. — La adaptación en el lado del servidor utiliza al

servidor para que ejecute lógica antes de que se suministre el contenido al cliente.

La siguiente sección ofrece una revisión de técnicas tanto del lado cliente como del lado servidor para hacer los sitios webs accesibles a la mayoría de dispositivos actuales con acceso a Internet, así como a aquellos futuros.

11 DeveloperEconomics.com

Page 147: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

142Sitios para Móviles & Tecnologías Web

Adaptación del Lado Cliente

Diseño Web Adaptativo (Responsive)El diseño web adaptativo ha sido un término de moda entre vendedores y desarrolladores web por igual. En su formato más simple, consiste en una rejilla flexible, imágenes flexibles y CSS media queries para comportarse adaptativamente a una serie de resoluciones de pantalla o tipos de dispositivos.

En solitario, ésto sólo puede proporcionar una experiencia sensible a dispositivo en un rango limitado de ellos y no puede adaptarse a contenido sofisticado. El mismo contenido se sirve a todos los dispositivos. No se recomienda como técnica para producir sitios web complejos para navegadores desktop o móviles.

Pros — Una adaptación completa en el lado cliente asegura que no

haya impacto en la infraestructura existente. — Ajuste automático de contenido y diseño.

Contras — El mismo contenido disponible en el sitio web estará

disponible también en la versión móvil (visible o no). — El peso del sitio tendrá un impacto significativo en

términos de rendimiento en los dispositivos móviles. — Es una aproximación general más que una optimización

real a un entorno móvil.

Page 148: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

143142 Sitios para Móviles & Tecnologías Web

Mejoras ProgresivasLas mejoras progresivas tienen la capacidad de responder a toda la gama de dispositivos móviles. Se envía una sola página HTML a todos los dispositivos. Se utiliza código JavaScript de manera adicional para construir progresivamente la funcionali-dad a un nivel óptimo para el dispositivo en particular. Ya que es una solución exclusiva móvil, el principal inconveniente es el rendimiento. La construcción progresiva conlleva tiempo de ejecución y varía de acuerdo con el dispositivo y la red. Como solución de desktop y móvil, su principal inconveniente es que un único documento HTML se envía a todos los dispositivos. Un entorno muy conocido que hace uso de la mejora progresiva es jQuery Mobile12.

Pros — Una adaptación completa en el lado cliente asegura que no

haya impacto en la infraestructura existente. — Ajuste automático de contenido, funcionalidad y diseño.

Contras — Pérdida de control, pues la detección es gestionada por el

navegador. — La detección de navegador dista mucho de ser perfecta. — La detección realizada en el lado cliente tiene impacto

sobre el rendimiento global del site. — El mismo HTML es servido a todos los dispositivos.

12 jquerymobile.com

Page 149: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

144Sitios para Móviles & Tecnologías Web

Adaptación del Lado Servidor

Bases de Datos de DispositivosLas bases de datos de dispositivos detectan a cada dispositivo que accede a la página web y devuelven una lista de las capa-cidades del dispositivo al servidor. Esta información se utiliza entonces para servir un sitio móvil acorde con las capacidades del dispositivo. La adaptación del lado del servidor es una de las soluciones más antiguas y fiables. Algunas populares bases de datos de dispositivos son WURFL13 y DeviceAtlas14. El principal inconveniente de las bases de datos de dispositivo es que la mayoría sólo están disponibles bajo licencia comercial.

Pros

— La solución más habitual (Google, Facebook, Amazon y similares).

— Máximo control. — Es posible la optimización según dispositivo (por ejemplo

iPhone, Samsung Galaxy y similares).

Contras

— Los Repositorios de Descripción de Dispositivos (en inglés Device Description Repositories) están orientados a hardware.

— Aparte de los datos, es necesario un mecanismo de detec-ción (un simple ‘User-Agent’ no es suficiente).

13 wurfl.sourceforge.net/

14 deviceatlas.com/

Page 150: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

145144 Sitios para Móviles & Tecnologías Web

Adaptación Híbrida - RESSRealmente lo mejor de ambos mundos, la combinación de la adaptación en cliente y servidor asegura un alto rendimiento gracias a la adaptación del lado del servidor y garantiza que las capacidades obtenidas se pueden utilizar para enriquecer la experiencia móvil para las visitas siguientes. Esta aproximación se conoce como RESS (responsive web design with server-side components). Naturalmente es costosa y, por tanto, más común en organizaciones de gran tamaño.

Las soluciones híbridas de adaptación están disponibles comercialmente de compañías como Sevenval15 o Netbiscuits16, o como soluciones en la nube respaldadas por la comunidad, por ejemplo FITML17.

Mejor Input de DatosCon pequeñas teclados, a menudo en pantalla, introducir texto puede resultar engorroso y lento, especialmente si el usuario tiene que introducir números, direcciones de correo electrónico o texto similar, etcétera. Afortunadamente, los desarrolladores pueden especificar el tipo esperado de datos y los smartphones mostrarán entonces el teclado más apropiado en pantalla. mobileinputtypes.com proporciona varios ejemplos claros y concisos.

Mejor RendimientoLos usuarios esperan que los sitios web tarden en cargar entre 2 y 5 segundos. Esto supone un reto, especialmente para los sitios móviles más complejos. Nótese que la localización y red utilizadas ya han tenido un efecto drástico en el rendimiento

15 www.sevenval.com

16 www.netbiscuits.com

17 www.fitml.com

Page 151: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

146Sitios para Móviles & Tecnologías Web

del site. Aunque hay factores que quedan fuera de tu control, las siguiente secciones ofrecen trucos para reducir la transfer-encia de datos, contenidos y llamadas HTTP para minimizar el tiempo de carga y mejorar el rendimiento.

Reducir el Volumen TransmitidoActiva GZIP cuando sirvas un sitio. Cambiar los tamaños de imágenes y ajustar su calidad conforme a la calidad de la red.

Reducir ContenidoTanto la carga del site como de los contenidos son cada vez más importantes. Reducir en lo posible elementos tales como los archivos JavaScript y CSS te ayuda a reducir el tiempo global de carga. Múltiples archivos del mismo tipo pueden ser comprimidos en uno y los espacios vacíos pueden ser elimina-dos. El código se acorta, pero se comporta de la misma manera. Todo esto puede resultar en un menor número de llamadas y, finalmente, en un mejor tiempo de carga.

Al mismo tiempo, es importante que el usuario comprende qué está ocurriendo. Si el contenido está en proceso de carga es importante que el usuario sea consciente de ello, y no mostrarle una página o espacio en blanco. Una experiencia sin contratiempos es primordial para cualquier experiencia móvil, y esto incluye el viaje desde el site hasta la carga de contenidos en el site, y todas aquellas animaciones que los acompañen.

Reducir Llamadas HTTPImágenes inline, scripts y estilo, y utiliza la caché de apli-caciones. Cuando sea posible, reduce el número de llamadas, tamaño de archivos y contenido. Beneficios clave son que los scripts se transmiten en una sola llamada por página, el tráfico HTTP se minimiza y los scripts básicos se almacenan en

Page 152: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

147146 Sitios para Móviles & Tecnologías Web

la cache de la aplicación. La implementación no afecta el refresco y los scripts aún pueden alojar en la cache del CDN.

Para más detalles y recomendaciones sobre rendimiento de webs móviles estudia la presentación de Roland Guelle en Slideshare18.

Testear Tecnologías Web

Se puede probar cómo las tecnologías web funcionan en varios teléfonos móviles de múltiples maneras. La más simple es probar el sitio o aplicación web en una variedad de navegadores en dispositivos móviles. Estos deberían incluir una combinación de los navegadores móviles más populares, por ejemplo aquellos basados en datos públicos disponibles online19. El conjunto de dispositivos se puede refinar medi-ante el análisis de datos de los registros web existentes, y otras herramientas. Además, las pruebas en varios factores de forma ayuda a descubrir problemas de diseño y formato.

En cuanto a las pruebas automatizadas, WebDriver20 es el entorno predominante. Existen dos enfoques complemen-tarios:

1. Testeo automático utilizando controles WebView en Android e iOS.

2. Falseo del User-Agent (spoofing) utilizando Google Chrome o Mozilla Firefox configurados para emular a varios navegadores web móvil.

Ambas aproximaciones tienen pros y contras:

18 www.slideshare.net/sevenval/mobile-web-performance-dwx13

19 gs.statcounter.com/#mobile_browser-ww-monthly-201207-201306

20 seleniumhq.org/projects/webdriver/

Page 153: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

148Sitios para Móviles & Tecnologías Web

— WebViews incrustadas se ejecutan en la plataforma de destino. Es probable encontrar en ellas muchos errores de comportamiento. Sin embargo, la configuración tiene mucho que ver y algunas plataformas no están soportadas.

— Se puede engañar a los servidores web para que traten al navegador como si accediera mediante una gran variedad de navegadores, incluyendo navegadores móviles no disponibles con la WebView incrustada, por ejemplo el teléfono Nokia Asha 201. Aún así, ni el comportamiento resultante ni el renderizado son realistas, así que muchos errores permanecerán indetectados, mientras que ser darán falsos positivos que no se darán en los dispositivos reales.

Aprende Más

Online

— W3Schools y CSS Tricks (buenos recursos para iniciarse en HTML, CSS y JavaScript): w3schools.com, css-tricks.com

— HTML5 Rocks (excelente recurso sobre HTML5 que incluye tutoriales, presentaciones, artículos, etc.) : www.html5rocks.com/en/

— Breaking the Mobile Web (Max Firtman, el autor de múltiples libros acerca de programación web móvil, ofrece noticias actualizadas en su blog dedicado a móviles): mobilexweb.com/

— Mobi Thinking (el recurso de DotMobi para vendedores, con análisis y opiniones de expertos en marketing móvil): mobithinking.com/

— Testing (Mobile) Web Apps: docs.webplatform.org/wiki/tutorials/Testing_web_apps

Page 154: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

149148 Sitios para Móviles & Tecnologías Web

— Investiga qué funcionalidades funcionan en todas las áreas Web: caniuse.com y beta.theexpressiveweb.com

— WHATWG (la página de la comunidad HTML): www.whatwg.org/

— Word Wide Web Consortium (la organización que define los estándares web): www.w3.org/

Libros

— Mobile First por Luke Wroblewski — Adaptive Web Design: Crafting Rich Experiences with

Progessive Enhancement por Aaron Gustafson y Jeffrey Zeldman

— Responsive Web Design por Ethan Marcotte — Programming the Mobile Web por Max Firtman — jQuery Mobile: Up and Running por Max Firtman

Page 155: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES
Page 156: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

151Aplicaciones Empresariales

Aplicaciones EmpresarialesLos responsables de decisiones corporativas ven actualmente las aplicaciones empresariales móviles como un factor estraté-gico, una necesidad, más que como una mera entrada en una hoja de cálculo de contabilidad. Las aplicaciones empresariales internas son capaces de reducir la latencia de la transferencia de información dentro de una organización, incrementando la agilidad del trabajador al hacer disponibles datos de carácter competitivo en cualquier momento y en cualquier lugar. Las aplicaciones también pueden permitir a las empresas compro-meterse con sus clientes, proveedores y consumidores finales, etc. Ejemplos de aplicaciones empresariales incluyen software para puntos y personal de ventas, de respuesta a emergencias, gestión de inventario o cadena de suministro, pero también de marketing B2C.

Puede parecer una obviedad decirlo, pero el riesgo más importante en este momento es no tener una estrategia móvil corporativa. Las empresas están tomando el enfoque Móvil para Todos en contraste a limitar su uso a la alta dirección, como ocurría en el pasado. Para conseguir esto, el enfoque tradicional de TIC de compra y distribución de dispositivos en la estructura de gestión ya no es la única estrategia a utilizar. Hemos pasado del BYOD (Bring Your Own Device, en castellano Trae Tu Propio Dispositivo) al BYOx (Bringh Your Own Anything, en castellano Trae Tu Propio...), lo que incluye aplicaciones, contenido, herramientas y entornos de desarrollo, e incluso wearables, permitiendo al personal utilizar sus dispositivos personales para conectarse a la infraestructura TIC, descargar contenido seguro y usar aplicaciones empresariales. Con la lle-gada de BYOD, una empresa se expone a riesgos que tradicio-nalmente no se consideraban en la estrategia TIC corporativa. La adopción temprana en la empresa de una estrategia móvil

Page 157: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

152Aplicaciones Empresariales

bien pensada y ejecutada es clave para asegurarse de que los datos están protegidos en todo momento.

Desde el punto de vista del desarrollador, el sector empresarial tiene mucho que ofrecer: En comparación con los desarrolladores de aplicaciones B2C tradicionales, aquellos que crean aplicaciones empresariales tienen el doble de probabili-dades de estar ganando más de 5.000 dólares americanos por aplicación al mes y casi 3 veces más probabilidades de ganar más de 25.000 según el informe Developer Economics1.

Puntos Clave de las Aplicaciones Móviles para Definir Iniciativas Empresariales

— Reducción de costes comparados con los sistemas existentes

— Racionalización de los procesos de negocio — Ventaja competitiva con el acceso directo a datos

actualizados de manera inmediata — Incremento de la satisfacción y efectividad del empleado — Rápida respuesta en comparación con procesos existentes

Estrategia Empresarial

Hoy en día, muchas empresas tienen un Chief Mobile Officer (CMOO) o han ampliado el alcance de sus CIOs. El trabajo del CMOO es coordinar las tendencias móviles y sus directrices, y hacer de puente entre el negocio y TIC. Dependiendo del tamaño y el enfoque de la empresa, su trabajo es también construir un equipo interno de desarrollo de software móvil o coordinar la cooperación con una agencia de desarrollo

1 www.developereconomics.com/report/next-gold-rush-enterprise-apps

Page 158: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

153152 Aplicaciones Empresariales

externa. Para asegurarse de que el software móvil ofrece lo que los empleados/usuarios quieren, que sea técnicamente factible y que todo se ajuste a la estrategia global de la empresa, el director podría considerar la creación de un Consejo de Innovación Móvil (MIC, en inglés Mobile Innovation Council) o Centro de Excelencia (COE, en inglés Center of Excellence) que deben incluir a miembros clave tales como: representantes capacitados del equipo de desarrollo de aplicaciones móviles, las partes interesadas en tema móvil en la empresa y, lo más importante, los usuarios finales de varios departamentos con experiencia en los procesos de negocio más relevantes.

Los tópicos en los que el CMOO/CIO debe centrarse, en sincronía con el MIC/COE incluyen:

— Estrategia: Visión y dirección de la estrategia móvil global y las aplicaciones.

— Políticas de gobernanza: Bring Your Own Device (BYOD) versus Chose Your Own Device (CYOD), que básicamente es la diferencia entre una política de Gestión de Aplicaciones Móviles (MAM, del inglés Mobile Application Management) y una de Gestión de Dispositivos y Seguridad Móviles (CYOD, del inglés Mobile Device Management & Security).

— Especificaciones de las aplicaciones. — Libro de ruta de las aplicaciones. — Planificación presupuestaria. — Visto bueno: aprobación de las aplicaciones para produc-

ción. — Despliegue de aplicaciones: feedback temprano de demos y

prototipos, testeo y despliegue masivo. — Incentivos: Promocionar la adopción de entornos móviles.

Page 159: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

154Aplicaciones Empresariales

En cuanto a la adopción comercial, el desarrollo de apli-caciones corporativas es muy popular actualmente, pero uno de los principales obstáculos que debe enfrentar una empresa escribiendo aplicaciones corporativas para terceros, o un manager de proyecto deseoso de adoptar una estrategia interna corporativa, es resolver una necesidad de negocio. La pregunta "Todo esto suena muy bien, pero ¿por qué lo necesitamos?" es menos común ahora, pero tienes que estar preparado para dar razones de peso en base a las que una empresa debería adoptar una estrategia móvil.

Puntos Clave en los Casos de Negocio para Aplicaciones Móviles Empresariales

— Crear un Plan de Visión para nuevas aplicaciones móviles, y cómo ayudarán y darán forma a tu empresa.

— Crear un Manifiesto de Definición de Aplicación (ADS, del inglés Application Definition Statement) para cada aplicación, especificando propósito y audiencia objetivo.

— Crear un Presupuesto para dispositivos. — Crear un plan para una Infraestructura de Aplicaciones,

Gestión de Dispositivos y Seguridad. — Crear un plan para el equipo de desarrollo utilizando una

plataforma de desarrollo fiable a futuro, por ejemplo MADP.

Movilizando Sistemas Existentes

Si ya estás ofreciendo un sistema a tus clientes pero aún no ha sido adaptado a móviles, tienes varias decisiones que tomar. Es crítico que comprendas en profundidad el impacto de añadir una oferta móvil a su sistema antes de comenzar a implemen-tar la solución elegida. Algunas de las razones más habituales

Page 160: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

155154 Aplicaciones Empresariales

para movilizar tu producto pueden ser por ejemplo utilizar el equipamiento de estos dispositivos, como la cámara o el GPPS, o simplemente ganar la capacidad de recabar información sobre la marcha, sin necesidad de conexión a Internet. Debes asegurarte de que te adaptas al mundo móvil por las razones correctas, pues la consiguiente soporte, mantenimiento y desarrollo de una oferta móvil se convertirá en una nueva línea de producto respecto a tu modelo original e implicará algunos costes fijos.

Puntos Clave Decidiendo Movilizar un Sistema

— Define con claridad las razones para ello y asegúrate de que son suficientemente fuertes como para dar el siguiente paso en el proceso.

— Comprende las diferencias entre móvil y sobremesa. No copies el sistema pre-existente; por ejemplo, en vez de utilizar un formulario para capturar la información, deberías grabar audio y subirlo a tu sistema, permitiendo a los usuarios tomar notas rápidamente sin la necesidad de escribir en un dispositivo de tamaño reducido.

— No intentes implementar todas la funcionalidades de tu sistema, sólo integra las más relevantes y en una manera que encaje con la filosofía móvil.

— Asegúrate de que conoces qué dispositivos utilizarán tus clientes y qué funcionalidades son las que más interesa movilizar.

— Ten bien definida tu estrategia de pruebas en móviles, la cual debe cubrir pruebas multiplataforma y variados dispositivos y sistemas operativos.

Page 161: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

156

Gestión de Dispositivos y Aplicaciones en la Empresa

Al desarrollar una aplicación empresarial, siempre hay que tener en cuenta que el hardware que contiene datos confiden-ciales de la empresa se puede extraviar o robar. En la actuali-dad, hay dos enfoques para asegurar dispositivos, contenidos y aplicaciones: Gestión de Dispositivos Móviles (MDM, del inglés Mobile Device Management y Gestión de Aplicaciones Móviles (MAM, del inglés Mobile Application Management). Ambos han sido combinados en lo que se conoce como Enterprise Mobility Management (EMM).

MDM ofrece un control total corporativo sobre un disposi-tivo, por lo que cuando un dispositivo se pierde, se roba o un empleado se marcha, llevándose el dispositivo, la empresa puede limpiar el dispositivo y, esencialmente, éste deja de funcionar. Este enfoque general se toma cuando la empresa es propietaria del dispositivo y por tanto todos los datos y aplicaciones en el dispositivo son propiedad suya: todos los datos personales almacenados en el dispositivo se almacenan en él a riesgo del empleado.

MAM permite a una empresa adoptar BYOD, ya que así la empresa puede asegurar aplicaciones y contenidos descargados a un dispositivo sin quitarle el control del mismo al propietar-io. Cuando un empleado deja la empresa, llevándose consigo su dispositivo, la organización puede deshabilitar las aplicaciones empresariales y limpiar cualquier contenido descargado en el dispositivo sin afectar a los datos personales, como fotografías y aplicaciones de consumo compradas por el empleado. La mayoría de soluciones de MDM y MAM son multiplataforma, siendo compatibles con dispositivos Apple, Android, Windows y BlackBerry, y esto siempre debe tenerse en cuenta a la hora de decidirse por un proveedor de MDM o MAM.

Page 162: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

157Aplicaciones Empresariales

Hay varias funciones de seguridad disponibles a través de estas dos soluciones de gestión, incluyendo:

— Monitorización de dispositivo — Control de licencias — Distribución vía solución interna Over-The-Air (OTA) — Inventariado de software — Control de recursos — Control remoto — Gestión de la conexión — Soporte y distribución de aplicaciones

Las medidas de seguridad incluyen:

— Protección de contraseñas — Encriptación de datos en el dispositivo — Encriptación de datos OTA — Bloqueo remoto de dispositivos — Limpieza de datos remota — Reprovisionamiento de dispositivos — Copia de seguridad de datos en los dispositivos

Page 163: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

158Aplicaciones Empresariales

Ejemplos de proveedores de EMM:

— Airwatch2

— App473

— Apperian4

— Good5

— Microsoft6

— MobileIron7

— Mocana8

— SAP Afaria9

Plataformas de Desarrollo de Aplicaciones Móviles (MADP)

Por lo general, un elemento clave de las aplicaciones empre-sariales es la sincronización de datos. Los dispositivos móviles tienen que recibir información actualizada o relevante de los servidores corporativos y los datos actualizados o recogidos tienen que ser enviado de vuelta. El enfoque de acceso a los datos está determinado por las responsabilidades del usuario, así como por la política de confidencialidad. En cualquier caso, la sincronización tiene que ser segura, ya que los datos de

2 air-watch.com

3 app47.com

4 apperian.com

5 good.com

6 microsoft.com/en-us/windows/windowsintune/explore.aspx

7 mobileiron.com

8 mocana.com

9 www.sap.com/pc/tech/mobile/software/solutions/device-management/overview.html

Page 164: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

159Aplicaciones Empresariales

las empresas son uno de sus activos más preciados. Aún más, una aplicación integrada en toda la empresa debe ser multi-plataforma. Para compensar las deficiencias de los SDK nativos así como de las soluciones multiplataforma más comunes en este aspecto, es posible que desees considerar la evaluación de soluciones tipo Plataformas de Desarrollo de Aplicaciones Móviles (MADP). Las MADP son entornos móviles que pro-porcionan el middleware y las herramientas para desarrollar, probar, implementar y administrar aplicaciones empresariales que se ejecutan en múltiples plataformas móviles con distintas fuentes de datos en el back-end. Su objetivo es simplificar el desarrollo y reducir sus costes, en entornos donde las habili-dades técnicas se deben mantener para múltiples plataformas, herramientas y complejidades, como la sincronización de datos y autenticación.

Algunas soluciones disponibles son:

— Pega Amp10

— IBM MobileFirst Platform11

— Kony KonyOne12

— SAP Mobile Platform13

— Spring Mobile Solutions14

10 www.pega.com

11 www.ibm.com/mobilefirst/us/en/why-ibm-for-mobile/platform.html

12 www.kony.com/products

13 www.sap.com/smp

14 www.springmobilesolutions.com

Page 165: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

160Aplicaciones Empresariales

Seguridad en Aplicaciones Empresariales

Una de las funciones principales de cualquier departamento de TIC es asegurarse de que todos los aspectos de la infraestruc-tura de la empresa están asegurados contra ataques, de modo que no haya fugas de datos y éstos no se vean comprometidos o robados. Dado que los dispositivos móviles son una extensión de la infraestructura TIC de una empresa, todas las aplicaciones empresariales deben ser diseñados para asegurarse de que no se pueden utilizar para obtener acceso ilegal a la red interna corporativa. Como desarrollador de aplicaciones empresariales, por lo general se te pedirá que te ajustes a las normas que la empresa haya establecido en sus políticas de seguridad, así que debes estar preparado para responder a preguntas acerca de la seguridad de tu aplicación, como el cifrado de datos, la comunicación en red y en cómo lidias con dispositivos jailbreakeados o rooteados.

Muchos proveedores de EMM consolidan la seguridad en aplicaciones utilizando técnicas tales como inyección de código u ofreciendo un SDK a los desarrolladores. Éstas funcionalidades, y las actualizaciones regulares de las platafor-mas, permiten a las empresas bloquear de manera remota sus aplicaciones y mantenerse al día en cuanto al voluble pan-orama de la seguridad móvil sin tener que invertir demasiado esfuerzo y dinero en esta tarea.

Page 166: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

161Aplicaciones Empresariales

Puntos Clave para Asegurar Aplicaciones Empresariales

— Si usas un proveedor de EMM, verifica de que tienen las funcionalidades en seguridad suficientes para dar soporte a tus necesidades corporativas.

— Cuando almacenes un dato en el dispositivo, asegúrate de que está encriptado.

— Cuando comuniques con un servicio web, usa siempre https.

— Además de lo anterior, asegúrate de que realizas verifica-ciones de puntos finales tanto en la aplicación como en el servicio web, para confirmar que tanto el servidor como el dispositivo son válidos.

— Siempre verifica que los ajustes del dispositivo cuentan con una checksum para asegurarte de que los valores no pueden ser cambiados una vez instalada la aplicación en el dispositivo.

— No permitas que la aplicación se ejecute en dispositivos jailbreakeados o rooteados.

— Ten un método para deshabilitar la aplicación si ésta detecta que ha sido comprometida.

— Asegúrate de que el uso de encriptación es conforme a normativas de exportación y legislación relevantes para la región donde la aplicación es utilizada.

Page 167: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES
Page 168: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

163Videojuegos para Móviles

Videojuegos para Móviles

La Economía de los Juegos para Móviles

Antes de comenzar a hablar sobre el desarrollo de juegos para móviles deberíamos tratar de entender qué está impulsando ese mercado. El auge de los videojuegos móviles desde los primeros días de Java (técnicamente J2ME) sigue siendo asombroso. La firma de investigación del mercado de videojuegos, Newzoo elevó recientemente sus estimaciones del mercado de los juegos de móvil global, prediciendo que superaría los 25 mil millones de dólares en el 2014 y alcanzando más de 40 mil millones para el año 20171. Según VentureBeat2 los juegos representan el 40 por ciento de todas las descargas de aplica-ciones en tiendas y alrededor del 75 por ciento del gasto total, estando la mayoría de esos ingresos centrados en los 10 juegos líderes, en su mayoría F2P (free-to-play), es decir, total o parcialmente gratuitos. Algunos de estos juegos han dominado los rankings durante los últimos dos años. Juegos como Clash of Clans, Candy Crush y The Simpsons Tapped Out han generado miles de millones y han puesto los juegos móviles en el mismo nivel que los del mercado de videoconsolas.

Es importante saber que para iOS y Android la gran mayoría de los ingresos de los juegos para móviles provienen de juegos F2P. También vale la pena señalar que el 7% de los ingresos

1 www.applift.com/blog/mobile-games-market-update.html

2 venturebeat.com/2014/11/04/candy-crush-leads-in-u-s-and-u-k-but-clash-of-clans-reigns-in-mobile-crazy-south-korea

Page 169: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

164Videojuegos para Móviles

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

Hacer que los juegos funcionen en múltiples plataformas es cada vez más fácil. Alrededor del 54% de todos los juegos mó-viles están diseñados utilizando motores de terceros y el 45% de éstos utilizan Unity. Hay muchos otros motores de Cocos, Corona, GameMaker, Unreal, etc. Cada motor ofrece diferentes ventajas y perspectivas para que desarrolladores con diferentes habilidades puedan construir sus ideas y prepararlas para la lanzamiento rápidamente. Consulta el capítulo Multiplataforma de esta guía para obtener más información sobre los entornos disponibles.

Muchos desarrolladores creen que serán el próximo desar-rollador indie que se haga rico. Esto ocurre con juegos tales como Flappy Bird, que ganan un increíble número de usuarios, pero estos casos están más cerca de ser premios de lotería que ejemplos a seguir. En cambio, es importante que los desarrolla-dores se den cuenta de que el mercado de juegos para móviles se ha convertido en un espacio sofisticado con muchas facetas y desafíos. Antes de empezar a crear tu juego, necesitas prestar atención para comprener la naturaleza del mercado y el público. Una parte esencial de esto es que se ha convertido en un mercado enormemente competitivo, con un gran número de pequeños equipos productores de grandes volúmenes de contenido gastándose mucho dinero en desarrollo y publicidad para conservar su posición.

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

Page 170: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

165164 Videojuegos para Móviles

Gratuitos vs. De Pago

En términos de económicos, está claro lo que sucede cuando la oferta aumenta: los precios caen. Con un suministro de facto infinito, el precio cae a cero. Esto es exactamente lo que ha sucedido y la explicación de que el modelo F2P esté domi-nando. Pero, ¿qué pasa con ese 7% de los ingresos en iOS que procede de juegos premium? Como cualquier mercado, cuando se trata de la competencia tenemos una opción. Podemos buscar volumen (crear un producto básico) o diferenciarnos (crear un nicho). Los juegos premium de éxito son los que han sido capaces de atraer a una audiencia ofreciendo algo que percibido como de mayor valor que en el resto de los juegos disponibles. Juegos como Monument Valley o The Room han demostrado que esto es todavía posible, y se les descubre de-bido a su precio de venta. Esto no ha estado a la escala de los ingresos de los mejores juegos en F2P, a pesar de la insistencia de las tiendas de aplicaciones por potenciarlos.

El movimiento hacia lo gratuito no ha sido un fácil para muchos desarrolladores, y los intentos de 'clonar' de los mod-elos de negocio de juegos como Clash of Clans o Candy Crush rara vez han visto un nivel comparable de éxito. Todo esto a pesar de una fórmula que aparente ser muy simple: tomar una simple mecánica de juego y ofrecer un nuevo contexto social con el fin de que sea infinitamente repetible; a continuación, agregar una forma de fricción que dificulta que el jugador alcance sus objetivos, pero que está programada para dejar el objetivo 'en la punta de los dedos'; permitir que la gente pague para eliminar esa fricción, pero hacer que cada objetivo se convierta en el detonante de uno nuevo, también fuera de su alcance.

Por supuesto esto no es tan fácil y este tipo de fórmula es algo que puede convertirse rápidamente en 'bastante poco

Page 171: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

166Videojuegos para Móviles

divertido' y generar una gran cantidad de abandonos. Incluso si el desarrollador añade un barril lleno de análisis de datos para averiguar dónde están abandonando los jugadores o para encontrar la mejor manera de que paguen más, al final el juego muere inevitablemente. Peor que eso, cuanto más juegos son percibidos con esa rígida aplicación de un modelo de negocio más allá del disfrute del mismo juego, más jugadores rechazan ese tipo de juegos. Si percibes que el juego no es más que un intento de abrirte la cartera, ¿crees que estarás muy enganchado como jugador?

Lo que hace que esos juegos funcionen es que comprenden a las personas y cómo construir un servicio que les permite sentirse competente, en el control y capaz de escapar de sus vidas cotidianas. Los ingresos llegan cuando podemos extender lo más posible el deleite que sienten los jugadores jugadores y su compromiso a largo plazo, dándoles una razón para querer gastar dinero. Tenemos que construir 'valor de ciclo de vida' (lifetime value), no sólo ingresos a corto plazo.

Las discusiones entre los juegos gratuitos y de pago se han vuelto casi tribales entre los desarrolladores de juegos, que se preguntan si los modelos de negocio han empañado la naturaleza del diseño de videojuegos, llegando incluso a cuestionarse acerca de la moralidad de estos diseños centrados en la monetización. Comprender qué modelo seguir, gratuito o de pago, es una cuestión esencial para cualquier desarrol-lador de juegos móviles, pero no se trata tanto del modelo de negocio que nos gustaría seguir como de la mejor manera de involucrar al jugador con el contenido que estamos creando para deleitarle.

Page 172: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

167166 Videojuegos para Móviles

La Ética de Monetizar JuegosGran parte de la atención de la industria móvil en el 2014 se ha centrado en las cuestiones morales y éticas detrás de las aplicaciones de pago frente al F2P. Un juego F2P bien hecho saca el valor del jugador gratuito no sólo en términos de su potencial viral, sino también en términos de creación de una marca y condiciones que animan a los jugadores a pagar. Sin embargo, los F2P no tienen una gran reputación, especialmente entre los padres preocupados por las compras dentro de la aplicación y por algunos diseñadores de juegos. Ha habido una serie de escándalos notables, en especial con niños comprando ‘ accidentally’ miles de dólares en compras dentro de la aplicación. Este argumento ha empañado la imagen de la industria de los juegos en su conjunto y ha atraído la atención de los reguladores legales, incluida la UE, que han publicado directrices sobre la venta de las compras in-app para niños. Sin embargo, hasta la fecha la regulación parece haber sido comprensiva y lógica. Con toda razón, han pedido a diseñadores y jdistribuidores que comunican qué se vende y cómo se accede a ello, en particular en el caso de un público menor de edad. Se ha solicitado a las plataformas que realicen importantes cambios, aunque de bajo impacto, en su funciona-miento (de todos monos, esto ya estaba pasando), y aclarar las expectativas de uso que, a la postre, ya están impuestas por la legislación vigente.

Otra cuestión planteada en contra del F2P es que, como mínimo, la mitad de los ingresos proviene del 0,15% de los jugadores. Según la empresa de testeo de aplicaciones Swrve4, sólo el 1,5% de los jugadores gastan dinero en un juego F2P. Sin embargo, este informe es debatible ya que está compa-

4 recode.net/2014/02/26/a-long-tail-of-whales-half-of-mobile-games-money-comes-from-0-15-percent-of-players

Page 173: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

168Videojuegos para Móviles

rando, esencialmente, el 'comprar' de un juego premium con el 'descargar' de un juego F2P, cuando no son la misma cosa. Los jugadores a menudo descargarán un juego como capricho, pero quizás nunca lleguen jugarlo, y muchos juegos tienen diferentes perfiles de gasto. Algunos juegos tendrán niveles de conversión altos, mientras que otros tendrán un tiempo de conversión más tardío, y cada juego es diferente. Aunque estos números tan extremos sean ciertos, ¿sería eso algo necesari-amente negativo? Un solo jugador pagando 5.000 dólares por algo en un juego puede parecer extremo, ¿pero si gana un cierto valor personal al hacerlo será eso malo?

La respuesta a esta pregunta depende de varios factores, pero se puede resumir en torno a la manipulación o la adicción. Los diseñadores de juegos F2P suelen hablar de condicionamiento operante, y en particular de un experimento conocido como 'caja de solución de problemas' o 'skinner box'. Estas cajas, que llevan el nombre del psicólogo que las creó, permite a animales obtener alimentos pulsando un botón. El experimento demostró que la variación de la velocidad a la que el botón liberaba la comida afectaba al comportamiento de los animales. La premisa es que en los juegos de los diseñadores encuentran la manera de recompensar a los jugadores y que éste es un método equivalente de condicionamiento. Es cierto que algunos experimentos han demostrado que ese tipo de condicionamiento puede funcionar en los seres humanos, al menos a corto plazo, pero en los juegos no controlamos todos los estímulos o utilizamos alimentos (u otras necesidades de bajo nivel) como motivación. Como diseñadores, hay métodos mucho más potentes para retener a un jugador que dar recompensas a corto plazo. Podemos contar historias. Podemos deleitarnos con estímulos visuales y sonoros. Podemos crear juegos que se convierten en experiencias sociales compartidas. Todos ellos tienen un efecto estimulante sobre los usuarios

Page 174: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

169168 Videojuegos para Móviles

mucho mayor que cualquier ejercicio de condicionamiento operante. En el corto plazo es posible (pero no deberíamos) manipular los jugadores, especialmente las personas vul-nerables como los niños, pero si lo haces esa manipulación no durará mucho tiempo y, en el largo plazo, reducirá nuestro valor del ciclo de vida. A nivel comercial, es mucho más eficaz hacer buenos juegos.

La adicción es algo que siempre hemos utilizado como atajo para decir que un juego es bueno y atractivo. Ahora se ha convertido en una fuente de preocupación. Cualquier juego recompensa a los jugadores con una liberación de dopamina cuando tienen éxito, lo cual crea una respuesta fisiológica no muy diferente al consumo de drogas o el ejercicio físico. Sabe-mos que en el caso de los juegos de azar esta clase de química del cuerpo puede crear adicción, que como es una compulsión que anula el comportamiento racional. Sin embargo, los juegos de azar ofrecen un estímulo muy diferente al resto de juegos. Con los juegos de azar el estímulo se basa en la incertidumbre y la apuesta que hacemos. Esa incertidumbre es constante cada vez que jugamos. Con los juegos, en cambio, aprendemos la mecánica y eso reduce la potencia del estímulo con el tiempo. Aunque la adicción a los videojuegos es un problema reconoci-do, es algo que pertenece al ámbito de la adicción conductual, donde una actividad normal se convierte en compulsiva. Este tema aún está en investigación y no está incluido en el Manual diagnóstico y estadístico de los trastornos mentales, en su quinta edición (DSM-5).

Page 175: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

170

Hacer un Buen Juego

La creación de experiencias agradables para nuestro público objetivo requerirá de nuestra máxima creatividad, tal vez más. Los jugadores esperan que creemos diversión y les mostremos nuevas ideas de contenido, y también necesitan ver algo familiar a fin de poder comparar y ayudarles a entender y relacionarse con nuevos contenidos. Scott Rogers en su libro "Level Up" describió esto como el "El Triángulo de la Rareza" (“Triangle of Weirdness”)5. Afirmó que los juegos se componen de un mundo, actividades y personajes, y que podemos cambiar cualquiera de estos por nuevas ideas, pero no podemos cambiar los tres sin correr el riesgo de perder la audiencia.

El tipo de diversión que estamos buscando en los juegos es la que sucede cuando el jugador es capaz de suspender su in-credulidad y participar en una experiencia que no tiene ningún valor en el mundo real. Llegamos a ser totalmente absorbidos en la mecánica y la narrativa de la experiencia. Curiosamente, el desafío y la frustración son tanto las motivaciones para ju-gar como las potenciales causas para abandonar la experiencia. Si somos capaces de mantener el equilibrio entre estos estados

5 mrbossdesign.blogspot.co.uk/2008/09/triangle-of-weirdness.html

Page 176: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

171170 Videojuegos para Móviles

generaremos un estado de placer que todos los diseñadores de juegos conocen, el ‘Flujo de Csikszentmihalyi’6.

Tenemos que apreciar que lo que es divertido en el espacio móvil es diferente de otras plataformas e incluso pueden parecer contradictorios. Necesitamos juegos que sean simples y accesibles, pero con suficiente profundidad, propósito y progresión como para retener la atención del jugador. Si nos fijamos en lo que ha sido un éxito y en lo que no, vemos que un juego móvil tiene que darnos un éxito significativo en menos de un minuto, pero que nos mantendrá jugando durante cientos de días. El juego tiene que evitar que recorramos todo el contenido en una sola sesión, pero también conseguir que juguemos docenas de veces al día. Necesitamos un juego que sea familiar, pero que también destaque lo suficiente como para ser destacado por las tiendas de aplicaciones. Nuestro juego tiene que ser agradable (y, a menudo gratis), pero aún así crear nuevas razones para que los jugadores quieran, es más, necesiten gastar dinero. Y la lista de las aparentes contradicciones continúa.

Hay juegos desarrollados a partir de mecánicas emergentes, bloques de construcción que se combinan creando resultados sorprendentes o estratégicos, como Chess o Clash of Clans. Luego están los construidos con una serie de puntos de decisión progresivos que se resuelven con pasos encadenados para crear una historia como FTL o Monkey Island. Incluso podemos crear juegos que incorporen la creatividad del jugador como Createrria o Minecraft, o rompecabezas abstractos como Threes o SuperHexagon. Sea cual sea el camino que tomamos, el equilibrio está en el centro de nuestro razonamiento como diseñador. Tenemos que decidir hasta qué punto el juego se

6 scienceandvalues.wordpress.com/2010/02/26/csikszentmihalyis-flow-pleasure-and-creativity

Page 177: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

172Videojuegos para Móviles

verá afectado por la habilidad y cuánto por la suerte, el grado en que el juego sigue una narrativa fija o es liderada por el ju-gador, y por supuesto la complejidad de los sistemas internos, ya sea sobre el desarrollo de personajes o una economía de recursos. En el F2P también tenemos que considerar el impacto del dinero gastado en la experiencia de juego.

Lo que a menudo olvidamos es lo que le importa a los jugadores. Una de las preguntas más importantes que debes hacerte es por qué deben elegir tu juego. Seamos sinceros: la mayoría de los videojuegos móviles comienzan como una distracción, incluso si al final nos pasamos más tiempo con nuestros teléfonos que con nuestras consolas. Así que ¿por qué habrían de jugar tu juego? Decir que es un buen juego no es suficiente. Tenemos que ser capaces de responder a esa pregunta con honestidad. Aprender del diseño clásico y del marketing de productos te ayudará a tomar buenas decisiones al respecto.

Enganchando al Jugador MóvilCuando desarrollamos juegos para móviles estamos creando una experiencia para entretener a los jugadores en un tipo específico de dispositivo. Tablets y teléfonos satisfacen necesi-dades diferentes y requieren una atención específica y detalla respecto a las necesidades de uso que cubren. El teléfono suele estar centrado en 'el siguiente minuto', es decir lo más inmediato, lo que obtenemos cuando esperamos que suceda algo o necesitamos entretenernos. ¿Cómo usan los jugadores sus dispositivos tablet? Se trata más bien de un período de descanso o relajación más largo. ¿Qué implica eso para el juego que queremos hacer?

La producción de nuestro juego es la combinación de una visión única, una narrativa convincente y una experiencia ha sido diseñado para afectar a las emociones de los jugadores.

Page 178: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

173172 Videojuegos para Móviles

Todo esto tiene que encajar con la forma en que se consume el juego y en el móvil tendremos que comprender las restricciones inherentes a estos dispositivos. El tamaño limitado de la pan-talla, los controles de pantalla táctil, acelerómetros, duración de la batería, la posibilidad de ser interrumpido, la facilidad para salir y guardar el dispositivo, la calidad del altavoz, la salida de auriculares de alta calidad, etc., afectan a la forma en que los jugadores interactúan con el dispositivo. Los teléfonos móviles están (en su mayoría) conectados a Internet y son el dispositivo más influyente, ya que siempre los llevamos.

Como ejemplo, piensa en la forma en que implementamos los controles. Las pantallas táctiles permiten una amplia gama de movimientos en un plano 2D, pero después de un corto tiempo nuestra piel se calienta y pierde capacitancia, por lo que los controles serán menos fiables. Si simplemente tratamos de emular un sistema de joystick (como muchos juegos hacen) que pronto tendrás problemas con la experiencia de juego. Sin duda, ésta es una de las razones por la que los juegos de disparo en primera persona no han sido tan populares en el móvil. En cambio, debemos diseñar la mecánica de juego con controles que hagan el contacto cómodo o que comprendan los límites de los métodos disponibles, y hacerlos parte de la experiencia. MiniGore es un gran ejemplo, donde la dificultad del juego se ha mejorado gracias a la mecánica twinstick, que lo hace progresivamente más difícil de controlar. Por otro lado, Hayday de Supercell demostró cómo lo táctil podía ser absolutamente maravilloso. El movimiento utilizado para recoger las cosechas es tan agradable que eleva este juego muy por encima de otros de cultivo en cualquier plataforma, y era perfecto para una experiencia en tablet.

La necesidad de satisfacción inmediata de los jugadores no reemplaza la capacidad de enganchar a más largo plazo. Sin embargo, refuerza la necesidad de simplicidad en el juego, tan

Page 179: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

174Videojuegos para Móviles

necesaria en las plataformas móviles, pero la simplicidad en sí no podrá seguir sosteniendo el nivel de interés en jugar. Para mantener a la gente jugando, necesitamos crear un contexto que nos dé una razón para repetir la mecánica de juego. Algo que nos dé un sentido de propósito y progresión, que llame la atención después de que la sesión de juego ha terminado, animando a volver a jugar. Conviene que esa mecánica inicial sea agradable incluso tras de miles de obras de juego.

Juegos como CSR y Candy Crush introdujeron este método de diseño de juegos en el mercado móvil. Encontraron maneras de encadenar una serie de procesos mecánicos para mantener la jugabilidad a través de miles de sesiones, a la vez que daban la sensación de que las metas se conseguían mágicamente. Construyen un compromiso a largo plazo manteniendo a los jugadores involucrados en su juego mientras la experiencia sea suficientemente significativa. Conseguir que los jugadores estén más tiempo jugando tiene un impacto directo en su dis-posición a gastar dinero en el juego. En una encuesta realizada en el 2014 por Unity7, el gasto medio de los jugadores que pasaron menos de una hora con un juego es de 0,66 dólares americanos, pero para los que estuvieron más de 10 horas se eleva a 15,15.

Diseñar el Camino del JugadorComprender la importancia del vínculo a largo plazo con el jugador ha tenido un impacto profundo en el diseño de videojuegos. La idea de un juego como mecánica o historia se transforma cuando se comprende que no sólo es el personaje heroico el que se embarca en un viaje, sino que nuestro jugador también lo hace.

7 www.gamesindustry.biz/articles/2014-10-14-mobile-spending-driven-by-35-44-year-olds

Page 180: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

175174 Videojuegos para Móviles

La primera etapa de ese viaje es el descubrimiento. Los jugadores tienen un conjunto particular de necesidades y aspiraciones cuando ven tu juego por primera vez. Tienes que asegurarte de que el camino hacia el descubrimiento dispone condiciones propicias a descargar y jugar el juego por primera vez. Por lo general, hay pocas oportunidades de establecer las expectativas correctas, pero hacerlo es esencial. Si el juego tiene un coste inicial, informa al jugador de por qué debería comprarlo comprarlo, lo que va a perderse si no lo hacen. Si el juego es gratuito, también tienes que crear expectativas, pero también debes mostrar al jugador por qué la publicidad es es un mal menor, o si hay compras en la aplicación por qué vale la pena realizarlas. Este es un arte delicado. Debes ser claro y transparente, y aún así comunicar por qué el juego es digno de su tiempo e inversión.

Una vez que el jugador ha tomado la decisión de instalar el juego tenemos que facilitarle su uso. Haz el icono y nombre del juego inmediatamente reconocibles e, idealmente, retadores; es decir, una razón para iniciarlo. En esta etapa no queremos que tome decisiones acerca de qué personajes utilizar o qué niveles elegir - que no saben todavía. No le hagas seguirte en Facebook o configurar una cuenta antes de jugar, muéstrale de qué trata el juego. Luego sorpréndele. Podemos comprar esto a "La Apertura Bond", los primeros 5 minutos de cada película de James Bond. Nos impresiona y al mismo tiempo establece todo lo que necesitamos saber acerca de la historia, los agentes super-secretos y el escenario en el que tiene lugar. Pero hace más que eso, asegura que nunca queramos levantarnos del asiento. Es esta doble función de mostrar, no explicar, lo que establece las expectativas para el resto de la película, algo que también se aplica a los videojuegos. Como es un juego, más que mostrar o explicar queremos 'hacer'. El jugador tiene que

Page 181: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

176Videojuegos para Móviles

aprender acerca de los juegos mediante la acción, y disfrutar de sus logros rápidamente.

Si tenemos éxito y logramos educar a los jugadores y esta-blecer las expectativas correctas les mantendremos jugando. Ten en cuenta que necesitan razones para volver. Para que un juego se convierta en algo que jugamos regularmente y durante mucho tiempo, tenemos que entender cómo se percibe el éxito en el mismo. Debemos saber que habrá retos y progresión, así como un sentido de propósito. Esto significa que tenemos que vernos fracasar y aún así continuar jugando. Necesitamos pensar que tenemos asuntos pendientes que nos obligan a superar la dificultad de volver a jugar. Hay que entender las razones para seguir y tener una serie de objetivos alcanzables, sin que compliquen en exceso el juego. Una técnica que puede ayudar es el concepto del melodrama. Hay dos cosas que están sucediendo aquí. En primer lugar, estamos aceptando que tenemos que dar a nuestra audiencia una interrupción natural en la experiencia de juego, y eso es importante. No sugerimos evitar que los jugadores continúen, pero darles la opción de detenerse es útil para construir el compromiso, siempre y cuando se les da una razón para volver. Esa razón para volver podría ser esperar a tener más combustible, que las plantas crezcan, que un vehículo esté reparado o incluso que otro jugador visite la ciudad. La clave es crear la sensación de que si no vuelve se estarán perdiendo algo. Pero sin ser penaliza-dos. Si eres capaz de animar a los jugadores a querer regresar con regularidad y crear "citas" para jugar, entonces sabrás que están verdaderamente "comprometidos".

Una vez que los jugadores están verdaderamente com-prometidos, otros factores se vuelven importantes si quieres mantener su interés. Necesitas mover el juego hacia adelante, con necesidades cambiantes. Por ejemplo en la forma de con-tenido o de extensiones de juego. También podría ser a través

Page 182: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

177176 Videojuegos para Móviles

de juego social. Esto significa la creación de una comunidad, los lazos de unión y el sentido de pertenencia mediante el establecimiento de reglas compartidas. Cuando diseñamos juegos tenemos que pensar en cómo las reglas que utilizamos para entretener y crear un compromiso también proporcionan los medios para que las personas se identifiquen con nuestro juego y lo expresen. Los factores sociales son increíblemente importantes y pueden tener un impacto notable, no sólo en términos de participación sino también en los ingresos. Si la compra dentro de la aplicación no sólo ayuda a a sacarle más partido al juego, sino que también hace ganar prestigio ante otros jugadores, los jugadores serán más propenso a hacerlo.

Cabe destacar que las comunidades sociales ayudan a crear una mayor profundidad de compromiso que algunos han denominado 'Whales' pero y también podemos definir como "auténticos fans". Estos son los jugadores que pasan cantidades significativas en un juego y que a menudo pueden ser la fuente principal de sus ingresos. En muchos juegos, estos jugadores no serán especialmente sociables, ya que prefieren mejorar su capacidad de juego en lugar de relacionarse con otros. Sin embargo, la presencia de otros jugadores crea condiciones favorables que permiten a estos jugadores emerger. Sin jugadores en modo gratuito tendemos a no conseguir el nivel de compromiso del auténtico fan. Es importante no confundir estos jugadores con las personas que son adictas. En la adicción los individuos tienen una compulsión que abruma su comportamiento de otra manera racional. En la práctica, la mayoría de los auténticos fans son personas racionales que han hecho del juego su principal afición. Una conducta adictiva siempre es perjudicial para el individuo y debemos hacer todo lo posible para ayudar a cualquier persona con este tipo de problemas.

La etapa final de la vida del juego es el "churning" o

Page 183: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

178Videojuegos para Móviles

abandono. Es inevitable que al final los jugadores dejen de jugar nuestro juego. Queremos retrasar esto el mayor tiempo posible, pero ignorar esa circunstancia nos dará problemas. Para entender lo que mantiene a la gente jugando durante un período de tiempo prolongado piensa en el "Giro Colombo", se basa en la serie detectivesca en que el actor Peter Falk hace del torpe teniente del mismo nombre. Lo que hizo de esta una de las mejores series de televisión de todos los tiempos es que hizo algo extraño con la narrativa de un misterioso asesinato: el espectador ve quién lo hizo. ¿Dónde está el atractivo de una serie sobre asesinatos si se sabe quiénes los cometen? La clave del espectáculo estaba en esperar a que Colombo estas famosas palabras: "¡Sólo una cosa más!", cosa que siempre ocurría en los últimos minutos del programa. El detective habla por cuarta o quinta vez con el asesino sobre alguna extraña y aparentemente aleatoria evidencia del crimen. Entonces le suelta esa frase y el espectador sabe que entonces procedería aclarar todo lo referente al asesinato, no sólo quién hizo, sino por qué y cómo Colombo lo había descubierto. Esa es el tipo de recompensa predecible que el espectador estaba esperando. ¿Qué es lo que hace que los jugadores vuelvan a tu juego incluso cuando saben todo lo que va a ocurrir?

Ser Descubierto

Si has seguido estas pautas, entonces habrás puesto tu diseño de juego en las mejores condiciones para que se adapte a tu audiencia y, con suerte, te dará una oportunidad de competir en el mercado. Sin embargo, esto por sí solo no es suficiente. Tenemos que usar todas las vías de comunicación que podamos y por lo general estas requieren inversión. Todavía es posible tener éxito sin tener que gastar dinero en publicidad, pero pero implica tener el boleto ganador en una lotería mundial.

Page 184: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

179178 Videojuegos para Móviles

Esta circunstancia se aplica tanto a juegos como a cualquier otro tipo de aplicación móvil. Encontrarás algunos consejos de cómo comercializar tu software en el capítulo sobre mon-etización de este libro, y puede que te interesen las siguientes estrategias específicas para videojuegos.

Hacerse notar por la prensa puede ayudar, especialmente si participas en competiciones tales como Pocket Gamer’s Big Indie Pitch8 o Indie Awards at Casual Connect9. También puede ayudarte atraer la atención de los usuarios de YouTube.

Gastar dinero en publicidad puede ayudar, pero es impor-tante ser consciente de que estás compitiendo con mucha gente y algunos productores relevantes que buscan grandes audiencias. Es importante recordar lo que estás tratando de lograr al crear un anuncio. Hay dos motivaciones: el crear presencia de producto y la acción directa (es decir, la descarga del juego). Es posible, además, poner anuncios de un juego otros juegos y aplicaciones. El camino entre el anuncio y la tienda de aplicaciones es completamente directo. Un clic y es posible comprar/descargar el juego. Eses algo increíble, ya que ningún otro medio tiene ese tipo de experiencia sin fricción.

Otra de las peculiaridades a tener en cuenta es que cuanto mayor sea el alcance (rango de jugadores) que buscas, más cara cada una de las instalaciones. Esto se debe a que la compra de espacio en una red de publicidad se basa en un proceso de licitación y los resultados se calculará sobre la base del coste por instalación (Cost Per Install), coste por mil (Cost Per Mille) o una mezcla de ambos conocida como eCPM (CPM efectivo), así como redes publicitarias como Chartboost.com o AppFlood.com, que ofrecen publicidad cruzada.

La publicidad basada vídeo está creciendo y permite al

8 www.pocketgamer.biz/events

9 indieprize.org

Page 185: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

jugador entender al instante la naturaleza del juego que se muestra. Esto se combina ,a menudo, con Unity Ads10, Vungle.com y AdColony.com, con incentivos dentro del juego - como por ejemplo una moneda. Este tipo de incentivo es diferente de los incentivos externos, tales como los ofrecidos por proveedores como Tapjoy y, y esto es clave, no están permitidos por Apple.

Los eventos regulares y de comunicación con la comunidad nos permiten mantener y hacer crecer nuestra audiencia. Sobre la base de auténticas experiencias sociales, tales como la grabación de vídeos del juego y el intercambio de datos de la comunidad (puntuaciones más altas, etc.), los jugadores pueden ayudarte a llegar a sus amigos y a otros jugadores potenciales a través de Facebook, Twitter, YouTube y Everyplay.

Al final, a pesar de todas las diferencias en los detalles, el mundo móvil es como cualquier otra plataforma. Tenemos que adquirir, retener y rentabilizar nuestra audiencia. Eso sólo sucede si entretenemos a los jugadores en una manera coher-ente con sus dispositivos. Los móviles son, probablemente, los dispositivos más sociales y más integrados de la historia humana. Los juegos para móviles está creciendo a pesar de las dificultades, y las lecciones aprendidas afectarán todos los aspectos del desarrollo de videojuegos.

10 unityads.unity3d.com

Page 186: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES
Page 187: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

182Desarrollo Móvil y el Internet de las CosasDesarrollo Móvil y el Internet de las Cosas

Desarrollo Móvil y el Internet de las CosasHace años, dos gigantes -la industria móvil y la Internet industrial (también conocida como m2m, telemetría integradas e industriales)- vivían vidas separadas. Cada una facturando un billón de dólares hasta la fecha y, sin embargo, con muy poco conocimiento compartido en temas relacionados con cómo proporcionar, en última instancia, servicios end-to-end en un ámbito que los involucraba a ambos. Algunos dicen que es debido a que las compañías de móviles no tienen tradición en trabajar con tecnología de terceros, siendo sus formatos o protocolos a medida de aplicaciones industriales. Otros dicen que es más bien porque los desarrolladores de hardware que crean servicios para el Internet de las Cosas (IoT, de sus siglas en inglés) no conocen o no prestan interés en aprender programación Java para Android o el lenguaje Objective-C, utilizado para crear aplicaciones nativas para iOS.

Por suerte las tornas están cambiando, y muchos sistemas de hardware tradicionalmente cerrados están abriendo APIs y código, publicándolo incluso GitHub1. Migrar hacia estándares más abiertos y exponer interfaces personalizadas a las tecnologías basadas en IP resulta prometedor. La necesidad de comunicar los teléfonos con objetos conectados es cada vez más común, y muchos dispositivos de hardware se encuentran cada vez más desfasados, o incluso inútiles, si no incluyen una aplicación. La funcionalidad de un sistema también se incrementa con el tiempo tras la adquisición de un producto de hardware mediante la actualización de firmware, las aplica-

1 github.com/

Page 188: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

183Desarrollo Móvil y el Internet de las Cosas

ciones, y los servicios del lado del servidor. La costumbre de lanzar pronto y a menudo se ha extendido desde lo digital en el mundo físico, gracias a la arquitectura de software dinámica y la actualización OTA (over-the-air), por no hablar de habituar a los usuarios a comenzar a utilizar objetos que apenas funcionan cuando se adquieren.

Nuevos roles para el móvil

Los primeros usos de dispositivos móviles mostraban el equivalente a ventanas que indicaban lo que esos dispositivos estaban haciendo. Actualmente, tanto los dispositivos móviles como las aplicaciones pueden controlar dispositivos IoT de forma remota, e incluso actuar como un sensor; donde, por ejemplo, la posición GPS de un usuario es esencial para muchos tipos de localización de contenidos y servicios contextuales. En otros casos, el smartphone es una puerta de enlace o proxy para sensores, como es el caso de un dispositivo de seguimien-to deportivo con conectividad bluetooth. Otras funcionalidades habituales son: control remoto, visualización, almacenamiento, operatividad tanto remota como sin conexión, y sistema de autenticación.

Ejemplos de integración de IoT con aplicaciones móviles:

— NEST Smart homes: developer.nest.com — Philips Hue LED lighting: meethue.com — The Nike+ product line: nikeplus.nike.com — BackYardBrains' Roboroach, un sistema de control remoto

para cucarachas: backyardbrains.com/products/roboroach

Visita postscapes.com/internet-of-things-examples para ver más ejemplos de diferentes ámbitos, como la salud, las infraestructuras urbanas, la monitorización del medioambiente o la industria tradicional.

Page 189: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

184183 Desarrollo Móvil y el Internet de las Cosas

Herramientas del oficio

Desde el punto de vista del desarrollador, la aparición y popularidad de la creciente gama de herramientas y kits de desarrollo de terceros es más un punto de interés genuino que una mera moda pasajera. En el momento de escribir estas líneas, el IoT móvil es prácticamente una carrera entre dos caballos llamados iOS y las liberías para desarrollo nativo de Android SDK. Las APIs REST, por supuesto, se pueden generar para la mayoría de aplicaciones móviles.

El contexto puede ser claveCada segmento de mercado del IoT; de los wearables a la automatización de bienes raíces, desde aplicaciones médicas a un control de vigilancia, tiene sus propios desafíos; por ejemplo, el uso sin conectividad, los grandes volúmenes de datos, la necesidad de encriptación, la interacción en tiempo real, o las altas demandas de ancho de banda. Ninguna her-ramienta o biblioteca a todos cubre, El contexto puede limitar tus opciones de implementación.

Puede que te preguntes, con razón, ¿qué hace que una aplicación sea IoT? Aparentemente no parece muy diferente de cualquier aplicación cliente a una base de datos, así que ¿cuál es el factor diferencial? El diablo está en los detalles, como siempre. Digamos que estás auditando el consumo de energía en una casa y hay un gadget conectado a la caja de fusibles, el cual se comunica regularmente con un servicio a través de una interfaz RESTful vía HTTP, y tú accedes a una página web plagada de gráficos a través de tu tablet. Pero entonces tu cliente quiere leer los datos históricos cuando esté desconectado, o leer una etiqueta NFC, o quizás enviar un SMS recordatorio amistoso cuando la sauna tenga la temperatura adecuada, o... por qué no,escanear algunos iBeacons con el

Page 190: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

185Desarrollo Móvil y el Internet de las Cosas

Bluetooth en modo baja energía. De repente, tu proyecto ha escalado más allá de la seguridad del contenedor web, por no hablar del presupuesto de tus proyectos web. Por tanto, una solución nativa, o a veces una mezcla híbrida de web y nativo, es el camino a seguir.

Híbridos para prototipado rápidoComo ingeniero de software, hay una buena razón para considerar herramientas híbridas para el desarrollo y creación de prototipos, especialmente cuando tienes un presupuesto ajustado o tienes prisa. Las tecnologías web son intrínseca-mente más fáciles de asimilar para el desarrollador principiante y permiten un desarrollo más rápido para crear una UX decente, y porque se puede escoger entre librerías potentes de terceros en cada categoría para ayudarte a implementar tu aplicación. No todas ellas están directamente relacionados con las tec-nologías clave del IoT, pero incluso dentro del mundo industrial de Internet vemos una creciente colección de relevantes extras a las capacidades estándar de las tecnologías web accesibles desde un navegador móvil o un componente WebView.

Una de las tecnologías de base más populares para los híbridos es el proyecto Apache Cordova, hermano de su versión comercial Phonegap2. Varios SDKs híbridos comerciales usan Córdova como piedra angular, por ejemplo Worklight (IBM), Salesforce One (Salesforce), Evothings Estudio (Evothings) e Intel XDK. Gracias a su abierta arquitectura de plug-ins, tanto web como componentes nativos (construidos específicamente para cada sistema operativo objetivo) pueden ser combinados con libertad con el objetivo de crear un proyecto de Xcode para iOS o una aplicación Android para publicar en tiendas de aplicaciones. También existen herramientas y librerías disponibles fuera de la familia Córdova, algunos unos pocos se

2 phonegap.com

Page 191: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

186185 Desarrollo Móvil y el Internet de las Cosas

centran exclusivamente en el desarrollo de aplicaciones del IoT, que pueden ofrecer funcionalidades útiles para el desarrollo industrial de servicios.

Comunicaciones y Protocolos

Uno de los asuntos pendientes en el desarrollo del IoT es la aparición de exóticos protocolos de comunicación para un programador móvil, con nombres como XMPP3, MQTT4 y COAP5. Las aplicaciones de teléfonos inteligentes pueden necesitar comunicarse utilizando algunos de estos protocolos para interactuar con los dispositivos IoT. Por suerte, ya hay algunas implementaciones disponibles, como el proyecto Eclipse Paho que incluye un cliente Android6.

Un enfoque centrado en la web puede utilizar tecnologías HTML5, como websockets de interoperabilidad y, como muchos desarrolladores se han dado cuenta, muchas veces los web-sockets simplemente no son los ideales para comunicaciones de baja sobrecarca ya que la mayoría de los formatos de mensajería son incompatibles. Para poder hacer TCP de bajo nivel, conexiones UDP, etc., es necesario introducir otras tecnologías como los Chromium sockets (por ejemplo Berkeley sockets empaquetados para javascripters). Si no te quieres liar, la arquitectura plug-in de herramientas como Cordova7 será útil. Soportar plugins móviles para TLS (Transport Layer Security) también es un paso adelante hacia un buen nivel de seguridad end-to-end, desde el sensor hasta los controles de

3 xmpp.org/

4 mqtt.org/

5 tools.ietf.org/html/rfc7252

6 eclipse.org/paho/clients/android/

7 cordova.apache.org

Page 192: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

187Desarrollo Móvil y el Internet de las Cosas

seguridad del dispositivo IoT, salvándonos de muchas de las in-certidumbres que enfrentan los servicios web y APIs expuestos al público Internet.

Como resultado, una segunda ola de aplicaciones está llegando, en la que las aplicaciones IoT se comunican directa-mente vía radio de corto alcance utilizando protocolos de bajo nivel basados en IP para los datos del sensor, y mensajes de telemetría con mínima sobrecarga.

Lecturas Adicionales

— Understanding The Protocols Behind The Internet Of Things que compara los protocolos utilizados en el IoT: electronicdesign.com/embedded/understanding-protocols- behind-internet-things

— A Cisco view on IoT Application Protocols: blogs.cisco. com/ioe/beyond-mqtt-a-cisco-view-on-iot-protocols

— Scaling the Internet of Things es un vídeo de Yodit Stanton grabado en la conferencia All Your Base 2014: vimeo.com/album/3108317/video/109904567

— Eclipse IoT protocols: iot.eclipse.org/protocols.html — Mobile and Web Messaging, trata MQTT e IoT:

media.jmesnil.net/slides/2014-11-13_oreilly_webcast.pdf — IoT Demonstration using WebSockets: developer.mbed.

org/cookbook/Internet-of-Things-Demonstration

Page 193: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

188Desarrollo Móvil y el Internet de las Cosas

Sigue adelante y prospera

Para finalizar este capítulo, aquí tienes una cuantos buenos puntos de partida que representan algunas de los protagonistas de la industria, software, hardware, agregadores y proveedores de servicios:

— Appmethod: appmethod.com/internet-of-things, herra-mientas cross-platform C++ para aplicaciones IoT

— Estimote: estimote.com, productores de iBeacons y su SDK móvil

— Evothings Studio: www.evothings.com, herramientas de prototipado rápido para IoT para Android e iOS

— IFTTT: ifttt.com, empresa cloud que conecta eventos de múltples servicios online

— Intel IoT, and the Intel XDK: software.intel.com/en-us/iot, herramientas de aplicaciones para microcontroladores y aplicaciones móviles

— Parse: parse.com/products, empresa enfocada al back-end con una gran cantidad de código cliente y librerías

— Phant by Sparkfun: data.sparkfun.com, productores de hardware IoT y accesorios, proveen un ingenioso servidor back-end para IoT perfecto para productores de aplicacio-nes que quieren mantener sus datos

— Relayr: relayr.io, empresa de hardware y aplicaciones IoT

Page 194: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES
Page 195: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES
Page 196: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

191Programando Smartwatches

Programando SmartwatchesDespués del trabajo pionero de Metawatch, Pebble y muchas más empresas, Google lanzó Android Wear en 2014, varios fabricantes sacaron smartwatches compatibles. Samsung lanzó una gama de relojes Tizen y Microsoft su Microsoft Band para fitness, y Apple también sacó Apple Watch. 2015 podría muy bien ser el año del smartwatch.

Los Ecosistemas

Pebble, Android Wear, Apple Watch y Samsung Tizen podrían considerarse las mayores plataformas. También hay relojes in-dependientes Android y toda una gama de trackers de empresas como Nike, quijada, Fitbit, Misfit, Razer y Microsoft. La mayoría de estos dispositivos tienen un historial pésimo respecto a la vida de la batería, por lo que empresas como Martian, Withings o Cogito aplican mejoras inteligentes a relojes tradicionales. En lugar de tener tiempos de vida de días, estos relojes aguantan seis meses o más con una sola batería.

Un hecho interesante es que las grandes plataformas smart-watch aumentan el bloqueo al acceso a ese ecosistema. Los smartwatches de Android requieren un dispositivo Android con certificación de Google que tenga Google Mobile Services, por lo que los dispositivos Android Open Source (AOSP) no sirven. Samsung Tizen permite a los relojes funcionar mejor con los móviles de Samsung, y Apple Watch, como era de esperar, requiere un dispositivo iOS para funcionar correctamente.

Page 197: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

192Programando Smartwatches

De cara a interacción, hay que diferenciar entre aplicaciones independientes que se ejecutan en el reloj y aplicaciones que se ejecutan en el teléfono pero muestran el contenido en el reloj. Muchos smartwatches resultan ser bastante limitados cuando se desconectan del teléfono, pero con es posible añadir una tarjeta SIM y realizar llamadas utilizando directamente el reloj.

Será interesante ver cómo reaccionarán los primeros consumidores sin esperiencia con gadgets a estas nuevas op-ciones. Aunque es bastante seguro que este sector tendrá que evolucionar más tener adopción masiva, también parece que los smartwatches han llegado para quedarse. Hagamos una pre-dicción para la próxima versión de esta guía: los componentes específicos de los smartwatches se integrarán en los capítulos de la plataforma pertinentes. Ahora que ya soportas teléfonos y tablets, y posiblemente ordenadores, puedes seguir adelante y añadir otro factor de forma a tus planes de desarrollo... y ya que estás en ello, ¡no te olvides de televisores y coches!

Diseño de UX para Smartwatches

Sea cual sea la plataforma que elijas, presta atención a la experiencia de usuario de sus aplicaciones para smartwatches. Como tienes poco espacio necesitas mostrar tus intenciones muy claramente y sin información superflua. No importunes a tus usuarios con demasiadas notificaciones o exigiendo una entrada precisa de datos. Algunos dispositivos admiten interacciones táctiles, pero otros sólo utilizan los botones del reloj. Toques y otros gestos pueden ser difíciles de hacer correctamente en una esfera del reloj diminuto, especialmente cuando el usuario está desplazándose.

Page 198: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

193192 Programando Smartwatches

Evalúa qué notificaciones pueden ser útiles para el usuario, y si sería práctica permitirle elegir el sistema de notificación, por ejemplo la vibración en un meeting.

— Pebble ofrece una excelente quía UX como parte de sus mejores prácticas de diseño1. La guía incluye navegación y pautas de diseño e interacción.

— Este artículo en profundidad de Nielsen Norman Group2 combina un análisis del Samsung Galaxy Gear con recomendaciones de diseño para aplicaciones móviles.

— Jonathan Kohl ha escrito un exahustivo artículo sobre el diseño de productos para smartwatches y wearables3

Android Wear

Android Wear se enfoca principalmente – como su nombre indica – a los wearables, pero durante la escritura de éste capítulo el único dispositivo compatible con él son sólo smartwatches. En 2014 proveedores como LG, Motorola, Asus, Sony e incluso Samsung lanzaros relojes basados en Android.

Tu punto de partida para desarrollar es developer.android.com/wear. Siempre necesitarás una aplicación para Android que contenga la aplicación, pudiendo elegir diferentes niveles de integración para soportar smartwatches:

— Sin integración: sólo las notificaciones se mostrarían en un smartwatch conectado. Ten presente que esto podría pro-vocar 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

Page 199: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

194Programando Smartwatches

— Notificaciones mejoradas con Android Wear: puedes mejorar su visualización e interacción en el smartwatch, y añadirles páginas, visualizaciones a pantalla completa y acciones específicas del smartwatch.

— Control de voz: instrucciones de voz para interactuar con la aplicación en el smartwatch.

— Wearable app: crea aplicaciones que se ejecutan directa-mente en el reloj, y por tanto con acceso a sensores, etc. Es útil para, por ejemplo, aplicaciones de fitness para seguir rutas sin necesidad de un teléfono (naturalmente, necesitarías un reloj con GPS). Puedes utilizar la mayoría de las APIs de Android, sólo unas pocas librerías no están soportadas: android.webkit, android.print, android.appwidget, android.app.backup y android.hardware.usb.

Puedes utilizar los emuladores de Android Wear para testear la app, pero necesitarás un dispositivo real para pulir la experiencia de usuario. Para desarrollos en Android en general por favor consulta el capítulo Android. Puedes mantenerte al día de las novedades en Android Wear uniéndote a la Android Wear Developers community4.

Apple Watch

La primera gama de relojes de Apple será lanzada a principios de 2015. Los Apple Watch vienen en dos tamaños y una gama de colores para satisfacer diferentes gustos (y presupuestos).

Puedes comenzar visitando developer.apple.com/watchkit. Si bien no se puede crear aplicaciones independientes puras con la versión inicial de la WatchKit, tienes estas opciones:

4 plus.google.com/communities/113381227473021565406

Page 200: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

195194 Programando Smartwatches

— Notificaciones interactivas: crea notificaciones que se muestran en el Apple Watch y con las que el usuario puede interactuar.

— Glances: información de sólo lectura. — WatchKit Apps: aplicaciones que pueden contener exten-

siones WatchKit, ejecutables en segundo plano del iPhone y con una UI que se muestra en el Apple Watch.

Samsung Tizen

La gama inicial de Samsung de smartwatches operaba con versiones propietarias de Android. En 2014, Samsung comenzó a lanzar relojes "Gear" basados en Tizen e incluso reescribió el firmware de sus relojes existentes para utilizar Tizen. Actual-mente el curvado Samsung Gear S es probablemente uno de los más emblemáticos smartwatches comercializados.

Tus puntos de partida para el desarrollo SmartWatch Tizen son developer.samsung.com/samsung-gear y developer.tizen.org. Puedes empezar a dar soporte a smartwatches Tizen enviando notificaciones interactivas5. La forma más fácil de desarrollar aplicaciones smartwatch independientes para Tizen es incrustar una aplicación Tizen HTML5 dentro de tu aplicación Android. Para la comunicación entre tu aplicación en el teléfono y tu aplicación Tizen tienes que utilizar el SAP SP (Samsung Acces-sory Protocol Service Profile, un nombre que sólo una madre puede amar, por cierto) - básicamente un protocolo byte-array basado en que requiere su propia serialización. Para el desar-rollo general en Tizen, consulta el capítulo al respecto.

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

Page 201: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

196Programando Smartwatches

Para mantenerte al día con las últimas noticias sobre Samsung Gear, sigue el canal de Twitter de Samsung para desarrolladores @samsung_dev.

Pebble

Pebble es, junto con Metawatch, uno de los pioneros del mov-imiento smartwatch. En el momento de redactar este capítulo, existen dos ediciones distintas del reloj Pebble: el original y el de acero. Respecto a hardware, ambos cuentan con una no-táctil-pero-muy-eficiente pantalla e-Paper con una resolución de 144x168 pixels, y 24 kb de RAM para aplicaciones.

Tu punto de partida para el desarrollo en Pebble es developer.getpebble.com. Las aplicaciones están escritas en C. Puedes usar el IDE basado en navegador cloudpebble6 en cualquier sistema operativo, o el SDK de Pebble para sistemas Mac y Linux, y también puedes utilizar Javascript para el desarrollo de aplicaciones que se ejecutan en el teléfono. Una versión inicial pero no oficial de emulador está disponible en GitHub7. Con aplicaciones en segundo plano, el acceso a los sensores y opciones de comunicación con AppMessage/AppSync puedes crear grandes aplicaciones de Pebble. Puedes seguir a Pebble en Twitter en @PebbleDev.

6 cloudpebble.net

7 github.com/PebbleDev/qemu_pebble

Page 202: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

197196 Programando Smartwatches

Activity Trackers

Hay muchos trackers de actividad que ofrecen oportunidades para desarrolladores. A menudo, la única opción es tener acceso a los datos en la nube para poder crear tus propias estadísticas, pero algunos dispositivos también son compat-ibles con aplicaciones independientes. Estos son los trackers más populares, junto con las páginas correspondientes para desarrolladores:

— Fitbit, dev.fitbit.com — Garmin, developer.garmin.com/connect-iq — Jawbone, jawbone.com/up/developer — Misfit, build.misfit.com — Microsoft Band, microsoft.com/microsoft-band (SDK

anunciado) — Nike, dev.nike.com — Polar, developer.polar.com — Razer Nabu, developer.razerzone.com/nabu#

Page 203: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES
Page 204: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

199Analíticas Móviles

Analíticas MóvilesLas analíticas móviles no son, probablemente, la primera cosa que tenemos en cuenta cuando desarrollamos aplicaciones. Sin embargo, es una gran manera de entender qué ocurre con tu aplicación en el mundo real, cuando los usuarios están utilizándola. Las tiendas de aplicaciones proporcionan algunos datos clave e incluso información sobre los bloqueos de nuestra aplicación, pero podemos aprender mucho diseñando e implementando analíticas móviles, y cubriremos los aspectos esenciales de este capítulo.

Los datos de las analíticas móviles pueden ayudar en muchos aspectos de nuestro trabajo, incluyendo negocio y operaciones, y también podemos aprender formas de mejorar el desarrollo y testeo del software. Entre toda esa emoción de desarrollar, necesitamos recordar proteger la privacidad del usuario y respetar sus preferencias y expectativas. Los efectos de las analíticas pueden molestar a los usuarios al consumir recursos valiosos o abusar de la información confidencial del usuario y su uso de la aplicación.

¿Para qué molestarse?

Las analíticas móviles pueden añadir valor a tu organización y tu aplicación, e incluso a los usuarios de la misma, si se utiliza la información inteligentemente para mejorar lo que haces. Los datos capturados se pueden utilizar para orientar tu trabajo y reducir las ineficiencias. Estarás bien acompañado: Más de la

Page 205: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

200Analíticas Móviles

mitad de las aplicaciones móviles más populares ya incluyen analíticas1.

Hay una increíble riqueza en la galaxia móvil, donde tu software se puede utilizar en muchos dispositivos extraños que presentan diferencias significativas en su comportamiento. Investigadores han descubierto que la descarga de la batería puede variar en un rango de 3x cuando se utilizaba su aplicación en dispositivos con especificaciones de hardware similares, e incluso terminaron añadiendo código personalizado para reducir el brillo de la pantalla mientras que la aplicación se ejecutaba en Kindle Fire para mejorar la vida de la batería en un 40%. También descubrieron que los usuarios que utilizaban un teclado usaban su aplicación durante mucho más tiempo.

Mobile DevOps

Mobile DevOps permite a los desarrolladores acercarse a los aspectos operativos de su software. Las tiendas de aplicaciones tienden a complicar las DevOps ya que el proceso de publi-cación está más allá del control directo de los desarrolladores, y algunos aspectos de la recogida de datos son gestionados y retenidos por el proveedor de la tienda. La analytics móviles pueden ayudar a recopilar información equivalente y más datos específicos de la aplicación sobre cómo se está utilizando la aplicación. Estos datos pueden ayudar a mejorar los aspectos DevOp de la aplicación, proporcionando información oportuna y relevante para ayudar a mejorar el funcionamiento de la aplicación. También puedes utilizar los datos para ayudarte a mejorar futuras versiones.

1 blog.velti.com/mobclix-index-the-when-where-what-of-apps, static.usenix.org/event/sec11/tech/slides/enck.pdf

Page 206: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

201200 Analíticas Móviles

Poniéndote En Marcha

Como mínimo, 20 empresas ofrecen un festín de soluciones para analíticas móviles con múltiples sabores, desde el trazado de campañas hasta la mejora de calidad del software. Muchas además incluyen funcionalidades extra, por ejemplo informe de caídas o el trazado de usuarios y beneficios. Casi la mitad ofrecen implementaciones de código abierto para sus librerías, quizás para alejar el temor respecto al comportamiento de las mismas.2

Muchos de los proveedores de soluciones de analíticas para móviles incluyen un apartado 'Getting Started' donde se apre-nde cómo comenzar a utilizar sus productos. Algunos ejemplos son Flurry3 y KISSmetrics4. En general, es necesario registrarse antes de que puedas utilizar cualquiera de los productos de manera útil, ya que necesitan ser configurados con una única 'clave' para tu aplicación.

Examina muchas de las soluciones potenciales antes de decidirte por una. Lee la documentación y código de ejemplo para ver cómo de fácil es implementarla en tu aplicación, y revisa las licencias de usa, incluidos los términos deprivacidad. Elige entonces al menos una para experimentar con ella implementando analíticas móviles en tu aplicación. Integrando su código aprenderás mucho más acerca de los que puedes conseguir, y también acerca de las analíticas móviles en la práctica.

Por último, lee sobre qué utilizan otras aplicaciones y por qué tomaron esa opción, por ejemplo VentureBeat ha descubi-

2 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

Page 207: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

202Analíticas Móviles

erto que el 95% de los desarrolladores Android utiliza Google Analytics, "a pesar de la enorme cuota de mercado de Google, menos de una tercera parte de los desarrolladores móviles la considera su solución de analíticas principal."5

Probablemente desees consistencia en el informe de analíticas para aplicaciones multiplataforma; de otra manera, puede que te encuentres intentando comprar paquetes de datos que difieran, o sean incluso completamente diferentes, especialmente si se utilizan diferentes soluciones para las distintas plataformas de desarrollo. Considera elegir una única solución común que soporte todas las plataformas en las que deseas construir tu aplicación.

Dos proveedores son especialmente destacables: Seg-ment.io6 abstrae un amplio abanico de métricas, y tienen publicado su código con licencia de código abierto en github.com/segmentio, donde muestran maneras de imple-mentar su herramienta de forma que se reduzca el esfuerzo necesario para adaptarla a diferentes proveedores de analíticas. Count.ly7 ofrece implementaciones de código abierto tanto vía su servidor como a través de librerías cliente, y ani-man a los usuarios potenciales a crear un entorno de pruebas completo para probar su producto.

5 venturebeat.com/2014/12/02/230-developers-and-1-8m-apps-reveal-the-best-mobile-app-analytics-solutions

6 segment.io/

7 count.ly/

Page 208: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

203202 Analíticas Móviles

Decidir Qué Medir

¿Qué te gustaría a medir, comprender, acerca de cómo se está utilizando la aplicación? Algunas sugerencias:

— Eventos clave de uso: Por ejemplo, de cuándo se usa la opción de búsqueda o se abre una red social desde tu aplicación.

— Eventos centrados en el negocio: Cualquier interacción generada por el usuario que suponga un beneficio para tí. ¿Con qué frecuencia tus usuarios compran la versión premium de tu aplicación y otros ítems ofrecidos en su interior? ¿Cuándo cancelan pedidos o descartan un carrito de compra antes de realizar el pago?

— Eventos centrados en la aplicación: Rendimiento, usabili-dad, fiabilidad, y otros datos en torno al comportamiento de la aplicación.

Una vez definidas las principales áreas de interés tendrás que diseñar las métricas de análisis, por ejemplo, cuáles elementos de los datos deberían ser reportados.

Definir Cómo Medir

Crea nombres significativos para tus eventos de interacción, para que puedas recordar fácil y correctamente lo que miden. Para cada evento que desees grabar, debes decidir cuáles son los elementos que necesitan ser incluidos. Considera cómo serán utilizados los datos una vez que se hayan obtenido; por ejemplo, esboza informes y diagramas estándar y mapea cómo los diversos datos serán procesados para generar cada informe o gráfico.

Page 209: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

204Analíticas Móviles

Asimismo, recuerda abordar temas sobre globalización, tales como la fecha y hora de cada elemento. ¿La aplicación detectará el momento de un evento de acuerdo a la ubicación del dispositivo, su configuración o utilizando un tiempo global como el UTC8?

Algunas de las soluciones de analítica móvil grabarán y reportarán automáticamente los elementos de datos al servidor. Vale la pena comprobar cuáles son estos elementos, cómo y cuándo se presentan, y cómo están formateados. Entonces podrás decidir si deseas utilizar y confiar en estos elementos reportados automáticamente.

Las etiquetas personalizadas de eventos enriquecen aquellos predefinidos, y muchas de las soluciones de analítica móvil proporcionan medios para que tu aplicación los genere. Es posible que necesites formatear los mensajes de eventos personalizados. Si es así, pon atención a la codificación de los elementos y los separadores, es posible, por ejemplo, que deban pasar por codificación URL9 cuando se envían mensajes como REST10.

También puede que desees considerar la frecuencia con que la aplicación debe informar sobre eventos para minimizar el riesgo de saturar la capacidad disponible del sistema de analíticas, lo que podría afectar a la fiabilidad y exactitud de los datos suministrados. Localytics tiene algunos ejemplos de integración interesantes11. Un método para reducir el volumen de datos procesados es el samping. Adán Cassar ha publicado un interesante post sobre este tema en www.periscopix.co.uk/blog/should-you-be-worried-about-sampling.

8 en.wikipedia.org/wiki/Coordinated_Universal_Time

9 en.wikipedia.org/wiki/Percent-encoding

10 msdn.microsoft.com/en-us/library/live/hh243648

11 support.localytics.com/Integration_Overview

Page 210: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

205204 Analíticas Móviles

Adaptando tu Código

Puede que tengas que declarar capacidades adicionales nece-sarias para que los análisis móviles funcionen correctamente cuando se integran con tu aplicación.

Para Android, a éstos se les conoce como permisos. Probablemente las analíticas necesitarán permisos de Internet de modo que los eventos puedan ser enviados online, y permisos centrados en la localización en el caso de que la solución registre la ubicación del teléfono. Si tu aplicación ya está utilizando esos permisos, no es necesario especificar su uso de nuevo.

Para iOS, UIRequiredDeviceCapabilities indica a iTunes y a la App Store qué características de dispositivo requi-ere la aplicación. Se implementa como un diccionario donde los elementos se especifican utilizando claves, que incluyen WiFi, servicios de localización y GPS.

En Windows Phone 7 y 8, se utilizan capacidades para decidir lo que la aplicación utiliza. Localytics tiene online una

guía de arranque rápido12 que incluye un ejemplo de configuración de la capacidad ID_CAP_IDENTITY_DEVICE. Windows Phone 8.1 recomienda en cambio utilizar App Specific Hardware ID (ASHWID)13.

Gestionando los Resultados

Hay un lapso de tiempo entre que una aplicación envía un evento de analíticas y la información es procesada y puesta a tu disposición. El retardo, o latencia, varía entre muy cerca de 'tiempo real' y varias horas. Tú, y tus promotores, debéis decidir

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

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

Page 211: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

206Analíticas Móviles

cuánto tiempo podéis permitiros retrasar el conocimiento sobre acontecimientos en tiempo real.

Algunas soluciones de análisis proporcionan una API para acceder a los datos. Esto te permite realizar tener un mayor campo de visión a la hora de crear informes personalizados. Algunos te permiten hospedar los servidores, lo que te aporta mayor control sobre los datos y su uso.

Para evaluar la calidad de los resultados, algunas empresas invierten esfuerzo adicional en incorporar múltiples soluciones de análisis en su aplicación y cruzar después los resultados. Sin embargo, dos resultados contradictorios no se reconcil-ian fácilmente, así que puede ser necesario el uso de tres bloques de resultados para diagnosticar las diferencias por triangulación14. Si has decidido trabajar con KISSmetrics, echa un vistazo a su artículo sobre maneras de evaluar tus métricas en support.kissmetrics.com/getting-started/testing-km.

¿Qué puede ir mal?

El camino al infierno está empedrado de buenas intenciones. Hay muchas cosas que pueden salir mal en la implementación de alas analíticas. Algunas de los más comunes incluyen:

— Resultados sin calibrar: confiar ciegamente los datos pueden conducir a una vorágine de problemas. Los resultados puede ser inexacto y engañoso, causando problemas derivados al ser utilizados para gestionar tu negocio y trabajo. Una buena práctica es poner a prueba la aplicación de análisis desde el principio, empezando sin usuarios, y probando después uno individual antes de

14 en.wikipedia.org/wiki/Triangulation_(social_science)

Page 212: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

207206 Analíticas Móviles

probar con más usuarios. Mira la latencia, la precisión y la fiabilidad de los datos capturados.

— Traicionar la confianza: los usuarios creen implícita-mente que las aplicaciones se comporatarán bien en sus dispositivos móviles. Sin embargo, las aplicaciones pueden romper accidentalmente o deliberadamente esa confianza, por ejemplo mediante el seguimiento de los usuarios, la grabación y luego el uso de datos sensibles, etc. Trata de no esconderte detrás de licencias de uso que poca gente lee y menos aún entienden. En su lugar, asegúrate de que tu aplicación y las librerías de analíticas que utilices se comportan de forma adecuada y "haz lo que quisieras que hicieran otros, y no husmees donde no debes."

— Regalar el tesoro: asegúrate de que tienes derechos suficientes y acceso a los datos que se obtienen de las analíticas. Es especialmente relevante cuando se utilizan las bibliotecas y servicios de terceros.

Tenga presente que algunos proveedores de soluciones analíticas pueden utilizar los datos reportados por su apli-cación y proporcionarlos y venderlos a otros. Ellos pueden controlar la vida de los datos, lo que significa que podrían hacer que sean inaccesible para ti. Además, podrán conser-varlos y usarlos mucho después de que hayas jubilado tu aplicación. Si hay información de identificación personal en los datos, puede haber implicaciones legales y de privacidad adicionales. Así que vale la pena considerar cómo la utilizarán terceros y cómo se compartirán los datos comunicados a través de tu software y las APIs.

Page 213: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

208Analíticas Móviles

Privacidad

Tus aplicaciones se utilizan de manera remota por gente que no conoces. Las aplicaciones pueden convertirse en vigilantes de los usuarios y de su comportamiento con ellas.

Recuerda que debes explicar a los usuarios finales que la aplicación está diseñada para registrar y compartir información acerca de cómo la aplicación se está utilizando, a ser posible en los términos y condiciones que desees. Puede que necesites, o te interese, que los usuarios tengan capacidad de decidir si permiten un seguimiento a su uso de la aplicación. Si es así, facilítale al usuario el control sobre los ajustes; además, considera la posibilidad de proveer al usuario de una forma de acceder a los datos registrados, borrarlos, o ponerse en contacto con el proveedor de soluciones de analíticas.

Page 214: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

209Analíticas Móviles

Los proveedores de librerías de terceros parecen tener variadas aproximaciones a la privacidad. Algunos declaran que la privacidad de los usuarios es de suma importancia y resaltan la relevancia de no realizarles seguimiento. Google Analytics prohibe de manera fehaciente trazar información personal que permita la identificación en sus términos de servicio15. Otros proveen de ejemplos, incluidos fragmentos de código, que demuestran cómo grabar datos de identificación personal. Por ejemplo, KISSmetrics provee el siguiente código16: ] identify:@"[email protected]"];, y Mixpanel ofrece un ejemplo de cómo actualizar el registro de analíticas personales de un usuario17.

Hay varios lugares para aprender más sobre privacidad y la ética de trabajar con datos relativos a los usuarios, por ejemplo:

— El post en el blog de Jeff Northrop sobre analíticas móviles18

— El libro de Kord Davis "Ethics of Big Data"19 (O'Reilly, 2012)

15 www.google.com/analytics/terms/us.html

16 support.kissmetrics.com/apis/objective-c

17 mixpanel.com/docs/people-analytics/android

18 jnorthrop.me/2012/07/2/privacy-considerations-mixpanel-people-analytics/

19 disponible en shop.oreilly.com/product/0636920021872.do

Page 215: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

210Analíticas Móviles

Aprende Más

Esperamos que este capítulo haya despertado tu curiosidad por saber más acerca de las analíticas móviles. A continuación, algunos lugares para comenzar tu investigación:

— Capturing Mobile Experience in the Wild: A Tale of Two Apps20, un estudio de la Universidad de Wisconsin destacando la importancia de las analíticas centradas en las aplicaciones, basado en datos de 1millón de usuarios recogidos durante 3 años.

— The Beginner's Guide To App Analytics21, disponible en descarga gratuita.

— The Mobile Developer's Guide to the Parallel Universe22, libro hermano ésta guía, centrado en las analíticas móviles desde la perspectiva del marketing.

— TNW ofrece un buen artículo introductorio23 desde la perspectiva de un desarrollador.

— Upsight24 ofrece un gran abanico de documentos, webinars y otros recursos sobre las analíticas móviles.

20 static.googleusercontent.com/media/research.google.com/en//pubs/archive/41590.pdf

21 info.localytics.com/download-beginners-guide-to-app-analytics

22 wip.org/resources/#mobile-developers-guide-parallel-universe

23 thenextweb.com/dd/2013/08/11/9-tools-to-help-you-measure-mobile-analytics

24 upsight.com/resources

Page 216: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

Application Security

Page 217: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

212Seguridad de la Aplicación

Seguridad de la AplicaciónLos lectores de esta guía saben cómo de extendidos están los smartphones y cómo de útiles pueden ser las aplicaciones móviles. Los dispositivos móviles, además, son también mucho más personales que lo que jamás lo han sido los ordenadores. La gente se despierta con sus teléfonos, permanecen cerca de ellos todo el día, y duermen a su lado por las noches. Con el tiempo se convierten en nuestros ‘colaboradores de confianza’.

Muchas de estas aplicaciones se aprovechan de tal cercanía y confianza. Por ejemplo, tu teléfono puede ser tratado como un eslabón en el proceso de autenticación para acceder a tu cuenta bancaria, o tu tableta puede tener acceso directo a las películas online que has comprado. Tu dispositivo podría incluso contener una cartera con dinero real para realizar pagos con NFC o monedas virtuales como Bitcoins.

Las aplicaciones móviles están atrayendo la atención de hackers y ladrones cuyos intereses se extienden mucho más allá de conseguir gratis una aplicación de 99 céntimos. En Q3 2014 Kaspersky Lab detectó 74,489 programas móviles maliciosos1. Los datos históricos de la red y las defensas de punto final (como antivirus) no son suficientes. Incorporar medidas de seguridad en una aplicación móvil es un tema crítico.

La arquitectura de las aplicaciones móviles sigue evolucio-nando. Algunas aplicaciones son sólo nativas, y requieren de bases de código muy diferentes para cada sistema operativo móvil. Otras son webviews, poco más que la URL de un sitio web envuelta en un icono. Algunas son híbridas, una combi-nación de funcionalidad de aplicación nativa con webviews. La mayoría de aplicaciones móviles necesitan conectarse con los

1 securelist.com/analysis/quarterly-malware-reports/67637/it-threat-evolution-q3-2014

Page 218: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

213Seguridad de la Aplicación

servicios de back-end utilizando tecnologías web para buscar o actualizar información. Al igual que las aplicaciones web, la seguridad para aplicaciones clásica necesita ser aplicada a las aplicaciones móviles. La entrada de datos debe ser validada por tamaño, tipología y valores permitidos. El manejo de errores debe proporcionar mensajes de error útiles para los usuarios a la vez que evitar el filtrado de información sensible. Las pruebas de penetración en aplicaciones son necesarias para asegurarse que los controles de identificación, autenticación y autorización no pueden ser superados. El almacenamiento en los dispositivos debe ser inspeccionado y probado para asegurar que los datos sensibles y las claves de cifrado no se almacenan en texto plano. Los archivos de registro no deben capturar contraseñas u otra información sensible. La configura-ción SSL debe ser probada.

Los usuarios desean utilizar sus aplicaciones de forma se-gura y no quieren sorpresas desagradables. Su dispositivo móvil puede exponerlos a mayores vulnerabilidades, por ejemplo, su ubicación podría ser rastreada, potencialmente, utilizando el GPS incorporado, la cámara y el micrófono podrían ser utilizados para capturar información que preferirían mantener privada, y así sucesivamente. Las aplicaciones también pueden ser escritas para acceder a información confidencial, como por ejemplo los contactos, o hacer llamadas telefónicas de manera encubierta y enviar mensajes SMS a números de tarificación adicional.

El desarrollador de la aplicación puede estar preocupado por su reputación, pérdida de ingresos y de propiedad intelec-tual, mientras que las empresas quieren proteger los datos empresariales a los que los usuarios pueden acceder desde sus dispositivos, posiblemente utilizando tu aplicación. ¿Pueden sus datos mantenerse separados y protegidos de todo aquello que el usuario ha instalado?

Page 219: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

214213 Seguridad de la Aplicación

Posibles Amenazas

En algunas plataformas (iOS y Android en particular), desacti-var la verificación de firmas es una práctica bastante común. Necesitas considerar si es relevante o no el que alguien pueda modificar tu código y ejecutarlo en un dispositivo jailbreakea-do o ruteado. Un punto obviamente clave sería la eliminación de una verificación de licencia, lo que podría dar lugar a que tu aplicación sea robada y usada de forma gratuita. Menos evidente, pero más grave, es la amenaza de inserción de código malintencionado (malware) que puede robar información de los usuarios, o inyectar contenido ilícito, y destruir la reputación de tu marca.

La ingeniería inversa sobre tu aplicación puede dar a hackers el acceso a una gran cantidad de datos sensibles, tales como las claves de cifrado para películas protegidas con DRM, el protocolo secreto para hablar con tu servidor de juegos online, o la manera de acceder al crédito almacenados en el teléfono para tu sistema de pago móvil. Sólo se requiere un hacker y un teléfono jailbreakeado para explotar cualquiera de estas amenazas.

Si tu aplicación maneja dinero real o contenido valioso es necesario tomar todas las medidas posibles para protegerla de ataques Man-At-The-End (o MATE, en el que el atacante tiene acceso físico al dispositivo). Y, si estás implementando un estándar DRM, tendrás que seguir las reglas de robustez que hacen obligatorias las medidas de auto-protección.

Page 220: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

215Seguridad de la Aplicación

Protegiendo tu Aplicación

Escondiendo el Plano de tu CódigoAlgunas plataformas móviles se programan utilizando código administrado (Java o NET.), integrado por los códigos de bytes ejecutados por una máquina virtual, en lugar de hacerlo directamente en la CPU. Los formatos binarios para estas plataformas incluyen metadatos que establecen la jerarquía de clases y dan el nombre y tipo de cada clase, variable, método y parámetro. Los metadatos ayudan a la máquina virtual a implementar algunas de las características del lenguaje (por ejemplo, la reflexión). Sin embargo, los metadatos también son muy útiles para un hacker que esté tratando de realizar ing-eniería inversa del código. Hay programas de descompilación, de libre acceso, que regeneran el código fuente a partir de los códigos de bytes, y hacen ingeniería inversa fácilmente.

La plataforma Android tiene la opción de usar la Interfaz Nativa Java (JNI, del inglés Java Native Interface) para ac-ceder a funciones escritas en C y compilar en código nativo. Es mucho más difícil que el código nativo sea objeto de ingeniería inversa en comparación con Java, por lo que se recomienda para cualquier parte de la aplicación donde la seguridad es de suma importancia.

"gcc" es el compilador utilizado normalmente para generar código nativo para Android, mientras que su gemelo "clang" se utiliza para iOS. La configuración predeterminada para estos compiladores prepara cada función para ser exportada desde un objeto compartido, y la agrega a la tabla de símbolos dinámi-cos en el binario. La tabla dinámica de símbolos es diferente a la tabla de símbolos utilizada para la depuración y es mucho más difícil de desmantelar después de la compilación. El volcado de los símbolos dinámicos puede dar a un hacker un índice muy útil de cada función en el código nativo. El uso

Page 221: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

216215 Seguridad de la Aplicación

correcto del conmutador del compilador -f visibility2 es una manera fácil de hacer que sea más complicado comprender el código.

El código compilado en Objective-C contiene el código máquina y una gran cantidad de metadatos que pueden proveer a un atacante de información sobre nombres y la estructura de llamada de la aplicación. En la actualidad, existen herramientas y scripts para leer estos metadatos y guiar a los hackers, pero no hay herramientas para ocultarlos. La manera más común de construir una interfaz gráfica para iOS es el uso de Objective-C, pero el método más seguro consiste en minimizar su uso y cambiar a C o C++ para todo lo que no sea la interfaz gráfica de usuario.

Escondiendo el Control de FlujoIncluso si todos los nombres están ocultos, un buen hacker todavía puede averiguar cómo funciona el software. Hay herra-mientas comerciales de protección de código administrado que pueden ocultar deliberadamente el camino a través del código recodificando las operaciones y rompiendo los bloques de instrucciones, lo que hace la decompilación mucho más difícil. Con una buena herramienta de protección bien ubicada, un intento de decompilar un binario protegido terminará o bien en un fallo de decompilador o en un código fuente no válido.

Decompilar código nativo es mucho más difícil, pero se puede conseguir. Incluso sin una herramienta, no se necesita mucha práctica para ser capaz de seguir el control de flujo en el código ensamblador generado por un compilador. Las aplicaciones con un fuerte requisito de seguridad necesitarán una herramienta de ofuscación para el código nativo, así como para el código administrado.

2 gcc.gnu.org/wiki/Visibility

Page 222: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

217Seguridad de la Aplicación

Protegiendo las Comunicaciones de RedLas comunicaciones de red también son vulnerables, sobre todo cuando las aplicaciones se pueden instalar en emuladores o simuladores, donde los analizadores de red son de libre acceso y pueden monitorear e interceptar el tráfico de red. Protege todas las comunicaciones propietarias utilizando HTTPS. Aún así, los ataques MATE, especialmente a través de redes WiFi, pueden desvelar datos sensibles. Una manera de incrementar la seguridad en la transmisión es usar encriptación asimétrica entre el servidor y la aplicación móvil (utilizando pares de claves públicas y privadas) para asegurar la seguridad de punto a punto. Para datos y aplicaciones especialmente relevantes, cabe instalar servidores VPN (del inglés Virtual Private Network) y también sus correspondientes clientes en los dispositivos móviles. Las redes VPN ofrecen generalmente mayor fiabilidad en cuanto autenticación y transporte de datos respecto a HTTPS.

Protegerse contra la Manipulación de Datos (Tampering)Puedes proteger el código base aún más detectando los intentos de manipulación en la aplicación y respondiendo a esos ataques. El código criptográfico siempre debe utilizar algoritmos de cifrado estándar relativamente seguros (por ejemplo, AES, RSA, ECC) pero, ¿qué pasa si un atacante puede encontrar las claves de cifrado en tu archivo binario o en memoria en tiempo de ejecución? Esto podría resultar en que el atacante tenga acceso a contenido valioso. Incluso si utilizas criptografía de clave pública y sólo se expone una parte del par de claves, todavía tienes que considerar lo que ocurriría si un atacante intercambiara esa clave por la otra mitad que ya conocía. Se necesita una técnica para detectar cuándo el código ha sido manipulado. Hay herramientas disponibles que encriptan/desencriptan código sobre la marcha, ejecutan

Page 223: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

218217 Seguridad de la Aplicación

las sumas de verificación contra el código para detectar su manipulación, y reaccionan cuando el código ha cambiado.

Las comunicaciones entre la aplicación móvil y los servicios de backend pueden ser monitorizadas y pirateadas. Incluso cu-ando se utiliza HTTPS, un proxy web interceptor (como Paros) puede ser configurado con una conexión WiFi que inspeccionará el tráfico encriptado. Los atacantes pueden entonces manipular los datos en tránsito, con fines de lucro o entretenimiento. Así que, si se están enviando datos realmente sensibles a través de HTTPS, considera encriptar/desencriptar datos en la aplicación móvil y en el servidor, de modo que los sniffers de red sólo puedan ver datos cifrados.

Protegiendo Algoritmos CriptográficosUna herramienta activa contra la manipulación puede ayudar a detectar o prevenir algunos ataques a claves criptográficas, pero no permitirá que las claves permanezcan siempre ocultas. La criptografía de caja blanca tiene por objeto aplicar los algoritmos de cifrado estándar de manera que las claves permanecen ocultas. Algunas versiones de criptografía de caja blanca utilizan complejos enfoques matemáticos para obtener los mismos resultados numéricos de una manera que es difícil de deducir por ingeniería inversa. Otras insertan claves en tablas de consulta y máquinas de estados que es difícil que sean objeto de ingeniería inversa. La criptografía de caja blanca sin duda será necesaria si vas a escribir código DRM o necesitas almacenamiento de datos de alta seguridad.

Page 224: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

219Seguridad de la Aplicación

Mejores Prácticas

No Almacenes Secretos o Información PrivadaMinimiza la cantidad de información sensible almacenada en el dispositivo. No almacenes las credenciales o claves de cifrado, a menos que se utilice un almacenamiento seguro protegido por una contraseña compleja. En su lugar, guarda los tokens de autenticación que tienen tiempo de vida y funcionalidad limitados.

Los archivos de registro son útiles para diagnosticar errores en el sistema y hacer un seguimiento del uso de las aplicacio-nes, pero vigila no violar la privacidad de los usuarios mediante el almacenamiento de información de ubicación, o registrar información personalmente identificable de los mismos. Algunos países tienen leyes que restringen la información de seguimiento que se puede recopilar, así que asegúrate de comprobar las leyes al respecto de los países en los que será utilizada tu aplicación.

No imprimas seguimientos de pila ni diagnósticos de sistema que un havker pueda aprovechar para penetrar a mayor profundidad.

No Confíes en el DispositivoCuando diseñas una aplicación, supón que el dispositivo será propiedad de un atacante tratando de abusar de la aplicación. Realiza el mismo ciclo de desarrollo de software seguro en la creación de aplicaciones móviles que emplearías con los servicios de backend. No confíes ni siquiera en las bases de datos que creas para tus aplicaciones móviles, un hacker puede cambiar su esquema. No confíes en el sistema operativo para obtener protección, la mayoría de esas protecciones pueden ser anuladas de manera trivial por un jailbreak al dispositivo.

Page 225: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

220219 Seguridad de la Aplicación

No confíes en que los almacenes nativos de claves mantendrán los datos protegidos, se puede irrumpir en algunos almacenes de claves por fuerza bruta, a menos que el usuario proteja el dispositivo con una contraseña compleja y de gran longitud.

Minimiza los PermisosAndroid tiene el concepto de permisos, mientras que iOS tiene derechos, que permiten el acceso de las aplicaciones a sensores tales como el GPS y contenido sensible. En Android estos permisos deben ser especificados como parte de la creación de la aplicación, en el archivo AndroidManifest.xml. Éstos son mostrados al usuario cuando opta por instalar la aplicación en su dispositivo.

Cada permiso aumenta el potencial de que tu aplicación haga cosas nefastas, y eso puede disuadir a algunos usuarios incluso de descargar la aplicación. Así que intenta minimizar el número de permisos o de características que tu aplicación necesita.

Herramientas

ProtecciónEl renombrado de código básico de Java puede ser realizado mediante Proguard3, una herramienta de código abierto, y GuardIT de Arxan4.

Dos comercializadores de herramientas de protección de código gestionado (Java y .NET) son Arxan Technologies5 y PreEmptive Solutions6.

3 www.proguard.sourceforge.net

4 arxan.com

5 arxan.com

6 preemptive.com

Page 226: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

221Seguridad de la Aplicación

La mayoría de vendedores de herramientas de protección de código nativo y librerías criptográficas de caja blanca son Arxan e Irdeto7.

Las técnicas para proteger Android frente a manipulación de datos están documentadas en androidcracking.blogspot.com. EnsureIT de Arxan te permite insertar código adicional en tiempo de compilación para detectar depuradores, usar sumas de validación para detectar cambios y permitir al código ser desencriptado o reparado sobre la marcha.

SniffingUna herramienta web proxy estándar es Paros8, y una herra-mienta estándar de sniffing de red disponible en las platafor-mas habituales es Wireshark9.

De-CompilingVéase el decompilador Hex Rays10.

7 www.irdeto.com

8 sourceforge.net/projects/paros

9 sourceforge.net/projects/wireshark

10 www.hex-rays.com

Page 227: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

222221 Seguridad de la Aplicación

Aprende Más

A continuación, algunos recursos y referencias útiles que pueden ayudarte:

— Apple ofrece una guía general de seguridad de software11. También incluye múltiples enlaces a temas más detallados de su plataforma.

— Hay cursos comerciales de entrenamiento disponibles para iOS y Android, y el Lancelot Institute12 ofrece cursos de programación segura que cubren iOS y Android.

— O'Reilly ha publicado el libro de Jeff Six sobre seguridad en Android, Application Security For The Android Platform13 y otro para iOS, Jonathan Zdziarski: Hacking and Securing iOS Applications14 .

— Charlie Miller et al. publicaron el iOS Hackers Handbook15, que demuestra cómo de fácil es robar código y datos de dispositivos iOS.

— Investigadores académicos han demostrado cuánta información puede ser obtenida de aplicaciones públicas Android en USENIX 201116.

— Qualsys Labs17 ofrece una herramienta de testeo SSL.

11 developer.apple.com/library/mac/navigation/#section=Topics&topic=Security

12 www.lancelotinstitute.com

13 shop.oreilly.com/product/0636920022596.do

14 shop.oreilly.com/product/0636920023234.do

15 www.wiley.com/WileyCDA/WileyTitle/productCd-1118204123.html

16 static.usenix.org/event/sec11/tech/slides/enck.pdf

17 www.ssllabs.com/ssltest/

Page 228: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

223Seguridad de la Aplicación

— Extensas guías y herramientas de testeo gratuitas de aplicaciones son ofrecidas por OWASP18, incluyendo el OWASP Mobile Security Project19.

— AT&T ofrece una herramienta de código abierto de moni-torizado de rendimiento de aplicaciones Android llamada AT&T's Application Resource Optimization tool20.

Conclusiones

Cada vez hay mayor confianza en las aplicaciones móviles, pero están expuestas a mucha gente que quisiera aprovecharse de tal confianza. El nivel adecuado de seguridad de una aplicación es algo que debe considerarse para cada caso en particular. Al final, tu aplicación va a estar ahí fuera, sola ante el peligro, y tendrá que defenderse de los piratas informáticos y otras amenazas maliciosas, donde quiera que vaya.

Invierte tiempo en aprender acerca de las características y capacidades de seguridad de las plataformas móviles que tienes como objetivo. Usa técnicas como el modelado de amenazas para identificar los peligros potenciales relacionados con su aplicación. Realiza revisiones del código y elimina métodos no esenciales de registro y depuración. Considera cómo un hacker podría analizar tu código y, a continuación, utiliza técnicas similares contra la aplicación en un ambiente seguro para descubrir vulnerabilidades y mitigarlas antes de publicar tu aplicación.

18 www.owasp.org

19 www.owasp.org/index.php/OWASP_Mobile_Security_Project

20 developer.att.com/application-resource-optimizer

Page 229: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES
Page 230: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

225Accesibilidad

AccesibilidadEn diciembre de 2014, la Organización Mundial de la Salud (OMS) declaró en su página web que más del 15% de la población mundial tiene algún tipo de discapacidad1 y las tasas de discapacidad están aumentando debido al envejecimiento de la población y el aumento de las condiciones de salud crónicas, entre otras causas. Esto significa que alrededor de mil millones de usuarios potenciales podrían tener dificultades para la utilización de tu aplicación en caso de que no sea accesible.

Ha habido un gran aumento en el uso de teléfonos inteli-gentes y tablets en la población general, y eso incluye a las personas con discapacidad. Esto se debe a que ahora pueden comprar un producto estandarizado que tiene servicios de accesibilidad en el sistema operativo, cuando tradicionalmente habrían tenido que comprar costosos complementos. La encuesta WebAIM Screen Reader2 muestra que ha habido un aumento sorprendente en el uso de teléfonos inteligentes por personas ciegas que usan lectores de pantalla. Las personas mayores pueden no haber utilizado un ordenador en el trabajo pero, sin embargo, están descubriendo que pueden llegar a acomodarse a dispositivos de pantalla táctil más rápidamente que a un teclado y un ratón tradicionales. A medida que nuestra población envejece, también lo hacen los niveles de discapacidad y esto significa que más y más personas tendrán dificultades para acceder a los servicios de la manera tradi-cional. Proporcionar una solución digital accesible alternativa garantizará que las personas con discapacidad puedan seguir siendo independientes. También puedes descubrir un nuevo

1 www.who.int/mediacentre/factsheets/fs352/en

2 webaim.org/projects/screenreadersurvey5/

Page 231: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

226Accesibilidad

mercado importante al desarrollar aplicaciones que se adapten a estos usuarios.

La accesibilidad trabaja en pareja con la usabilidad, y se asegura de que hay una excelente experiencia de usuario para todos los usuarios de tus aplicaciones, independientemente de si tienen o no una discapacidad. Todo el mundo quiere ser capaz de completar la tarea que están llevando a cabo en una aplicación tan rápida y fácilmente como sea posible, y si tienen dificultades para hacerlo es probable que vayan a otra parte. Incorporar la accesibilidad en tus aplicaciones garantiza una excelente experiencia para todos.

¿Por Qué Hacer tu App Accesible?

A veces, tener acceso a entornos digitales permite a una persona con discapacidad utilizar un servicio que de otra manera sería ser imposible. Por ejemplo, si no son capaces de salir de la casa para hacer sus compras o gestionar su cuentas bancarias, la prestación de servicios en línea accesibles significa que pueden acceder a estos servicios de forma independiente. Es importante reconocer la importancia que un acceso independiente a los servicios tiene para las personas con discapacidad.

Hay muchas otras razones para hacer tu aplicación ac-cesible:

— Implementación la accesibilidad puede mejorar la usabili-dad general: Por ejemplo, asegurar que cada elemento de botón y forma tiene una etiqueta adecuada, que es útil para todos, no sólo los que tienen discapacidades ya que todos los usuarios sabrán cómo interactuar con él.

— Simplemente, es un buen negocio: Por ejemplo, las personas con discapacidad tienen capacidad de gasto y

Page 232: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

227226

si encuentran una aplicación accesible que funciona para ellos no sólo lo usarán, también la comunicarán a otros.

— En escenarios donde las soluciones accesibles son legalmente obligatorias, tu aplicación puede ser la única opción para que un negocio pueda operar: Por ejemplo, tu aplicación puede ser capaz de aprovechar sectores del mercado financiados por el gobierno tales como la educación, donde legislación como la Section 508 of the Rehabilitation Act en los EE.UU. puede exigir una solución accesible.

— El acceso a los bienes y servicios para todos es ley en muchos países: Por ejemplo en el Reino Unido la Ley de Igualdad de 2010 requiere que haya acceso a los bienes y servicios para todo el mundo y esto incluye los servicios que se proporcionan a través de un medio electrónico como los sitios web y aplicaciones. Los organismos públi-cos también tienen el deber de anticipación para asegurar que sus servicios sean accesibles, por lo que no pueden considerar la accesibilidad como una ocurrencia tardía.

— La organización para la que está siendo desarrollada la aplicación puede tener un programa de responsabilidad social corporativa: Por ejemplo, la accesibilidad en webs y aplicaciones aporta la inclusión social de las personas con discapacidad, que es un aspecto fundamental de la responsabilidad social corporativa.

— Las plataformas móviles de Apple, Google y Microsoft aprovechan sus APIs de accesibilidad para las pruebas automatizadas de la interfaz de usuario: La creación de una aplicación accesible puede hacer tus pruebas automa-tizadas más fáciles.

Page 233: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

228Accesibilidad

¿Qué Funciones de Accesibilidad?

Como muchos de tus usuarios potenciales pueden tener una discapacidad, esto puede hacer que sea más difícil para ellos usar un teléfono móvil y sus aplicaciones. Las discapacidades podrían incluir varios niveles de la vista o audición, discapa-cidades mentales o dificultades de aprendizaje, discapacidades físicas, problemas de destreza, y así sucesivamente.

Muchos de estos usuarios confían en el software de terceros fabricantes para ayudarles a utilizar su dispositivo. A este software se le suele conocer como tecnología de asistencia, e incluye diversas utilidades en función del tipo de discapacidad. Tradicionalmente este tipo de software o los servicios públicos han tenido que ser 'añadidos' a un dispositivo principal, a menudo a un alto precio, con el fin de hacerlos accesibles o más fáciles de usar para una persona con una discapacidad. Algunos teléfonos inteligentes y tablets proporcionan ahora suficientes capacidades para que algunos usuarios con discapacidad puedan utilizar los dispositivos sin necesidad de pagar por tecnología de asistencia adicional. Lo que se ofrece depende de la plataforma y la versión del sistema operativo. Sin embargo estas funcionalidades pueden necesitar de una aplicación para poder ser ejecutadas.

— Usuarios con visión parcial - Alguien que es parcialmente ciego se beneficia de ser capaz de cambiar el tamaño de fuente, estilo de fuente y el uso de la negrita y el contraste de color. iOS, Android, Blackberry y Windows Phone ofrecen varias opciones para cambiar estos términos en su configuración. Además del universal 'pellizca para ampliar' , iOS, Android, Blackberry y Windows Phone ofrecen una función de ampliación o zoom, que amplía una sección de la pantalla y mantiene este nivel de aumento

Page 234: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

229228

cuando se mueve por todo el teléfono. Tiene gestos únicos asociados con ella.

— Usuarios ciegos - Alguien que es ciego tiene que tener la información en la pantalla y la navegación por la pantalla se le debe indicar con una locución sintetizada, llamada a menudo 'lector de pantalla'. iOS fue el primer sistema operativo que ofreció un lector de pantalla incorporado llamado 'VoiceOver'. Android incluye 'Talkback' (con todas las funciones desde Android 4.1 Jelly Bean), que se está igualando rápidamente en popularidad en la comunidad de ciegos, ya que está mejorando constantemente. Windows Phone acaba de sacar Narrator en Windows Phone 8.1, pero en este momento no está en el punto en el que se puede utilizar para tener acceso completo al teléfono. Blackberry ofrece un lector de pantalla con funcionalidad limitada en unos pocos dispositivos.

— Usuarios con pérdida auditiva - Una persona con una discapacidad auditiva a menudo hará uso de un teléfono inteligente compatible con audífonos que ofrezca funcio-nes como hace iOS 'parpadeos LED de alerta' o 'cancelación de ruido'. También hay opciones de configuración en iOS y Android para cambiar los subtítulos y la ayuda en pantalla. Hacer uso de la vibración para las alertas también es útil. Un número de teléfonos también proporcionan soporte a la escucha y dispositivos TTY. Un dispositivo TTY permite a las personas con pérdida auditiva o con limitaciones del habla escribir mensajes a cualquier otra persona que tiene un teléfono de texto, usando una línea telefónica.

— Usuarios con discapacidades físicas - Si un usuario tiene un impedimento motor puede estar usando un producto de hardware para acceder al teléfono, como un interruptor ya que algunos dispositivos lo permiten. Alternativamente,

Page 235: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

podría estar haciendo uso del reconocimiento de voz para acceder al dispositivo.

— Usuarios con dificultades de aprendizaje - Si un usuario tiene un deterioro cognitivo o dificultad de aprendizaje, dependiendo de lo que la discapacidad sea, puede hacer uso de la configuración que utilizaría un usuario con defi-ciencia visual, especialmente las opciones de color. Otros usuarios pueden hacer un mayor uso del reconocimiento de voz.

Las personas con discapacidad ven su experiencia global afectada por lo bien que funciona una aplicación con la tecnología de asistencia. A medida que estas características están integradas en el sistema operativo y se pueden activar en la configuración, es importante que, como desarrollador, tengas en cuenta que se pueden usar con tu aplicación y asegurarte de testearlo.

Como los lectores de pantalla y la ampliación de la pantalla en el sistema operativo hacen uso de sus propios gestos, los gestos en la aplicación pueden verse afectadas cuando los lectores de pantalla o de ampliación están habilitados. Por ejemplo, un lector de pantalla del usuario puede navegar por una pantalla con toques a izquierda y derecha o explorar la pantalla moviendo su dedo por la pantalla del dispositivo en un movimiento constante. Según hagaun un gesto, se indicará un elemento, por ejemplo se selecciona un elemento pulsando una vez y se abre tocando dos veces. Al utilizar la magnificación de pantalla, dependiendo del sistema operativo, es posible que necesite usar un gesto de tres dedos. Incluir las pruebas con funciones de accesibilidad desde el principio asegura que estos gestos son soportados por la aplicación y que cualquier rediseño puede realizarse sin impacto para los usuarios.

230

Page 236: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

231

Una de las mejores maneras de aprender más acerca de estas características es activarlas y probarlos por ti mismo en diferentes aplicaciones.

Directrices en el Diseño de Aplicaciones

Las API de accesibilidad buscar texto en atributos específicos de elementos de la interfaz de usuario estándar. Los lectores de pantalla utilizados por personas ciegas, como VoiceOver y Talk-Back, transforman el texto en voz sintética que el usuario escu-cha. El software lector de pantalla también puede determinar el tipo de atributos de control y otros relacionados para ayudar a proporcionar al usuario más información contextual, sobre todo si no hay texto disponible. Es importante que el usuario entienda lo que la etiqueta del control es, cuál es el control y la forma de interactuar con él. En algunos casos puede haber también etiquetas para aportar información adicional.

Del mismo modo que los desarrolladores web hacen uso de normas y directrices tales como las WCAG 2.0 para hacer páginas web accesibles, es importante los desarrolladores de aplicaciones hagan lo mismo. En la actualidad no existe un estándar de la industria para accesibilidad, aunque existen normas que pueden ayudar.

La norma internacional, ISO 9241-171 ('The Ergonom-ics of Human-system Interaction: Guidance on Software Accessibility')3 es un estándar útil, ya que es independiente de plataforma. Cubre los elementos de accesibilidad y usabilidad para una amplia gama de software.

El Royal National Institute of Blind People (RNIB)4 ha

3 www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=39080

4 www.rnib-business.org.uk

Page 237: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

232Accesibilidad

creado un estándar de aplicaciones y pruebas para todo tipo de discapacidades basado en su experiencia en este ámbito. Su estándar para aplicaciones nativas refleja también los principios de la norma ISO 9241-171. Ofrecen asesoría a organizaciones y agencias en esta área y una acreditación que se puede conceder a las aplicaciones, las cuales se consideran accesibles tras un proceso de auditoría.

La BBC ha desarrollado un conjunto de Directrices de Accesibilidad para móviles5 que utiliza internamente en su contenido móvil. Su guía cubre sitios web móviles, híbridas y aplicaciones nativas. Afirman que "han de considerarse como un estándar para los empleados y los proveedores de la BBC, sin embargo también puede ser referencia para cualquier persona involucrada en desarrollo móvil".

Éstos son algunos de los principios útiles a la hora de desarrollar una aplicación. Si nos atenemos a ellos, también le darán a tu aplicación la mejor posibilidad de interoperar con la tecnología de asistencia que el usuario pueda ejecutar en conjunto con tu software:

APIs y Directrices para Interfaces

— Averigua qué características de accesibilidad y APIs tiene tu plataforma y sigue las mejores prácticas en el aprove-chamiento de esas APIs, si existen.

— Usa elementos estándar en lugar de elementos de interfaz de usuario personalizados cuando sea posible. Esto asegu-rará que si tu plataforma cuenta con una infraestructura de accesibilidad, o adquiere una en el futuro, probablemente tu aplicación se considerará accesible.

— Utiliza la API de accesibilidad para tu plataforma, si la

5 www.bbc.co.uk/guidelines/futuremedia/accessibility/mobile_access.shtml

Page 238: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

233232 Accesibilidad

hay. Esto te permitirá hacer los elementos de interfaz de usuario personalizada más accesible y significará menos trabajo por tu parte.

— Sigue las directrices de interfaz de usuario estándar en tu plataforma. Esto mejora la consistencia y puede significar un diseño más accesible por defecto.

— El usuario debe ser capaz de aplicar los ajustes de preferencias que el sistema operativo proporciona, tales como la configuración de accesibilidad.

Navegación

— La navegación debe ser lógica y coherente. Por ejemplo, si tiene un botón de atrás en cada pantalla debe estar ubicado en el mismo lugar en todas las pantallas y etiquetados de forma consistente.

— Soporte de navegación programática de la interfaz de usuario. Esto no sólo permitirá a tus aplicaciones ser utilizadas con un teclado externo, también mejorará la ac-cesibilidad de tu aplicación en plataformas como Android, en la que la navegación se puede realizar con un trackball o virtual d-pad.

Elementos de usuario

— Todos los elementos de usuarios deben ser visibles y operables a través de la tecnología de asistencia, a menos que sea obvio que no son necesarios.

— Cuando un elemento de usuario tiene un estado asociado con él, el estado también debe estar disponible para ser leído por tecnología de asistencia. Por ejemplo, si un botón de activación es 'on', este debe ser anunciado por el

Page 239: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

234Accesibilidad

lector de pantalla. Los cambios de estado también deberán ser anunciados.

— Asegurar que los objetivos de pantalla táctil son de un tamaño razonable para que se puedan seleccionar fácilmente.

Etiquetado

— Todos los elementos, incluyendo elementos de formu-lario, botones, iconos y así sucesivamente, deberán ser etiquetados visualmente y mediante programación con un nombre corto y descriptivo. La etiqueta también debe ser adyacente al elemento que se relaciona.

— Cada pantalla debe tener un nombre descriptivo único que se refiere a su contenido y ayuda a la navegación.

Colores y Fuentes

— Asegúrate de que haya un buen contraste entre colores de fondo y primer plano.

— Evita el uso del color como el único medio de diferen-ciar una acción. Un usuario daltónico no será capaz de identificar los errores si se le muestran en rojo los datos a corregir, por ejemplo.

— Considera el tamaño de la fuente más pequeña. ¿Es razon-able considerar que la mayoría de la gente podría leerla sin dificultad?

Notificaciones

— Los mensajes de error, notificaciones y alertas deben ser identificables y claros.

Page 240: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

235234 Accesibilidad

— Asegúrate de que los mensajes de error, notificaciones y alertas no son proporcionados sólo por un color, una señal háptica, o una sonora. Por ejemplo, una persona con pérdida auditiva no reconocerá notificaciones que sólo son audibles.

Testeo

— No te olvides de probar tu aplicación en el dispositivo de destino con la tecnología de asistencia integrada para ese sistema operativo.

— ¡Asegúrate de que tu test de usuarios incluye a las personas con discapacidad también!

Apple, Google y Microsoft, han aumentado la importancia de sus respectivo soportes de accesibilidad mediante la interfaz de Accesibilidad para mejorar su automatización de pruebas de interfaz. Esto proporciona un incentivo más para que los desarrolladores consideran el diseño de sus aplicaciones desde el punto de vista de la accesibilidad.

En cuanto a las diferentes plataformas móviles, se hace evidente que difieren en gran medida con respecto a sus APIs, pero están empezando a poner en práctica muchas de las mismas características de accesibilidad.

Controles y Elementos Personalizados

Si estás utilizando elementos de interfaz personalizados en tu aplicación, las plataformas que tienen una API de accesibilidad te permiten hacer tus controles personalizados accesible. Para ello, expón el control a la tecnología de asistencia que se ejecuta en el dispositivo para que pueda interrogar a las propiedades del control y hacerlo accesible.

Page 241: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

236Accesibilidad

Puedes obtener más información sobre este proceso en Android en Google IO 2012 presentations6.

Si eres miembro del programa de desarrolladores de Apple, echa un vistazo a las sesiones sobre accesibilidad de la WWDC 2014 disponible en el iOS Developer Center7.

Accesibilidad de una App Android

La última gran versión de Android, la versión 5 (Lollipop), ha seguido mejorando el soporte a accesibilidad con nuevas APIs. La accesibilidad comenzó a ser una propuesta real con Android 4.1 (Jellybean) y se ha mejorado mucho desde entonces.

Desde las áreas activas accesibles y la subtitulación oculta en la versión 4.0, en 5.0 también hay características experi-mentales en los ajustes que incluyen inversión de color y de alta contraste de texto con los Android Services8.

Algunas de las funciones de accesibilidad en Android 5.0 incluyen:

— TalkBack - lectura de contenido para usuarios ciegos — Switch Access - para personas con discapacidad física que

quieran acceder a una app con un disposotivo de hardware — Soporte al etiquetado - ofrece etiquetas y subtítulos para

personas con dificultades auditivas — Gestos de aumento - aumento tipo zoom para usuarios

con dificultades visuales — Texto con gran tamaño o contraste (experimental) - para

usuarios con dificultades visuales o ciertas dificultades de aprendizaje

6 youtube.com/watch?v=q3HliaMjL38 and youtube.com/watch?v=ld7kZRpMGb8

7 developer.apple.com/wwdc/videos

8 developer.android.com/about/versions/lollipop.html

Page 242: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

237236 Accesibilidad

— Retardo en pulsación - para usuarios con dificultades motoras

— Inversión de color (experimental) - para usuarios con dificultades visuales y algunos usuarios con dificultades de aprendizaje que prefieran una paleta de color alternativa

— Entrada de datos por voz - para usuarios con dificultades de aprendizaje o discapacidades físicas que deseen controlar el teléfono con su voz

Encontrarás algunos recursos útiles en la Support Library9, que incluye maneras de mejorar la accesibilidad de las vistas personalizadas.

Para obtener información específica sobre cómo utilizar la API de accesibilidad de Android, junto con las mejores prácticas en accesibilidad en Android, consulta el documento de Google titulado Making Applications Accessible10.

También puedes encontrar más ejemplos en la documen-tación de desarrollo, en una sección titulada Implementing Accessibility11. Testear la accesibilidad también está tratado online12.

Para obtener más información sobre la accesibilidad en Android, incluyendo cómo utilizar la API de lectura de texto, consulta el proyecto Eyes-Free project13.

9 developer.android.com/tools/support-library/index.html

10 developer.android.com/guide/topics/ui/accessibility/apps.html

11 developer.android.com/training/accessibility/index.html

12 developer.android.com/tools/testing/testing_accessibility.html

13 code.google.com/p/eyes-free

Page 243: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

238Accesibilidad

Accesibilidad en Aplicaciones BlackBerry

Actualmente, el sistema operativo Blackberry tiene algunas características de accesibilidad que son útiles para personas con diversas discapacidades. Las funcionalidades que ofrece son más limitadas, sin embargo sí soporta TTY para personas con pérdida de audición. Como sólo hay un lector de pantalla disponible para dispositivos BlackBerry y no está tan desar-rollado como VoiceOver para iOS o TalkBack para Android, Blackberry están siendo considerados por muy pocas personas ciegas en la actualidad.

Para los dispositivos Blackberry 7 y BlackBerry 10, el Black-berry Screen Reader14 sólo está disponible para un número muy limitado de dispositivos. Viene preinstalado en los dispositivos Blackberry 10 y se puede descargar para otros dispositivos compatibles. Puedes ver cuáles se soportan actualmente en Blackberry Accessibility Website15.

Blackberry 10 ofrece varias configuraciones de accesibilidad para permitir a los usuarios personalizar su dispositivo. Estos incluyen, entre otros:

— Lector de pantalla - convierte texto en voz sintética para usuarios con poca o ninguna visión. Sólo está disponible en el BlackBerry Z30.

— 'Modo Ampliar' - permite al usuario aumentar y disminuir la ampliación de la pantalla de texto y sus elementos.

— Subtítulos y etiquetas - son útiles en el contenido de vídeo para las personas con pérdida de audición.

— Configuración de pantalla - dan al usuario la oportunidad de cambiar el texto y los colores en la pantalla. Es útil

14 mobileapps.blackberry.com/devicesoftware/entry.do?code=bsr

15 us.blackberry.com/legal/accessibility.html

Page 244: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

239238 Accesibilidad

para las personas con dificultades de aprendizaje y usuarios con visión parcial.

— Configuración de TTY - para usuarios con pérdida auditiva que quieren usar usar texto en lugar de la voz para comunicarse.

— Soporte a la escucha - disponible en algunos teléfonos.

Encontrarás documentación sobre la creación de aplicacio-nes accesibles para Blackberry 10 en "Accessibility features and best practices - BlackBerry Native"16.

Si estás diseñando para Blackberry 10, también hay recursos de desarrollo que incluyen algunas directrices de diseño en "Blackberry 10 Design Guidelines"17.

Si estás desarrollando para BB OS 7.1, tienes amplia información sobre el uso de su API de accesibilidad y muchos consejos sobre diseño de interfaz accesible en su sitio web para desarrolladores18.

Accesibilidad en iOS

Apple fue la primera empresa de integrar funciones de ac-cesibilidad directamente en el sistema operativo. Debido a esto el apoyo a la accesibilidad en iOS es un poco mejor que en Android, aunque Android se está igualando rápidamente.

Algunas de las características de accesibilidad en iOS 8 incluyen, entre otras:

16 developer.blackberry.com/native/documentation/cascades/best_practices/accessibility/accessibility_features_best_practices.html

17 developer.blackberry.com/devzone/design/bb10/accessibility.html

18 developer.blackberry.com/java/documentation/intro_accessibility_1984611_11.html

Page 245: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

240Accesibilidad

— VoiceOver - lector de pantalla. Indica los objetos y textos en pantalla, habilitando tu aplicación para poder ser utilizada por personas ciegas.

— Zoom - aumenta el tamaño del contenido en pantalla. — Invertis Colores - invierte los colores mostrados, ayu-

dando a personas que necesitan contraste entre blancos y negros pero para los que una pantalla blanca es demasiado brillante.

— Texto Grande y en Negrita - ayuda a un amplio rango de personas, desde los que usan gafas a aquellos con ceguera parcial, pasando por los que tengas dificultades de aprendizaje.

— Aumentar Contraste - mejora el contraste entre el fondo y el contenido.

— Etiquetas y Subtítulos - para usuarios con dificultades auditivas.

— Alertas audibles, visibles y hápticas - permite elegir qué tipo de alerta utilizar para las notificaciones.

— Control por voz y Siri - permite llamar por teléfono y usar ciertas funciones del teléfono mediante comandos de voz. Puede ser útil para muchos usuarios, por ejemplo aquellos con dificultades de motricidad, de aprendizaje, o de visión.

— Soporte a Audífonos - para personas con pérdida de audición.

— Control de Acceso - para aquellos con discapacidades físicas que quieran utilizar hardware de terceros para usar la aplicación.

— Acceso Guiado - útil en el ámbito educativo o cuando alguien quiere limitar qué es accesible desde la pantalla de un usuario.

Si estás trabajando en iOS, asegúrate de seguir las directri-

Page 246: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

241240 Accesibilidad

ces de accesibilidad de Apple19. Aportan información detallada de la API y una excelente fuente de recomendaciones para maximizar la experiencia de usuario en tus aplicaciones.

Apple también ofrece ayuda sobre cómo testear la accesibi-lidad de tu aplicación con VioceOver20.

Accesibilidad en Windows Phone 8

Es justo decir que Microsoft ha estado poniéndose al día con iOS y Android en cuanto a accesibilidad. Desplegaron un buen apoyo para la ampliación, el cambio de tamaño de texto y el cambio de colores, y en Windows Phone 8.1 las cosas han cambiado de nuevo. Ahora hay un lector de pantalla llamado Narrador en Windows Phone 8.1, aunque todavía en fase beta, que lee el texto en voz sintética y, al igual que otros lectores de pantalla del teléfono, hace uso de sus propios gestos específicos. Está diseñado para usuarios con poca o ninguna visión, pero todavía necesita mejorar para ser tan útil como iOS y Android. Sólo puede utilizarse con algunas funciones básicas y la navegación, y no tiene tantas funciones como otros lectores de pantalla. En el momento de escribir estas líneas sólo está disponible con la pantalla, teclado y ajustes de idioma para inglés de Estados Unidos. Sin embargo, es sin duda prometedor.

Algunas de las características de accesibilidad de Windows Phone 8/8.1 incluyen:

19 developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/iPhoneAccessibility

20 developer.apple.com/library/ios/technotes/TestingAccessibilityOfiOSApps/TestAccessibilityonYourDevicewithVoiceOver/TestAccessibilityonYourDevicewithVoiceOver.html

Page 247: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

242Accesibilidad

— Narrador - lector de pantalla aún en beta, iene una funcionalidad limitada y sólo está disponible en 8.1

— Tamaño de Texto - el tamaño del texto se puede ampliar para ayudar a las personas con dificultades visuales o de aprendizaje

— Alto Contraste - cambia el texto a blanco y negro y proporciona un fondo de texto sólido en vez de imágenes.Es útil para usuarios con deficiencia visual y o dificultades de aprendizaje

— Lupa de Pantalla - para las personas con deficiencia visual que deseen ampliar el texto en la pantalla y cambiar el nivel de zoom. Tiene sus propios gestos

— Control por Voz - el usuario puede hacer llamadas, buscar en Internet, abrir aplicaciones o escuchar mensajes de texto. Útil para una amplia gama de personas en diferentes situaciones, incluyendo aquellas con deficiencias motrices, problemas de aprendizaje o discapacidad visual

— Personalizar Etiquetas de Navegador - es posible cambiar el tamaño de fuente y el color y la transparencia del fondo de los subtítulos en Internet Explorer, y también en las aplicaciones que hacen uso del navegador. Útil para personas con pérdida auditiva o de visión

— Compatibilidad con TTY - permite a las personas con pérdida auditiva o del habla escribir mensajes a cualquier otra persona que tiene un TTY

— Cortana - es el 'asistente personal' disponible en Windows Phone 8.1. Es una característica interesante para todos los usuarios, pero especialmente útil para las personas con discapacidades, ya que se puede activar con el habla

La documentación "Accessibility for Windows Runtime

Page 248: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

243242 Accesibilidad

Apps"21 te proporcionará ayuda, ya estés desarrollando en C#/VB/C++ y XAML o JavaScript y HTML.

Microsoft tiene sus Directrices para el Diseño de Aplica-ciones Accesibles22, un documento muy útil. Informa sobre la API correspondiente y sobre si realmente tienes que utilizar controles personalizados en XAML o HTML, explicándote cómo hacerlo de una manera accesible. También recoge algunas otras guías de terceros que pueden ser útiles. Por ejemplo, si estás desarrollando en HTML será importante considerar el uso de Accessible Rich Internet Applications 1.0 (WAI-ARIA)23, útil para hacer el contenido dinámico más accesible a los lectores de pantalla.

Sólo una vez que hayas teasteado la accesibilidad de tu aplicación24, Microsoft te permitirá declarar que tu aplicación es accesible en su tienda aplicaciones25, lo que le permitirá ser descubierta por los usuarios que filtren sus búsquedas por accesibilidad.

Accesibilidad de Aplicaciones Web MóvilesComo se ha mencionado anteriormente en este capítulo, se ha escrito mucho acerca de la accesibilidad web, pero menos se ha escrito sobre la accesibilidad en relación con las aplicaciones. Esto también se aplica a la accesibilidad de la web móvil. Es un área que tiene un interés creciente y el World Wide Web

21 msdn.microsoft.com/en-us/library/windows/apps/xaml/dn263101.aspx

22 msdn.microsoft.com/en-us/library/windows/apps/hh700407.aspx

23 www.w3.org/TR/wai-aria/markup

24 msdn.microsoft.com/en-us/library/windows/apps/xaml/hh994937.aspx

25 msdn.microsoft.com/en-us/library/windows/apps/xaml/jj161016.aspx

Page 249: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

244Accesibilidad

Consortium (W3C) ha creado el 'Web and Mobile Interest Group' para discutirla e identificar qué tareas deben llevarse a cabo, junto con el 'Web Applications Working Group'. Así que el número de grupos de trabajo en el W3C que se relacionan con esta área están creciendo y pueden proporcionar ayuda y documentación útil.

El W3C ha publicado un análisis estado de la cuestión y hoja de ruta que enumera los Estándares para Aplicaciones Web en Móviles26.

El W3C ha sugerido que todo aquello que utilice HTML y esté basado en web debería atenerse a las Web Content Accessibil-ity Guidelines (WCAG) 2.0 y a las Mobile Web Best Practices (MWBP). Así que si eres un desarrollador de contenidos web, estas directrices son un buen lugar para empezar. También encontrarás que las Relationship between Mobile Web Best Practices (MWBP) and Web Content Accessibility Guidelines (WCAG)27 son un recurso útil.

Si tu aplicación desea imitar el aspecto y usabilidad de una aplicación nativa, entonces debes seguir las directrices mencionadas anteriormente en este capítulo.

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

27 w3.org/TR/mwbp-wcag/

Page 250: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

245Accesibilidad

Como el HTML5 cada días es más soportado en las diferentes plataformas móviles, te recomendamos leer la guía de mejores prácticas "Mobile Web Application Best Practices"28, ya que es probable que se utilicen para conformar las bases de cualquier norma de accesibilidad de aplicaciones web móvil futura. Otra área clave para orientarse es "Accessible Rich Internet Applications 1.0 (WAI-ARIA)" de W329, ya que ha sido diseñada para asegurar que las funciones de HTML más dinámicas sean accesibles para los lectores de pantalla.

Un área interesante de trabajo en el W3C es el grupo "Independent User Interface (IndieUI) Working Group"30. El grupo afirma que "la interfaz de usuario independiente (IndieUI) es una forma de que las acciones del usuario sean comunicadas a las aplicaciones web y hagan que sea más fácil para las aplicaciones web trabajar en una amplia gama de contextos - diferentes dispositivos, diferentes tecnologías de asistencia (AT), diferentes necesidades de los usuarios". Esta línea de trabajo va a ser muy importante para la accesibilidad y la independencia de los dispositivos. Vale la pena mirar la documentación que tienen actualmente.

28 w3.org/TR/mwabp

29 www.w3.org/TR/wai-aria

30 www.w3.org/TR/indie-ui-context

Page 251: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES
Page 252: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

247Testeo

TesteoHay muchos mundos paralelos en el universo de las aplica-ciones móviles y, mientras tanto, los dispositivos móviles evolucionan muy rápidamente en comparación a otros tipos de bienes. El testeo de aplicaciones móviles tiene que mantenerse en vanguardia aún cuando el ritmo de cambios continúa acelerándose.

El destino de las aplicaciones móviles depende de que los usuarios, al igual que las multitudes en los anfiteatros de la época romana, a menudo toman la decisión final de si una apli-cación vive para luchar otro día, o muere. Del mismo modo, las aplicaciones comunes y corrientes son propensas a languidecer como un mero dato estadístico más en la tienda de aplica-ciones, faltando al duro trabajo de su ideación, producción y lanzamiento. Además, el estigma de una mala calificación tiene una vida media larga y es difícil sobreponerse a él.

Testear podría ser visto como una inconveniencia, pero los fallos en tu aplicación pueden ser demasiado notorios, y recuperar tu credibilidad es difícil cuando tu aplicación tiene mala puntuación en la tienda de aplicaciones. Así que puedes esperar a que los usuarios decidan su destino, o testear tus aplicaciones móviles para inclinar la balanza a tu favor. Tienes la oportunidad de ayudarte a ti mismo y a tu equipo de pruebas para testear de manera más efectiva tu aplicación.

Page 253: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

248Testeo

Cuidado con las especificaciones

Plataformas, redes, dispositivos, en incluso firmware, todo son especificaciones, y cualquiera de ellas podría causar problemas en tus aplicaciones. Hay varias maneras de identificar sus efectos, por ejemplo un tester puede notar diferencias en el rendimiento de la aplicación y el comportamiento de la interfaz de usuario durante la prueba con diferentes dispositivos. QuizUp utilizó pruebas que ayudaron a encontrar cinco prob-lemas importantes en su aplicación para Android, provocados por las diferencias entre dispositivos, y un error específico a Android 4.0.4. Las pruebas automatizadas se ejecutaron en 30 dispositivos durante 30 minutos, lo que hizo esta prueba prác-tica y útil, en lugar de tener que pasar 60 horas tratando de hacer pruebas manuales de la aplicación en 30 dispositivos1. Necesitas conocer estas especificaciones para poder decidir si se deben abordar las diferencias no deseadas mediante modificaciones en aplicación antes de su lanzamiento.

Por el contrario, las analíticas móviles puede ayudarte a identificar diferencias en diversos aspectos, incluyendo el rendimiento y el consumo de energía cuando la aplicación está siendo utilizada por muchos usuarios en gran variedad dispositivos. Puedes ver algunos ejemplos de diferencias en el comportamiento y en cómo los problemas se abordaron en un artículo publicado por científicos de la computación de la Universidad de Wisconsin2.

Este capítulo trata los temas generales; las pruebas para

1 blog.testmunk.com/quizup-mastering-android-device-fragmentation-automated-testing

2 “Capturing Mobile Experience in the Wild: A Tale of Two Apps”, disponible en static.googleusercontent.com/media/research.google.com/en//pubs/archive/41590.pdf

Page 254: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

249248 Testeo

plataformas específicas se tratan en sus capítulos correspondi-entes.

El Testeo Necesita Tiempo - Planifícalo

Ejemplo de CálculoAsumamos que tu aplicación tiene diez epics3, y cada epic necesita ser testeada con entre una y tres enfoques (funcio-nalidad, usabilidad, escenarios de usuario). Si testeas cada epic con una perspectiva con un caso de uso durante una hora te llevaría diez horas testear la aplicación. Por otra parte, si testeas cada epic utilizando las tres perspectivas con dos casos de uso, el testeo te llevaría 60 horas. Habitualmente, hacer pruebas consique detectar defectos y otros temas que vale la pena reportar, lo que requiere más tiempo, lo que a su vez requiere invertir algo de tiempo en resolver lo encontrado, por ejemplo resolver un bug o realizar una mejora en la app. Asumamos que cada prueba encuentra entre 5 y 10 problemas. El tiempo necesario para procesar los defectos será entre 5 a 50 horas de trabajo. Así que en el mejor de los casos lleva unas 15 horas probar la aplicación (funcionalmente), y en el peor llevará hasta 110 horas probar la aplicación en los tres enfoques posibles.

3 también llamadas historias de usuario en este contexto (en.wikipedia.org/wiki/User_story)

Page 255: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

250Testeo

Es posible que también necesites añadir al cálculo mucho más tiempo para probar la aplicación en una variedad de dispositivos compatibles, particularmente para aplicaciones web y aplicaciones nativas Android.

Testeo ContinuoLos lanzamientos continuos necesita pruebas continuas. Una aplicación viable debe actualizarse de manera continua. Las actualizaciones pueden incluir correcciones para nuevas versiones de la plataforma o modelos de dispositivos, nuevas funcionalidades y otras mejoras. Por lo tanto, el testeo no es una tarea puntual; a las aplicaciones de alta calidad les con-viene tener procesos de testeo continuados, optimizados, en su producción. Las pruebas de producción incluyen su validación, así como la detección temprana de problemas potenciales antes de que se dispare su número.

Gestionando tu Tiempo de PruebasEl testeo, como ya has descubierto, puede tomar muchas horas, mucho más de lo que desearías, especialmente si te aproximas a una fecha límite, como la de lanzamiento. Hay varias formas de administrar el tiempo a invertir en las pruebas, y las prue-bas en paralelo se pueden ser más interesantes, gratificantes y productivas.

Bajo Alto

10 60

Horas de Trabajo

Defectos detectados

Horas de Trabajo

50 600

5 50

5 a 10 defectos detectados / hora

10 × 3 × 2

5min / defecto detectado

Page 256: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

251250 Testeo

— Reducir el tiempo de configuración: Encuentra maneras de desplegar aplicaciones de forma rápida y eficiente. Implementar mecanismos para proporcionar los datos y la configuración de las pruebas correspondientes, tanto en el dispositivo móvil como en los servidores pertinentes. Trata de tener dispositivos y sistemas 'listos para testear'.

— Reducir el tiempo necesario para la presentación de informes y análisis de errores: datos, capturas de pantalla, e incluso de vídeo, pueden ayudar a investigar los bugs más fácil y rápidamente. Los datos pueden incluir los logs, las configuraciones del sistema, el tráfico de red y la información de tiempo de ejecución.

— Análisis de riesgos: Se puede utilizar el análisis de riesgos para decidir cómo y cuándo asignar recursos a las pruebas. Los riesgos son difíciles de determinar con precisión por el tester o el desarrollador individualmente; un esfuerzo conjunto de todos los implicados en la aplicación móvil puede ayudar a mejorar el análisis de riesgos. A veces, el tester es el encargado de ajustar la valoración del riesgo.

Implica a otros en tus pruebasGente que no pertenece a tu equipo puede ayudar con el tes-teo. Por ejemplo, otros empleados pueden participar en cazas de bugs4, y el crowdsourcing5, y los tests de las versiones Alpha y Beta proporciona acceso temprano a segmentos de usuarios.

Cuando terceros están involucrados en probar una aplicación, necesitan maneras de acceder y utilizarla. Las

4 en.wikipedia.org/wiki/Bug_bash

5 Algunos proveedores de crowdtesting son Applause.com y PassBrains.com

Page 257: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

252Testeo

aplicaciones web pueden hospedarse online, protegidas usando contraseñas, URLs difíciles de adivinar y otras técnicas. Las aplicaciones instalables necesitan por lo menos una forma de ser instaladas, por ejemplo utilizando una tienda de aplicacio-nes de empresa o servicios de implementación especializados.

Estos enfoques pueden aumentar tus otras pruebas, pero no recomendamos su uso como único testeo formal. Para obtener buenos resultados tendrás que dedicar parte de tu tiempo y esfuerzo a la definición de las pruebas que deseas que se ejecuten, trabajar con la empresa para revisar los resultados, etcétera.

Effective Testing Practices

Testear, al igual que otras competencias, se puede mejorar mediante la aplicación de diversas técnicas y prácticas. Algunas de ellas tienen que aplicarse en el desarrollo de tu aplicación móvil, tales como la capacidad de testeo, mientras que otras se aplican al crear tus pruebas, y algunas cuando las estás realizando. Testdroid ofrece una buena lista de control6 para asegurar la correcta adquisición de experiencia en testeo por parte de tu equipo.

Mnemónicos que resumen los Tests HeurísticosLos tests heurísticos son directrices falibles, o sugerencias, que tienden a ser útiles. Varios han sido creados específicamente para ayudar a probar aplicaciones móviles y algunos utilizan códigos menmónicos para ayudarte a considerar aspectos particulares del software. Cada letra es la inicial de una palabra clave.

6 testdroid.com/testdroid/6336/get-the-superb-expertise-in-your-testingqa-team

Page 258: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

252 253

— I SLICED UP FUN7: Input (Prueba la aplicación cambiando su orientación (horizontal / vertical) y todas las entradas incluyendo teclado, gestos, etc.), 'Store (Usa directrices de la tienda de apliaciones como fuente para probar ideas), Location (Test en movimiento para comprobar si hay problemas de localización), Interaction/Interruption (Ver cómo tu aplicación interactúa con otros programas, en particular los integrados, aplicaciones nativas), Com-munication (Observa el comportamiento de tu aplicación al recibir llamadas, correos electrónicos, etc.), Ergonomics (Búsqueda de áreas con problemas en la interacción, por ejemplo, fuentes pequeñas), Data (Test del uso de caracteres especiales, diferentes idiomas, soporte a con-tenido externo, grandes archivos de diferentes formatos, notificaciones), Usability (Busca cualquier acción de usuario que sea torpe, confusa o lenta), Platform (Prueba sobre diferentes versiones del sistema operativo), Function (Verifica que todas las funciones se implementan y que funcionan de la manera que se supone que deben hacerlo), User Scenarios (Crear pruebas de escenarios para tipos concretos de usuarios), Network (Test con diferentes y cambiantes condiciones de la conexión)

— COP FLUNG GUN8 resume los aspectos Communication, Orientation, Platform, Function, Location, User Scenarios, Network, Gestures, Guidelines, Updates, Notifications.

7 kohl.ca/articles/ISLICEDUPFUN.pdf

8 moolya.com/blogs/2014/05/34/COP-FLUNG-GUN-MODEL

Page 259: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

254Testeo

Implementando la TesteabilidadComienza diseñando e implementando formas de probar tu aplicación durante su desarrollo; especialmente para pruebas automatizadas. Por ejemplo, utilizar técnicas como la inyec-ción de dependencias en el código permite sustituir servidores reales (lentos y fragmentados) con los servidores de simulacros (controlables y rápidos). Utiliza identificadores únicos y claros para los elementos clave de la interfaz de usuario. Si los mantienes sin cambios tus identificadores pruebas requerirán menos mantenimiento.

Separa tu código en módulos comprobables. Hace varios años, cuando los dispositivos móviles y herramientas de software eran muy limitadas, los desarrolladores optaron por ‘optimize’ su código móvil en bloques monolíticos de código; sin embargo, los dispositivos actuales y plataformas móviles implican que esta forma de ‘optimization’ es innecesaria y posiblemente contraproducente .

Ofrece maneras para consultar el estado de la aplicación, posiblemente a través de una interfaz de depuración person-alizado. Si no, tu, o sus testers, podríais pasar mucho tiempo tratando de comprender los problemas cuando la aplicación no funciona como se esperaba.

— Prueba de combinación : es una técnica para encontrar errores mediante la combinación de los parámetros de manera eficiente, requiriendo muchas menos pruebas que intentando todas las permutaciones posibles. Una técnica popular se llama All Pairs Testing9.

9 en.wikipedia.org/wiki/All-pairs_testing

Page 260: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

255254 Testeo

Tours para Testing ExploratorioUn tour es un tipo de prueba exploratorias, una manera de estructurar más las sesiones de testing exploratorio. Los tours ayudan a enfocar tus tests, Cem Kaner describe un tour como "una búsqueda dirigida a través del programa. Encuentra todas las funciones, especificaciones sobre el producto, variables, eneficios previstos, maneras de ir de A a B, todo X. O tal vez no todos, pero muchos de ellos"10. Con la combinación de diferentes tours en diferentes perspectivas (véase la heu-rística I SLICED UP FUN), se puede seleccionar la cobertura y profundidad de la prueba.

Examples of Tours11 include:

— Tour de configuración: intenta encontrar todas las maneras en que se puede cambiar la configuración en el producto de manera que la aplicación conserva dichos ajustes.

— Tour de funciones: se mueve a través de la aplicación y se familiariza con los controles y características que se encuentre.

— Tour de estructura: encuentra todo lo que pueda acerca de lo que se refiere al producto físico (código, interfaces de hardware, archivos, etc.).

— Tour de variabilidad: busca las cosas que se pueden cambiar en la aplicación - y trata de cambiarlas.

Más información sobre este y otros métodos de pruebas

10 kaner.com/?p=96, ver también developsense.com/blog/2009/04/of-testing-tours-and-dashboards/

11 from michaeldkelly.com/blog/2005/9/20/touring-heuristic.html

Page 261: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

256Testeo

exploratorias en el libro de James Whittaker "Exploratory Software Testing"12.

Testear en Varios Dispositivos

Dispositivos Físicos y VirtualesLos dispositivos físicos son reales, puedes sostenerlos en tus manos. Los dispositivos virtuales se ejecutan como software, dentro de otro ordenador. Ambos son útiles para probar las aplicaciones móviles.

Los dispositivos virtuales son generalmente libres y están disponibles de inmediato para instalar y utilizar. Algunas plataformas, incluyendo Android, te permiten crear dispositivos personalizados, por ejemplo con una nueva resolución de pantalla, que puede utilizar para probar aplicaciones, incluso antes de que el hardware adecuado esté disponible. Pueden proporcionar pruebas básicas rápidas de tus aplicaciones. Las principales diferencias son: el rendimiento, la seguridad y la forma en que interactuamos con ellos en comparación con los dispositivos físicos. Estas diferencias pueden afectar la validez de algunos resultados de la prueba.

El conjunto de dispositivos de prueba requiere ser revisado de manera continua a medida que evoluciona el ecosistema. También es posible identificar nuevos dispositivos, que tu aplicación no soporta actualmente, durante las revisiones, como se puede ver a continuación:

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

Page 262: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

257256

En última instancia, el software necesita ejecutarse en dispositivos reales, físicos, ser utilizado por sus usuarios previstos. Las características de funcionamiento de diversos modelos de teléfono varían enormemente de unos a otros, y también respecto a los dispositivos virtuales. Por tanto, comprar, pide prestado y mendiga si hace falta teléfonos para realizar tus pruebas. Un buen comienzo es elegir una mezcla de aquellos populares, nuevos y que incluyen características específicas o características tales como: pantalla táctil, teclado físico, resolución de pantalla, chipset de redes, etcétera. Prueba tu software en al menos uno de gama baja o antiguo , ya que también deseas satisfacer a usuarios con estos dispositivos sean.

Estos son algunos ejemplos de áreas a poner a prueba en los dispositivos físicos:

— Navegación por la interfaz de usuario: por ejemplo, ¿pu-eden utilizar los usuarios tu aplicación con una sola mano? Efectos de las diferentes condiciones de iluminación: la experiencia de la interfaz de usuario puede diferir bajo la luz del sol cuando estás fuera de casa. Es un dispositivo

Base de Datos de dispositivo

instalada

Grupo de usuarios futuroEl de mayor crecimiento

en el periodo anteriorNuevo grupo de usuarios

El dispositivo o plataforma más interesante

Grupo de usuarios existenteLa mézcla óptima a la que dar soporte

ExternosEl mayor grupo que no es objetivo y que no está utilizando la aplicación

Base de Datos de dispositivo

objetivo

Posible Base de Datos de dispositivo

Page 263: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

258Testeo

móvil - la mayoría de los usuarios estarán en movimiento. Gira la pantalla y asegúrate de que la aplicación es igualmente atractiva y funcional.

— Localización: si utilizas la información de ubicación en tu aplicación: muévete tanto de forma rápida como lenta, y ve a lugares con cobertura de red y GPS irregulares para ver cómo se comporta su aplicación.

— Multimedia: el soporte a audio, reproducción de vídeo y servicios de grabación puede diferir drásticamente entre los dispositivos reales y sus respectivos emuladores.

— Conectividad a Internet: conectar a Internet puede llevar una cantidad increíble de tiempo. El retardo en la conexión y el ancho de banda dependen de la red, su potencia real y el número de conexiones simultáneas. Pon a prueba los efectos de una conectividad intermitente tu aplicación.

Como ya se ha mencionado, el crowdtesting también puede ayudar a cubrir un amplio rango de dispositivos reales, pero nunca debes tomar las observaciones de terceros como única referencia.

Dispositivos RemotosSi no tienes dispositivos físicos a mano o si necesitas probar la aplicación en otras redes, especialmente en el extranjero o diversas localizaciones, entonces un ‘servicio de dispositivos remotos’ podría ayudarle. Te puede ayudar a extender la amplitud y profundidad de tu prueba con poco o ningún coste.

Varios fabricantes ofrecen este servicio sin coste alguno a los desarrolladores de software registrados para un subconjunto de sus modelos de teléfono. Tanto Nokia13 para sus plataformas

13 developer.nokia.com/Devices/Remote_device_access/

Page 264: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

259258 Testeo

y Samsung14 (para Android y Tizen) proporcionan acceso diario restringido, pero libre.

También puedes utilizar los servicios comerciales de empresas tales como SauceLabs.com, testdroid.com, PerfectoMobile.com o DeviceAnywhere.com para realizar pruebas similares a través de una gama de dispositivos y plataformas. Algunos fabricantes promueven estos servicios pero, sin embargo, a menudo hay que pagar por ellos después de un corto periodo de prueba. Algunos de los servicios comerciales proporcionan APIs para que puedas crear pruebas automatiza-das.

Puedes incluso crear un depósito privado de dispositivos remotos, por ejemplo alojándolos en oficinas en localizaciones remotas.

Ten cuidado con la privacidad y la confidencialidad en el uso de dispositivos compartidos.

Pruebas Automatizadas

Las pruebas automatizadas pueden ayudar a mantener y mejorar tu velocidad, es decir tu capacidad de lanzar funciona-lidades, proporcionando la detección temprana de problemas. Para ello, tienen que estar bien diseñadas e implementadas. De lo contrario, corres el riesgo de duplicar la carga de trabajo y mantener un embrollo de aplicación y pruebas automatizadas incompletas y poco fiables. Las buenas pruebas automatizadas imitan las buenas prácticas de desarrollo de software, por ejemplo utilizando Patrones de Diseño15, modularización, revisiones de código, etcétera.

Testear aplicaciones móviles con eficacia puede ser algo

14 developer.samsung.com/remotetestlab/rtlDeviceList.action

15 en.wikipedia.org/wiki/Design_Patterns

Page 265: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

260Testeo

complejo e incluso desafiante, siendo necesario combinar pruebas automatizadas e interactivas a través de una gama de dispositivos. Afortunadamente, varias de las principales plataformas de desarrollo móvil incluyen la automatización de pruebas en sus herramientas básicas, como Android y iOS. Y hay herramientas multiplataforma de automatización de pruebas disponibles para plataformas populares; siendo algunas son gratuitas y de código abierto, mientras que otras son comerciales.

Es importante evaluar la longevidad y la vitalidad de las herramientas de automatización de pruebas que vas a utilizar, de lo contrario es posible que cargues con código de automatización de pruebas no soportado. Las herramientas de automatización de pruebas proporcionadas como parte de un SDK de desarrollo son dignas de consideración. Generalmente son gratis, inherentemente disponibles para la plataforma en particular, y apoyadas por grandes empresas.

Automatización de Pruebas en BDDBDD es el acrónimo de Behavior-Driven Development, o Desar-rollo Guiado por Comportamiento16 donde el comportamiento se describe en los archivos de texto que pueden ser ejecutados como pruebas automatizadas. El formato de las pruebas tienen la intención de ser legible y comprensible por cualquier persona involucrada con el proyecto de software. Pueden ser escritas en cualquier idioma humano, por ejemplo japonés17, y utilizan una estructura consistente, sencilla, con frases como Dado que, Cuando, Entonces para estructurarse.

Hay varios entornos de BDD disponibles para probar las aplicaciones móviles. Entre otros:

16 en.wikipedia.org/wiki/Behavior-driven_development

17 github.com/cucumber/cucumber/tree/master/examples/i18n/ja

Page 266: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

261260 Testeo

— Calabash Para Android e iOS: github.com/calabash — Frank para iOS: www.testingwithfrank.com — RoboGerk para Android: github.com/leandog/RoboGherk — Zucchini para iOS: www.zucchiniframework.org

y varias implementaciones que se integran con Selenium-WebDriver para testear aplicaciones web, incluyendo web apps en iOS y Android.

A menudo, los 'step-definitions' (pequeños scripts que interactúan con la aplicación en pruebas) tienen que ser escritos por alguien con conocimientos de programación.

Automatización de Pruebas GUILa automatización de pruebas de GUI permite a las pruebas automatizadas interactuar con la aplicación a través de la interfaz gráfica de usuario (GUI). Es uno de los elixires de la industria de pruebas, muchos han intentado, pero pocos han tenido éxito en la creación de una automatización de pruebas GUI útil y viable para las aplicaciones móviles. Una de las principales razones por las que la automatización de pruebas GUI es tan difícil es que la interfaz de usuario está sujeta a cambios significativos que puedan romper la forma en que las pruebas automatizadas interactuan con la aplicación.

Para que las pruebas sean eficaces a largo plazo, y como la aplicación tiende a cambiar, los desarrolladores necesitan diseñar, implementar y soportar las etiquetas y otros elementos utilizados por las pruebas automatizadas de interfaz. Tanto Apple, con UI Automation18, y más recientemente Android19

18 developer.apple.com/library/ios/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/UsingtheAutomationInstrument/UsingtheAutomationInstrument.html

19 developer.android.com/tools/testing/testing_ui.html

Page 267: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

262Testeo

utilizan la etiqueta Accessibility asignada a elementos de la GUI como la interfaz de facto para la automatización de pruebas.

Algunas empresas han convertido sus herramientas a código abierto, por ejemplo, GorillaLogic's MonkeyTalk20 y Xamarin's Calabash21. Estas herramientas tienen como objetivo propor-cionar soporte multiplataforma, particularmente para Android e iOS. Otros entornos de código abierto de éxito incluyen Robotium22 y Frank23.

Pruebas UnitariasUna prueba unitaria consiste en escribir pruebas automatizadas que ponen a prueba pequeñas secciones de código, por lo gen-eral sólo unas pocas líneas. Generalmente deben ser escritas por el mismo desarrollador que escribe el código fuente de la aplicación, ya que reflejan cómo se espera que esas secciones se comporten.

Las pruebas unitarias tienen una larga tradición en el desarrollo de software, en el que JUnit24 ha generado entornos similares para prácticamente todos los lenguajes de program-ación utilizados para desarrollar aplicaciones móviles.

Las pruebas unitarias son sólo un aspecto de las pruebas automatizadas, y no son suficientes para demostrar que la aplicación funciona, pero ayudan a los desarrolladores a en-tender lo que se espera de las secciones individuales. Pruebas adicionales, incluyendo otras formas de pruebas automatizadas, pueden ayudar a aumentar tu confianza en la aplicación.

20 gorillalogic.com/testing-tools/monkeytalk

21 github.com/calabash

22 code.google.com/p/robotium

23 testingwithfrank.com

24 en.wikipedia.org/wiki/JUnit

Page 268: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

263262 Testeo

Testear las Cinco Fases del Ciclo de Vida de una AppEl software se desarrolla en fases, que se llaman fases del ciclo de vida. Un tester de aplicación móvil puede ser parte del equipo de desarrollo, pero también puede ser responsable de facilitar las pruebas de la experiencia del usuario en produc-ción. Dependiendo de en qué fase estés involucrado en el ciclo de vida, hay diferentes tareas a realizar. Por ejemplo al unirte a un equipo de desarrollo tu tarea puede ser el análisis de errores en los archivos de registro en un dispositivo, mientras que al unirte a una fase de prueba beta una tarea puede ser el análisis de los resultados de las pruebas de usabilidad, como la grabación de vídeo. El ciclo de vida de una aplicación móvil encaja en 5 fases: implementación, verificación, lanzamiento, retención y validación, y se aplican pruebas a cada fase. Algunas de las decisiones que se toman en las etapas previas pueden afectar tus pruebas en etapas posteriores. Por ejemplo, si decides que quieres pruebas automatizadas del sistema en la primera fase serán más fácil de aplicar en las fases posteriores.

Fase 1: ImplementaciónEsto incluye diseño, código, pruebas unitarias, y creación de tareas. Tradicionalmente, los probadores no están involucrados en estas tareas; sin embargo, un buen testeo aquí puede mejorar significativamente la calidad y el éxito de la aplicación al ayudarnos a asegurarnos de que nuestra implementación se hace correctamente.

En términos de diseño, deberíamos decidir sobre las siguientes cuestiones:

— ¿Utilizar TDD?

Page 269: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

264Testeo

— ¿Escribir pruebas unitarias incluso si no estamos utilizando TDD?

— ¿Tendremos sistemas automatizados de pruebas? En caso afirmativo, ¿cómo facilitaremos dichas pruebas? Por ejemplo, añadiendo etiquetas adecuadas a objetos clave en la interfaz de usuario.

— ¿Cómo validaremos nuestras aplicaciones? ¿Por ejemplo, a través del uso de analíticas móviles, informes de errores o feedback de usuarios?

Cuestiona el diseño. Queremos asegurarnos de que cumple con los fines previstos, y también evitar cometer errores graves. El documento de Phillip Armour ‘Five Orders Of Ignorance’25 es un gran recurso para ayudar a estructurar tu enfoque.

Ten en cuenta también la forma de mejorar la testeabiliad de su aplicación en esta etapa para que puedas hacer tu aplicación más fácil de probar con eficacia y eficiencia. Prácticas tales como pruebas unitarias y TDD se aplican en la fase de implementación. Recuerda probar tu proceso de construcción y los build scripts para asegurarte de que sean eficaces, fiables y eficientes; de lo contrario, es probable que sufras los efectos de un desarrollo deficiente a lo largo de la vida de la aplicación.

Fase 2: VerificaciónEsto incluye la revisión de las pruebas unitarias, instalación interna y pruebas de sistema.

Revisa las pruebas unitarias y evalúa su potencia: ¿son realmente útiles y dignas de confianza? Nota: también deben ser revisadas como parte de la fase de implementación, sin em-

25 www-plan.cs.colorado.edu/diwan/3308-07/p17-armour.pdf

Page 270: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

265264 Testeo

bargo éste es un buen momento para abordar las deficiencias materiales antes de que el desarrollo se considere "completo" para la base de código actual.

Para las aplicaciones que requieren instalación, necesitamos maneras de llevarlas a dispositivos específicos para las pruebas de pre-lanzamiento. Para algunas plataformas (incluyendo Android, iOS y Windows Phone), los teléfonos deben estar con-figurados para que las aplicaciones se pueden instalar. También tenemos que decidir en qué teléfonos probar la aplicación. Por ejemplo, es aconsejable probar la aplicación en cada versión apropiada de la plataforma móvil. Para iOS esta sólo puede incluir las últimas versiones. En Android es bastante diferente ya que los dispositivos de gama baja se siguen vendiendo con versiones antiguas de Android y podrían no actualizarse nunca.

También queremos probar diferentes factores de forma de los dispositivos, por ejemplo cuando la relación de las dimensiones de pantalla difiere. Las nuevas dimensiones de pantalla de los iPhone 5 y 6 han expuesto un montón de bugs de interfaz de usuario. Los desarrolladores de Android son muy conscientes de los muchos problemas que diferentes tamaños de pantalla pueden desencadenar.

Las pruebas del sistema se realizan a menudo de forma interactiva, por los probadores. Considera la posibilidad de evaluar las herramientas de automatización de pruebas y los entornos para algunas de las pruebas del sistema. Entraremos en más detalle más adelante en esta sección.

También queremos considerar cómo sabremos que la aplicación responde bien en:

— Usabilidad, experiencia de usuario y requisitos estéticos — Rendimiento, particularmente tal y como es percibido por

los usuarios finales — Pruebas de internacionalización y localización

Page 271: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

266Testeo

Fase 3: LanzamientoEsto incluye pre-publicación y publicación.

Aquellos de vosotros que aún no habéis trabajado con las principales tiendas de aplicaciones, estad preparados para una desafiante experiencia donde la mayoría de los aspectos están fuera de tu control, incluyendo los plazos para la aprobación de tu aplicación. Además, en algunas tiendas de aplicaciones, no es posible revertir a una versión anterior, así que si tu versión actual tiene defectos importantes, tienes que crear una nueva versión que corrija los defectos y, luego, esperar hasta que haya sido aprobada por la tienda de aplicaciones antes de que tus usuarios puedan recibir una versión operativa de la aplicación.

Dadas estas limitaciones es útil ampliar tus pruebas para incluir verificaciones de pre-publicación, por ejemplo respecto a si es adecuada para el conjunto de los dispositivos de des-tino. Los proveedores de las principales plataformas publican actualmente pautas para ayudarte a verificar que tu aplicación responde a sus criterios de presentación. Estas directrices pueden ayudarte incluso si tu objetivo son otras tiendas de aplicaciones.

Page 272: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

267266 Testeo

Apple developer.apple.com/appstore/resources/approval/guidelines.html

Android developer.android.com/distribute/googleplay/publish/preparing.html#core-app-quality

Windows Phone msdn.microsoft.com/en-us/library/windowsphone/develop/hh394032

BlackBerry developer.blackberry.com/devzone/appworld/tips_for_app_approval.html

Fase 4: VinculaciónEsto incluye búsqueda, confianza, descarga e instalación. Una vez que tu aplicación es de disponibilidad pública, los usuarios necesitan encontrarla, confiar en ella, descargarla e instalarla. Podemos probar cada aspecto de esta fase. Intenta buscar tu aplicación en la tienda de aplicaciones pertinente y en los motores de búsqueda principales. ¿De cuántas maneras diferentes puede ser encontrada por los usuarios de destino? ¿Qué pasa con los usuarios fuera de los grupos objetivo, quieres que la encuentren? ¿Cómo van a confiar los usuarios en tu aplicación lo suficiente como para descargarla y probarla? ¿Tu aplicación realmente necesita tantos permisos? ¿Cómo de grande es la descarga, es práctico descargarla mediante la

Page 273: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

268Testeo

red móvil? ¿Cabrá en el teléfono del usuario, especialmente si hay poco espacio de almacenamiento disponible en su dispositivo? ¿Se instala correctamente la aplicación? Puede que haya problemas de firmado que causen que sea rechazada por algunos dispositivos.

Fase 5: ValidaciónEsto incluye el pago, el uso y la retroalimentación. Como seguramente ya sabes, es poco probable que una aplicación móvil con poco feedback tenga éxito. Además, muchas de las aplicaciones tienen una vida muy corta en el teléfono de un usuario. Si la aplicación no es de su agrado ni le involucra en pocos minutos, es probable que sea descartada o ignorada. Y, si estás buscando obtener pagos, vale la pena probar las diferentes formas de pago, sobre todo para aquellos integrados en la aplicación.

Considera encontrar maneras de probar los siguientes puntos prácticos:

— Detección y reporting de problemas. Pueden incluir tu propio código, utilidades de terceros y servicios online.

— Analíticas móviles. ¿Tienen sentido los datos recabados? ¿Qué anomalías hay en los datos reportados? ¿Cuál es la latencia en la recepción de resultados?

Page 274: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

269Testeo

Herramientas de Testeo

— Application Ressource Optimizer (ARO) de AT&T: developer.att.com/application-resource-optimizer, proyecto de código abierto en github.com/attdevsupport/ARO

— Fiddler por Telerik: telerik.com/fiddler permite encontrar y modificar el tráfico de red entre tu móvil y su conexión de red.

— Genymotion: genymotion.com, un emulador rápido y muy potente para controlar, por ejemplo, valores de los sensores.

— iFunbox: i-funbox.com/ ayuda a instalar aplicaciones y gestionar archivos en dispositivos iOS.

— iTools: itools.en.uptodown.com/, un configurador de aplicaciones para iOS que incluye el monitorizado de la cache y logs en tiempo real.

Page 275: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

270Testeo

Aprende Más

Testear aplicaciones móviles se está convirtiendo en una importante corriente con múltiples fuentes de información. Algunos recursos útiles son:

— testdroid.com/blog, un fértil blog que trata varios temas, entre ellos el testeo de apps. También publican una línea editorial sobre el testeo de juegos móviles26.

— appqualitybook.com/, el sitio sobre el interesante libro de Jaron Arbon, basado en sus experiencias en el testeo y análisis de un gran número de aplicaciones móviles.

— kohl.ca, el sitio de Jonathan Kohl incluye enlaces a su aclamado libro sobre el testeo de aplicaciones móviles, y otros artículos.

— slideshare.net/karennjohnson/kn-johnson-2012-heuristics- mnemonics, presentación de Karen Johnson sobre tests heurísticos y el uso de SFDPOT en el testeo móvil.

— appqualityalliance.org/resources, el sitio oficial de la App Quality Alliance AQuA incluye unas útiles directrices para el testeo de aplicaciones.

26 testdroid.com/testdroid/7790/best-practices-in-mobile-game-testing

Page 276: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES
Page 277: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

272Monetización

MonetizaciónPor fin, has terminado tu aplicación, o sitio web para móviles, y la has pulido como resultado del feedback de beta testing. Suponiendo que no estás desarrollando como hobby, para promocionar una marca, etc., es el momento de hacer algo de dinero. Pero, ¿cómo se hace eso y cuáles son tus opciones?

En general, tienes las siguientes vías de monetización:

— Pago por descarga: Vende tu aplicación por descarga — Pago en aplicación: Añade opciones de pago dentro de tu

aplicación — Publicidad móvil: Gana dinero por publicidad — Patrocinios: Recibe un pago cada vez que uno de tus

usuarios se da de alta en un servicio de tu patrocinador — Participación en ingresos: Obtén ingresos por servicios

del operador que se originen en tu aplicación — Ventas indirectas: Afiliados, venta de datos y bienes

físicos, entre otros — Mercado de componentes: Vende componentes o una

versión marca blanca de tu aplicación a otros desarrol-ladores

Cuando planifiques tu desarrollo, la determinación de la monetización en tu modelo de negocio debería ser uno de los elementos clave de su diseño inicial, ya que podría afectar al comportamiento técnico y funcional de la aplicación. El artículo "Five strategies to monetize your mobile app"1 es una excelente referencia sobre cómo plantear los aspectos

1 medium.com/@signored/dont-fall-below-the-app-poverty-line-9b800a214e4a

Page 278: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

273

financieros para evitar incomodar a los usuarios o perder los ingresos que esperabas conseguir.

Pago Por Descarga

Usando el pago por descarga (PPD, del inglés Pay Per Download), tu aplicación se vende una vez para cada usuario al descargarla e instalarla en su teléfono. El pago puede ser gestionado por una tienda de aplicaciones, operador móvil o mediante otro mecanismo configurado por ti mismo. El que una vez fue el método de monetización más popular y rentable hoy es utilizado por una minoría de los desarrolladores. Gartner predice que para el año 2017 casi el 95% de las descargas será de aplicaciones libres, frente a aproximadamente el 90% en la actualidad2.

Cuando tu aplicación se distribuye en una tienda de aplicaciones, la tienda se encargará del mecanismo de pago por ti. A cambio, la tienda cobra una comisión por todas las ventas (habitualmente el 30%). En la mayoría de los casos, las tiendas ofrecen una matriz de precios fijos para elegir por país y moneda ($0,99, 0,7 EUR, $3, etc.) a la hora de fijar el precio de tu aplicación.

El pago por la descarga de aplicaciones se gestiona habitualmente de una de las siguientes maneras: o bien se factura a través del operador de telefonía, o se efectua el cobro mediante tarjeta de crédito.

La facturación vía operador permite a tus clientes pagar por tu aplicación con sólo confirmar que la venta se cargará a su factura de teléfono móvil o mediante el envío de un SMS Premium. En algunos casos, la facturación vía operador se ges-

2 aplicaciones www.businessweek.com/articles/2013-09-19/the-profitable-future-of-free-mobile-aplicaciones

Page 279: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

274273 Monetización

tiona mediante una tienda de aplicaciones (por ejemplo Google Play, que soporta la facturación vía operador para un buen número de operadores por todo el mundo). En otros casos, puede ser implementada directamente por el desarrollador.

Los operadores reciben una parte de los beneficios del precio de venta (normalmente del 30% al 60%, pero algunos pueden llegar a quedarse con el 95%) y, si usas uno de ellos, el agregador también recibirá una parte. Es común que gestión y seguridad (cómo evitar que copien tu aplicación) sean temas problemáticos en el modelo PPD, pero en ciertos escenarios pueden ser la única manera que tendrás de monetizar tu aplicación. Facturar a operadores puede resultar una tarea muy difícil, sobre todo si quieres vender en varios países, ya que es necesario firmar contratos con un operador en cada país. Por razones desconocidas, algunos operadores, como Vodafone, están eliminado la opción de facturar al operador vía Android Play en algunos mercados, como Reino Unido y Alemania. Posiblemente porque hay mejores alternativas, como por ejemplo pagos bancarios vía móvil.

Vale la pena señalar que la mayoría de los propietarios de tiendas de aplicaciones están llevando a cabo acuerdos de facturación vía operador, teniendo Nokia Store la mejor cobertura de capacidad de facturación vía operador al ofrecerla para 60 países tanto para su antigua Nokia Store en los actuales teléfonos Nokia de gama baja, en el que el 99% de los beneficios se canalizan facturando al operador3, como para Microsoft Windows Phone Marketplace. Google y BlackBerry ofrecen opciones similares. La razón principal de ésto es que normalmente, cuando los usuarios tienen la opción de comprar con tarjeta de crédito o con métodos de facturación vía opera-dor, muestran una preferencia significativa hacia la facturación

3 developer.nokia.com/nokia-x/opportunity/monetization

Page 280: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

275Monetización

vía operador. Nokia, adicionalmente, aísla a los desarrolladores de las variaciones de la cuota de operador, ofreciendo a los desarrolladores una tasa fija del 70% de los ingresos por facturación (Nokia dice que sus estudios indican un incremento por diez de los beneficios respecto a los pagos con tarjeta de crédito). Nokia, al menos, aísla a los desarrolladores de las variaciones de comisiones según operador, ofreciéndoles un porcentaje fijo del 70% de la facturación.

La facturación mediante tarjeta de crédito es utilizada por Apple, Google (en algunos casos), Amazon y otras tiendas. Apple lleva años exigiendo a los usuarios de iPhone que den los datos de una tarjeta de crédito cuando se registran, y Google también ha comenzado a utilizar éste método para usuarios de Android.Obtener estos datos antes de que se realice compra alguna es, según los analistas, un factor diferenciador clave para obtener mayores beneficios mensuales por aplicación.

La última opción de pago es crear tu propio sitio web y poner en práctica un mecanismo de pago a través de él, como PayPal móvil, la marcación a números fijos premium4, y otros.

El uso de PPD se puede implementar sin un diseño o requisitos de codificación especiales para tu aplicación. Para comenzar, recomendamos utilizar las opciones de facturación de las tienda de aplicaciones, ya que implican un coste mínimo de instalación y gastos administrativos de menor importancia.

Para cada forma de pago es importante determinar la elasticidad en el precio de demanda o PED5. Incrementar el precio no significa necesariamente incrementar los beneficios (y viceversa), ya que tu precio debe encajar con las expectati-vas de tu base de usuarios.

4 daopay.com

5 en.wikipedia.org/wiki/Price_elasticity_of_demand

Page 281: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

276275 Monetización

Pagos en la Aplicación

El pago dentro de la aplicación (o IAP, en inglés In-App Payment) es una forma de cobrar por acciones o contenidos específicos dentro de tu aplicación. Un uso muy básico podría permitir la compra unitaria de tu aplicación (sin suscripciones ni cargos recurrentes) después de un período de prueba, que puede generar más ventas que PPD si crees que las características de tu aplicación justifican un precio más alto. Alternativamente, puedes ofrecer las características básicas de tu aplicación de forma gratuita, pero cobrar por contenido premium (vídeos, créditos virtuales, información premium, características adicionales, eliminación de los anuncios y similares). La mayoría de las tiendas de aplicaciones ofrecen una opción de compra en aplicación, o puedes implementar tu propio mecanismo de pago. Si quieres algo más que una "li-cencia completa" por pago, tienes que pensar cuidadosamente acerca de cómo, cuándo y qué están dispuestos a pagar tus usuarios, y diseñar tu aplicación en consecuencia. Los pagos en aplicación recurrentes, también llamados subscripciones, son posibles en la mayoría de las plataformas. Este tipo de pagos son adecuados cuando tu aplicación ofrece contenido que se actualiza de manera regular, por ejemplo periódicos online o revistas digitales.

Las compras dentro las aplicaciones se han convertido en el modelo más próspero de monetización en muchos mercados, particularmente en los juegos "freemium", que se distribuyen gratuitamente para enganchar a los usuarios antes de conver-tirlos en clientes. La IAP es especialmente popular en los vid-eojuegos (por ejemplo para comprar energía extra, más niveles, créditos virtuales, etc.) y puede ayudar a conseguir una gran base de usuarios si ofreces la aplicación gratuitamente.

Distimo informó en el 2014 que las compras in-app suponen

Page 282: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

277Monetización

el 79% de los beneficios de iOS6. Si tu objetivo son países específicos, sé consciente de las posibles diferencias de comportamiento, por ejemplo en China la compra inicial es el 99% del beneficio generado, mientras que la IAP es muy baja; en cambio, en EE.UU. ocurre justo lo inverso.

También debería ser obvio que necesitarás diseñar y desar-rollar tu aplicación de manera que incorpore el método de pago en aplicación. Si la aplicación se ejecuta en varias plataformas, puede ser necesario implementar un mecanismo diferente para cada una de ellas (y, potencialmente, para cada tienda de aplicaciones).

Al igual que con PPD, te recomendamos que comiences con el mecanismo de compra en aplicación que ofrece una tienda de aplicaciones, especialmente porque algunos de estos servicios pueden incrementar la facturación vía operador (tales como Google Play), utilizar la información de la tarjeta de crédito preexistente (como Apple o Amazon), o con el pago desde la aplicación ofrecido directamente por el operador. Desde el punto de vista de los usuarios, esta es la manera más fácil y más conveniente de pago (uno o dos clics, sin necesidad de introducir números de tarjetas de crédito, nombres de usuario u otras credenciales), por lo que los desarrolladores pueden esperar una gran aceptación por parte del usuario y elevadas tasas de conversión.

Publicidad Móvil

Como es común en los sitios web, puedes decidir ganar dinero mostrando anuncios. Hay una serie de entidades que ofrecen herramientas para mostrar anuncios para móviles, siendo ésta la forma más fácil de ganar dinero en aplicaciones de

6 “2014 How the Most Successful Apps Monetize Globally” disponible en www.distimo.com/publications

Page 283: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

277

navegador móvil. Admob.com, Buzzcity.com e inmobi.com (para videojuegos) son algunas de ellas. Sin embargo, debido a la amplia gama de dispositivos, países y características, en la actualidad hay más de 70 grandes redes de publicidad móvil. Cada red ofrece enfoques ligeramente diferentes y encontrar el que mejor monetice la audiencia de tu aplicación puede no ser tarea simple. No hay una regla de oro, es posible que tengas que experimentar con algunas para encontrar la que mejor te funcione. Sin embargo, para un arranque rápido se puede considerar el uso de un agregador de publicidad móvil como por ejemplo Madgic7, smaato8 o inneractive9, ya que tienden a dar mejores resultados al combinar y optimizar los anuncios de más de 50 redes móviles de publicidad. La mayoría de los agregadores pueden operar como redes de publicidad ofreciendo Real Time Bidding (RTB), como si fuera una subasta en vivo donde el precio de cada anuncio se determina dinámicamente. La mayoría de las redes de publicidad tienen una comisión del 30% al 50% en los ingresos por publicidad y los agregadores de un 15% o 20% adicional, pero incluso con esas cifras lo agregadores son los más beneficiosos si deseas integrar diversas redes de publicidad.

Si tu aplicación está dando buenos resultados y tiene un gran volumen en un determinado país, podrías considerar vender publicidad directamente a agencias de publicidad o marcas (publicidad Premium) o contratar a una agencia de medios para hacer eso por ti.

También aquí, muchos de los fabricantes de dispositivos ofrecen servicios de publicidad móvil como parte de las funciones de su tienda de aplicaciones, e igualmente vale la

7 madgic.com

8 smaato.net

9 inner-active.com

Page 284: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

279Monetización

pena explorar estos mecanismos. En algunos casos puede que tengas que utilizar los servicios de publicidad del proveedor para poder incluir tu aplicación en su tienda.

La publicidad en aplicación requiere que diseñes y pro-grames tu aplicación con cuidado. No sólo debes considerar con cuidado la ubicación de los anuncios en tu aplicación, también las variaciones y el mecanismo de exclusión (opt-out). Si los anuncios se vuelven demasiado intrusivos, puede que los usuarios abandonen tu aplicación, al tiempo que la publicidad demasiado sutil significará pocos o nulos ingresos. Relativamente nueva es la publicidad intersticial, comparada con la publicidad tradicional de banners: este término se usa generalmente para describir un anuncio que ocupa toda la pantalla y que suele ir acompañado de un botón "skip screen". Otros nuevos formatos incluyen los anuncios gamificados y los premiados, especialmente en los videojuegos. Puedes necesitar experimentar un poco para encontrar la manera y posición correcta en la que colocar los anuncios.

Patrocinios

La startup alemana Apponsor10 ofrece una nueva manera de ganar dinerp sin tener que mostrar publicidad o cobrar por descargar la aplicación: El usuario obtiene tu aplicación de manera gratuita y se le pide darse de alta en una newsletter de tu patrocinador. El patrocinador te paga por cada nuevo registro en esa newsletter. No debe ser confundida con las empresas de tipo App Sponsors, que pagan el coste de desar-rollo de la aplicación pidiendo a cambio una participación en los beneficios. Para más información entra en Apps Funder11.

10 apponsor.com

11 appsfunder.com

Page 285: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

280279 Monetización

Ventas Indirectas

Otra opción es utilizar tu aplicación para dirigir las ventas donde desees.

Habitualmente ofreces tu aplicación o website de manera gratuita, y entonces empleas mecanismos tales como:

1. Programas de afiliación: Promover aplicaciones de pago propias o de terceros en el interior de una gratuita. Ver también MobPartner12. Esto puede ser considerado una variación de publicidad móvil.

2. Venta de datos: Seguimiento del comportamiento y venta de los datos a partes interesadas. Ten en cuenta que, por razones de privacidad, no debe revelar ninguna información personal, y que debes asegurarte de que todos los datos son proporcionados en informes anónimos y consolidados.

3. Mundo real versus virtual: Usa tu aplicación como herramienta de marketing para vender bienes en el mundo real. Ejemplos típicos son aplicaciones para vehículos, revistas y marcas tales como McDonald’s y Starbucks. También utilizan este modelo de negocio aplicaciones de cupones empresas como Groupon.

No hay nada que te impida combinar esta opción con cualquiera de las otras de monetización si lo deseas, pero ten la precaución de no dar la impresión de realizar promociones extremadamente intrusivas.

12 mobpartner.com

Page 286: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

281Monetización

Mercado de Componentes

Un mercado de componentes o CMP (del inglés Component Marketplace) proporciona otra oportunidad para los desarrol-ladores de monetizar sus productos mediante la venta a otros desarrolladores de componentes de software o aplicaciones de marca blanca. Un componente es una pieza de construcción de software que ofrece una funcionalidad definida para ser utilizado por el software de nivel superior.

La típica pregunta que surge en este punto es cómo los CMPs conviven con el código abierto. Como usuario, el código abierto es a menudo gratuito, por lo que el código fuente debe ser proporcionado y los usuarios tienen el derecho de modificar el código fuente y distribuir la obra derivada.

Algunos proveedores de componentes requieren una cuota de licencia. Ellos pueden proporcionar el código fuente completo que permite al desarrollador depurar código en el nivel más bajo. Algunos CMP soportan todos los modelos: componentes de pago así como componentes libres, ambos con o sin el código fuente.

Si eres un desarrollador en busca de un componente, los CMP ofrecen dos ventajas principales: En primer lugar, no tienes que abrir su código fuente sólo porque uses componen-tes de software. Todo código abierto viene con una licencia. Algunas licencias como la Apache están comercialmente compatibles, mientras que otras, como AGPL y OSL, requieren que abras el código fuente tuyo que se integrará con el suyo. Es posible que no quieres esto. En segundo lugar, los CMPs proporcionan una forma fácil de encontrar y descargar componentes. Puedes pasar días mirando los repositorios de código abierto para encontrar el componente adecuado.

Los mercados de componentes han existido durante décadas. El mercado más importante es de componentes para

Page 287: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

282281 Monetización

.NET y Visual Basic en la comunidad y Windows. Mercados como componentOne y proveedores como Infragistics son bien conocidos. En cambio, la idea de los mercados de componentes dentro del ámbito móvil es bastante nueva. La empresa de Deutsche Telekom Deutsche Developer Garden13 y ChupaMo-bile14 son jugadores destacados en este campo.

Eligiendo tu Modelo de Monetización

Así que, con todas estas opciones, ¿cuál debería ser tu estrategia? Depende de tus objetivos, veamos algunos:

— ¿Estás seguro de que los usuarios desearán comprar tu aplicación inmediatamente? Entonces véndela como PPD a 0.89€, pero ten en cuenta que, aunque puede que ingreses varios cientos de euros por día, fácilmente pueden no ser más que un par de cientos por semana si la valoración de tu aplicación es poco apropiada o la competencia es feroz. La Application Developer's Alliance recomienda el método de monetización PPD para aplicaciones de producción costosa, con barreras de entrada o elevado volumen15. Esto incluye juegos y aplicaciones de entretenimiento, la productividad, la navegación y noticias.

— ¿Estás ofreciendo capacidades premium a precio premium? Considera una versión limitada en tiempo o capacidades y usa la compra en aplicación para permitir la compra de una versión completa, ya sea permanentemente o por un período de tiempo.

— ¿Estás desarrollando un juego? Considera ofrecerlo de

13 www.developergarden.com/component-marketplace/

14 www.chupamobile.com

15 www.appdevelopersalliance.org/app-monetización

Page 288: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

283Monetización

manera gratuita con publicidad en la aplicación, o una versión básica que desbloquee mediante compra en la aplicación nuevas capacidades, niveles, vehículos o cualquier equipamiento de juego (freemium).

— ¿Es tu aplicación móvil una extensión de una tienda web o física? Ofrece la aplicación gratis y gana ingresos de los productos y servicios que comercializas en el mundo real.

— ¿Tiene contenido que se actualiza frecuentemente, como una revista digital? Ofrece pagos recurrentes y asegúrate de que lo usuarios vuelven.

— ¿Ofrece bienes físicos, como la aplicación de una tienda? Ofrece la aplicación gratuitamente y obtén comisiones de las compras de los clientes.

Estrategias para las Tiendas de AplicacionesLa otra cara de la generación de ingresos es el marketing y la publicidad. La necesidad puede ser obvia si vendes tu apli-cación a través de tu propio sitio web, pero resulta igualmente importante cuando se usa la tienda de aplicaciones de un vendedor. Esas tiendas son a la vez la maldición y la bendición de los desarrolladores móviles. En el lado positivo, dan a los desarrolladores largo alcance y exposición potencial de ventas que de otra manera sería muy difícil de lograr. En el lado negativo, las más populares contienen actualmente cientos de miles de aplicaciones, disminuyendo el potencial para destacar entre la multitud y tener éxito, llevando a muchos a comparar la posibilidad de éxito en una tienda de aplicaciones a la probabilidad de ganar la lotería.

Dicho esto, aquí están algunos consejos y trucos para ayudarte a incrementar tus probabilidades.

Page 289: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

284283 Monetización

Estrategias para Conseguir un Ranking AltoLo más importante a comprender acerca de las tiendas de aplicaciones es que son canales de distribución y máquinas de marketing. Esto significa que aunque son una gran manera de conseguir introducir tu aplicación en los dispositivos de los usuarios, no van a promocionar tu aplicación por ti (a menos que compres posicionamiento premium, ya sea a través de banners o posiciones de lista). No puedes confiar en las tiendas de aplicaciones para incrementar tus descargas, a menos que aparezcas en una lista top-ten. Pero no hay que jugar a la lotería con tus aplicaciones, ten una estrategia y un plan para comercializar tu aplicación.

Hemos preguntado a muchos desarrolladores acerca de las tácticas que les han proporcionado la mayor atención y un mejor ranking en las tiendas de aplicaciones.

Nos dieron muchas respuestas y salió a la luz un tema común: no hay ninguna fórmula mágica, ¡tienes que atacar por todos los frentes! Sin embargo, te ayudará tratar de mantener en cuenta lo siguiente:

— Necesitas una aplicación rompedora: debería ser entre-tenida, fácil de usar y estar libre de bugs. Asegúrate de ponerla en las manos de usuarios antes de en las tiendas.

— Pule tus iconos e imágenes para la tienda de aplicaciones, trabaja en la descripción de tu aplicación, y elige cui-dadosamente palabras clave y categoría. Si estás inseguro o insatisfecho con los resultados, experimenta.

— Obtener reseñas de bloggers y revistas es una de las mejores maneras de recibir atención. Como contrapre-stación, algunos te pedirán dinero, otros exclusividad y otros acceso anticipado a tus aplicaciones.

— Consigue críticas positivas tan pronto como sea posible.

Page 290: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

285Monetización

Llama a tus amigos y pide a tus usuarios de manera regular una reseña.

— Si vas a llevar a cabo cualquier tipo de publicidad, hazlo en avalancha durante un par de días. Esto es mucho más efectivo que gastar la misma cantidad de dinero durante dos semanas, ya que te ayudará a alcanzar un elevado pico de audiencia, más que una subida lenta y gradual.

— No confíes en el tráfico generado por personas que exploran la tienda de aplicaciones, cerciórate de conducir tráfico a tu aplicación a través de tu sitio web, SEO y social media.

Múltiples Tiendas versus Tienda ÚnicaCon más de 120 tiendas de aplicaciones disponible para los desarrolladores, evidentemente hay muchas opciones para distribuir una aplicación. Pero los 20 minutos necesarios en promedio para presentar una aplicación en una tienda significa que podrías pasar mucho tiempo publicando aplicaciones en tiendas lóbregas que consiguen pocas descargas. Esta es la razón por la que la mayoría de los desarrolladores se adhieren a sólo una o dos tiendas, perdiendo una oportunidad poten-cialmente enorme, ¡pero consiguiendo mucho más tiempo para cosas importantes, como la programación! Así que, ¿debes ir a múltiples tiendas o no?

Page 291: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

286Monetización

Múltiples tiendas Tienda única

Las tiendas de aplicaciones de las principales plataformas pueden tener serias limitaciones, tales como mecanismos de pago, penetración en determinados países y directrices de con-tenido.

Más del 90% de los usuarios sólo utilizan una única tienda de aplicaciones, que suele ser la que viene por defecto incluida con el teléfono.

Las tiendas más pequeñas te dan más opciones de visibilidad (aplicación destacada).

Tu propio sitio web te puede aportar más tráfico que las tiendas (especialmente si tienes una marca conocida).

Las tiendas más pequeñas tienen un entorno social más amistoso que las grandes.

Muchas tiendas pequeñas arañan datos de las grandes, así que puede que tu aplicación también esté en ellas.

Las tiendas de los operadores tienen directrices para con-tenidos notoriamente estrictas y puede ser difícil entrar, particularmente para algunos tipos de aplicaciones.

Para contenidos sin nicho, la tienda del operador o plata-forma pueden ofrecer suficiente exposición para no justificar el esfuerzo extra de una estrategia multi-tienda.

Page 292: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

Múltiples tiendas Tienda única

Las tiendas más pequeñas ofrecen un amplio rango de opciones de pago y modelos de negocio, o están disponibles en muchos países.

Algunas tiendas de op-eradores tienen procesos de facturación más fáciles, tales como facturación directa a la cuenta de teléfono del usuario, conduciendo a un incremento en la ratio de conversión.

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

Los desarrolladores para iOS sólo necesitan una tienda.

Las tiendas de aplicaciones pueden darte cobertura global, pero con el paso del tiempo te será interesante adaptar tu es-trategia respecto a las tiendas de aplicaciones para que encaje con tu base de usuarios objetivo, y utilizar sólo las tiendas de aplicaciones que se adecúan más a ese público. Esto podría implicar usar tiendas particulares de operadores, aquellas populares en un determinado país, o sencillamente mantenerte fiel a las plataformas globales de venta de aplicaciones. Existen algunas tiendas de terceros con un gran volumen de audiencia, por ejemplo la tienda de Amazon para Android, que ofrece a los desarrolladores un buen número de maneras de monetizar sus aplicaciones, por ejemplo PPD y pagos en aplicación para muchos países. Además, en algunos países existen tiendas de aplicaciones locales muy populares, por ejemplo la alemana AndroidPit16 o algunas dedicadas a Android en China.

16 androidpit.de

Page 293: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

288Testeo

¿Qué Puedes Ganar?

Una de las preguntas más comunes de un desarrollador es acerca de cuánto dinero se puede ganar con una aplicación móvil. Está claro que algunas aplicaciones han hecho millon-arios a sus desarrolladores, mientras que otros no renunciarán a su puesto de trabajo en el corto plazo. De acuerdo con una investigación del 2013 por Forbes.com17, la mayoría de los desarrolladores de aplicaciones no están generando suficientes ingresos para llegar a ser rentables y los desarrolladores dedicados a una única plataforma confirman que los ingresos generados por su aplicación de más éxito no resultan suficien-tes para sustentar un negocio independiente. Según el estudio Business and Productivity apps de VisionMobile, realizado a más de 6.000 desarrolladores móviles, el 50% de ellos se encuentran por debajo del “límite de pobreza por aplicación” al obtener menos de 500 dólares americanos al mes por cada aplicación (el 67% en el 2013)18. inMobi afirma que en el tercer trimestre del 2014, los juegos móviles eran la categoría más rentable de software móvil en términos de ingresos por publicidad. Según su informe19 , el mejor tipo de anuncio son las aplicaciones rich media. Y Gartner no predice un futuro prometedor: consideran que hasta el 2018 menos del 0,01% de las aplicaciones móviles de consumo serán consideradas un éxito financiero por sus desarrolladores20.

En última instancia, lo que puedes ganar depende de

17 www.forbes.com/sites/tristanlouis/2013/08/10/how-much-do-average-apps-make

18 www.visionmobile.com/products/research

19 www.inmobi.com/insights/download/whitepapers/the-state-of-mobile-app-monetization-q3-2014

20 www.gartner.com/newsroom/id/2648515

Page 294: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

289Testeo

satisfacer una necesidad y de un marketing eficaz. La ex-periencia sugiere que las aplicaciones que ahorran dinero o tiempo al usuario son más atractivas (descuentos, cupones de hotel, música gratuita y similares), seguidas por los juegos (basta con ver el éxito de Angry Birds) y las herramientas de negocio (los visores de documentos de oficina, herramientas de sincronización, herramientas de copia de seguridad y otras), pero a menudo el éxito (económico) de una sola aplicación no se puede predecir. El éxito, por lo general, viene con un bagaje en experimentación y mucha perseverancia.

Page 295: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES
Page 296: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

291Epílogo

EpílogoGracias por leer esta 15ª edición de nuestra Guía del Desarrol-lador Móvil. Esperamos que hayas disfrutado de su lectura y que te hayamos ayudado a clarificar tus opciones. Tal vez ahora estás listo para participar en el desarrollo de una aplicación móvil o hayas descubierto nuevas opciones en el negocio de las aplicaciones. Esperamos que sí. Por favor, involúcrate también con la comunidad y comparte tus experiencias e ideas con nosotros y el resto de compañeros.

Si quieres contribuir a esta guía, patrocinar próximas ediciones, o te interesa obtener ediciones anteriores, por favor escríbenos a [email protected]. Si utilizas Twitter, te invitamos a seguirnos en twitter.com/enoughsoftware y difundir este proyecto utilizando el hashtag #mdgg.

Por supuesto, puedes descargarte esta edición en formato ebook en amazon.com, y en formato PDF desde nuestro web-site: www.enough.de/mdgg. En el momento de escribir estas palabras, también estamos en proceso de publicar el contenido de este libro como website en www.mobiledevelopersguide.com, donde esperamos que encuentres nuevas maneras de involucrarte y hacernos llegar tu feedback.

¡Publicaremos la próxima edición a comienzos de 2016!

Page 297: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

292Acerca de los Autores

Acerca de los Autores

Anna AlfutAnna comenzó su vida profesional como diseñadora creativa. Después de descubrir su pasión por el diseño de interfaces, se convirtió en la co-autora de una aplicación para iOS y Android y consultora en múltiples proyectos, tanto en el lado agencia como en el de cliente. Actualmente trabaja como diseñadora UX para dispositivos móviles. Aparte de dibujar y pensar a través de interfaces, también hace ilustraciones y disfruta de vivir en Londres.

www.alfutka.net

Davoc Bradley / MiraLifeDavoc ha estado trabajando como ingeniero de software desde 1999, especializándose en arquitectura y diseño de webs y sistemas móviles de alta usabilidad. Actualmente es CTO en MiraLife, proveedores de software web y móvil que tiene por objetivo mejorar las vidas de personas con demencia y otras enfermedades terminales. Davoc es también un músico entusiasta, fan ávido del cricket y le encanta viajar.

Twitter: @davocbradley

Page 298: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

293292 Acerca de los Autores

Marco Büttner / SciDevMarco tiene 27 años y es desarrollador móvil desde el 2011. Estudia informática en la Universidad Humboldt de Berlin, trabaja para idealo, y es miembro fundador del proyecto de de-sarrollo móvil SciDev, centrado en el desarrollo de aplicaciones web para bada, Tizen y otras tecnologías móviles emergentes. Es bien conocido en las comunidades bada y Tizen y siempre está encantado de poder compartir sus conocimientos.

Twitter: @scionblnwww.scidevapps.de

Sally Cain / RNIBSally ha trabajado en RNIB en el ámbito de la accesibilidad digital desde hace más de 15 años. Cree apasionadamente en la igualdad de acceso a la tecnología digital para las personas con discapacidad. Sally es representante de su organización en grupos de estándares del W3C, y también forma parte de una serie de grupos en el British Standards Institute (BSI) relacionados con la estandarización de las TIC, lo que incluye el grupo responsable del BS8878 o Código de Prácticas para la Accesibilidad Web. Actualmente, Sally gestiona la equipo Web & Online en RNIB, que ofrecen asesoría en accesibilidad de páginas web y aplicaciones. Ha dirigido la redacción del estándar interno del RNIB para la accesibilidad.

Twitter: @sallycainwww.rnib.org.uk

Page 299: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

294Acerca de los Autores

Eva Casado de Amezua / Universitat Oberta de CatalunyaEva es la traductora al castellano de esta edición de la guía. Además de ser Head of Support en Typeform, es colaboradora docente en la UOC, patrocinadores de esta traducción. En el pasado, ha sido desarrolladora RIA, copywriter, y creativo especialista en marketing online. Le apasiona cantar jazz, la sociología de los nuevos medios, la fotografía y leer libros de divulgación científica.

Twitter: @ellaing

Dean Churchill / AT&TDean trabaja en el diseño de seguridad, desarrollo y prueba de aplicaciones de AT&T. Desde hace años está centrado en im-pulsar los requisitos de seguridad en las aplicaciones móviles, tanto para aquellas de consumo como para internas de AT&T. También ha apoyado las líneas emergentes de producto de AT&T en Salud Móvil y Vida Digital. Vive en el área de Seattle y disfruta haciendo esquí alpino y pesca con mosca.

John GambrellJohn ha estado en el mundo del desarrollo de software desde hace más de 20 años en posiciones corporativas y consultoría, y ha trabajado con los cambios de paradigma de cliente/servidor, web y, actualmente, móvil. Lleva desarrollando aplicaciones para iOS como freelance desde el año 2009 y también desarrolla proyectos personales. Vive en Dallas (Texas, EE.UU.) con su esposa, sus hijos, y tres perros.

Twitter: @jpgdallas

Page 300: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

295294 Acerca de los Autores

Julian Harty / CommercetestJulian fue contratado por Google en 2006 como su primer ingeniero de pruebas en Europa responsable de probar las aplicaciones móviles de Google. Ayudó a otros, tanto dentro como fuera de Google, a aprender a hacer lo mismo, y terminó escribiendo el primer libro sobre ese tema. Posteriormente trabajó para eBay, donde su misión era reformar las pruebas a nivel mundial. Actualmente trabaja de forma independiente, escribe aplicaciones móviles y herramientas de automatización de pruebas, y ayuda a otros a mejorar sus aplicaciones móviles. También está escribiendo un nuevo libro sobre testeo y automatización de pruebas para aplicaciones móviles.

Twitter: @julianharty

Oscar Clark / Unity TechnologiesOscar Clark es un autor, consultor y divulgador de Everyplay (Unity Technologies). Ha sido pionero en el mundo de los juegos sociales online, en móvil y en consolas desde 1998. Oscar ha aportado 'vision' para una de las primeras comuni-dades de juegos en línea (Wireplay - British Telecom); fue líder mundial en la división de videojuegos en Hutchison Whampoa (3UK), incluyendo la que, posiblemente, fuera la primera compra in-app de la historia; y fue el Home Architect para PlayStation®Home. Actualmente es columnista regular en PocketGamer.Biz y Develop-Online, conferenciante en innumer-ables conferencias sobre videojuegos, mentor en la aceleradora GameFounders, y profesor invitado en múltiples universidades. Su primer libro, "Games As A Service - How Free To Play Design Can Make Better Games" está disponible online.

Twitter: @athanateuswww.gamesasaservice.net

Page 301: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

296

Ovidiu Iliescu / Enough SoftwareTras desarrollar aplicaciones de sobremesa y web durante varios años, Ovidiu decidió que el software móvil era más de su agrado. Está involucrado en desarrollos Java ME y BlackBerry para Enough Software desde 2009. Se emociona con cualquier cosa relacionada con una programación eficaz, algoritmos y gráficos por ordenador.

Twitter: @ovvyblablawww.ovidiuiliescu.comwww.enough.de

Alex Jonsson / EvothingsA Alex le gusta todo lo móvil, tanto aplicaciones como tecnologías web, y especialmente conectar inteligentemente objetos físicos a otros móviles. Tiene un Doctorado en Tecnología de Medios por el Real Instituto Tecnológico de Estocolmo y comparte sus ideas y conocimientos tanto a nivel académico como corporativo. El Dr. Jonsson tiene también una necesidad ecléctica de investigar cómo las aplicaciones y servicios pueden generar nuevos negocios, aportando nuevos valores y maneras de conectar el mundo de manera inteligente. Es el fundador y VP Community de Evothings simplemente porque las cosas son mejores si están conectadas.

Twitter: @dr_alexjwww.evothings.com

Page 302: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

297296 Acerca de los Autores

Michael Koch / Enough SoftwareMichael viene desarrollando software desde 1988, uniéndose al equipo de desarrollo de Enough Software en 2005. Ocupa el cargo de Director de Tecnología. Ha dirigido numerosos proyec-tos de desarrollo de aplicaciones móviles (principalmente para Java ME, Android, Windows Mobile y BlackBerry), y también es un experto en tecnologías de servidor. Michael es un entusiasta del código abierto involucrado en muchos proyectos libres, como GNU classpath.

Twitter: @linux_pinguinwww.enough.de

Daniel Kranz / JouleDaniel es un estratega multicanal con experiencia en consul-toría, agencias y tecnología. Anteriormente director técnico de proyectos en una de las principales agencias de publicidad y consultor de soluciones móviles para una consultora especial-izada en web y multicanal, ahora trabaja como consultor de planificación estratégica global aconsejando a marcas sobre cómo integrar lo móvil como parte de su estrategia digital.

www.jouleww.com

Page 303: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

298Acerca de los Autores

Carlo Longino / WIPCarlo ha dedicado más de una década de experiencia la industria móvil, comenzando justo tras el cambio de milenio en la sede de Nokia en Finlandia. Antes de incorporarse a WIP (Wireless Industry Partnership) como director de los servicios de marketing para desarrollo en el 2010, Carlo trabajó como consultor freelance y escritor hasta que completó un MBA. Previamente, fue analista senior para Floor64, una firma de análisis con sede en Silicon Valley, donde se especializó en las industrias móviles y de telecomunicaciones. También ayudó a lanzar, e impulsó durante cinco años, TheFeature.com, un site centrado en el liderazgo de ideas propiedad de Nokia. Carlos también ha publicado en las redes de noticias de The Wall Street Journal, Business 2.0 y Dow Jones, y ha dado conferencias en numerosos eventos, incluyendo el Mobile World Congress, SXSW, MobileBeat y CTIA, entre otros.

Twitter: @caaarlowww.wip.org

Javier Melenchón / Universitat Oberta de CatalunyaJavier Melenchón se dedica a realizar actividades formativas asociadas a la creación multimedia desde el ámbito universitar-io, inicialmente en la Universitat Ramon Llull y actualmente en la Universitat Oberta de Catalunya. Forma parte de la primera promoción de titulados universitarios en ingeniería multimedia y se doctoró en ese mismo ámbito. Es experto en todo tipo de tratamiento de señales de audio, imagen y vídeo y en cómo formar a los profesionales para que sepan manejar este tipo de información, de crucial importancia en el ámbito móvil actual. Colabora con la revista digital Mosaic. www.mosaic.uoc.edu

multimedia.uoc.edu

Page 304: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

299298 Acerca de los Autores

Tim Messerschmidt / PayPalTim ha estado desarrollando aplicaciones Android desde 2008. Después de estudiar informática de negocios, se unió a Neofo-nie Mobile con sede en Berlín como desarrollador de software móvil en 2011, siendo consultor para Samsung Alemania como Developer Advocate para Android y bada desde 2010. En 2012 se trasladó a PayPal como un Developer Evangelist. Es un apasionado de los pagos por móvil, las interfaces de usuario, UX y el desarrollo en Android en general. Además, le encanta hablar en conferencias, escribir artículos y participar en todo tipo de social media.

Twitter: @seraandroid & @PayPalDevtimmesserschmidt.com

Sebastian Meyer / D-LABSSebastián tiene más de una década de experiencia con las tecnologías web y móviles. Se unió a D-LABS como Consultor de Innovación y Software después de cursar sus estudios en ingeniería de software en el Hasso Plattner Institute en Potsdam. Está especializado en metodologías centradas en el usuario y la innovación en un contexto empresarial, y trabaja como consultor para startups nacionales e internacionales, PYME y grandes empresas.

www.d-labs.com

Page 305: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

300Acerca de los Autores

Patrick MortaraPatrick estudió informática en Frankfurt y ha estado desarrol-lando software para ordenadores de sobremesa desde mediados de los noventa, tanto por libre como contratado por diversas empresas. Comenzó a desarrollar para móviles en el 2010, cuando Samsung lanzó su primer smartphone bada, el Samsung Wave I.

Twitter: @pmortara www.mortara.org

Marcus RossMarcus es un desarrollador y formador independiente. Después de 10 años de estar empleado en varias empresas, ahora está haciendo proyectos SQL-BI y todo tipo de actividades móviles multiplataforma. Es un autor regular en la revista alemana "mobileWebDeveloper". En su tiempo libre se le ve a menudo en conferencias, hablando sobre temas móviles y JavaScript. También escribe artículos, libros y tweets sobre desarrollo móvil.

Twitter: @zahlenhelferwww.zahlenhelfer-consulting.de

Page 306: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

301Acerca de los Autores

André Schmidt / Enough SoftwareAndré lleva en el negocio del software desde 2001. Después de iniciar su carrera somo programador en una de las empresas líderes en la industria de defensa, se unió a Enough Software en 2007 como desarrollador móvil. En este rol, ha creado una amplia gama de aplicaciones móviles, sobre todo para Android. También es un orador frecuente en conferencias de desarrol-ladores y bar camps.

www.enough.de

Michel Shuqair / AppValleyTras comenzar con aplicaciones WAP en blanco y negro, iMode y juegos SMS en la década de los 90, Michel pasó a liderar la red social Wauwee. Sirviendo a casi un millón de miembros, Michel fue apoyado por un equipo de especialistas en Symbian, iPhone, BlackBerry y Android en su sede en Amsterdam. Wauwee fue adquirida por MobiLuck, ahora parte de la empresa con sede en Paris Madgic.com, una plataforma de moetización móvil.

www.appvalley.nl

Marco Tabor / Enough SoftwareMarco es el responsable de relaciones públicas, ventas y mucho más en Enough Software, donde lleva trabajando más de 7 años. El es el coordinador de esta guía, teniendo además la responsabilidad de encontrar patrocinadores y fusionar las aportaciones hechas por la comunidad móvil.

Twitter: @enoughmarcowww.mobiledevelopersguide.comwww.enough.de

Page 307: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

302Acerca de los Autores

Ian Thain / SAPIan es un Mobile Evangelist de SAP, aunque comenzó hace 12 años con Sybase Inc. Se dirige regularmente a público de todo el mundo, proporcionando conocimiento móvil y experiencia corporativa. También escribe artículos, blogs y tweets en movilidad empresarial y es un apasionado de la experiencia en desarrollo móvil en el mundo empresarial.

Twitter: @ithainscn.sap.com/blogs/ithain/ www.sap.com

Marc van 't Veer / PolteqMarc es un consultor especializado en pruebas de aplica-ciones móviles en Polteq, con más de 8 años de experiencia como coordinador y testeador de sistemas. Tiene una gran experiencia en pruebas orientadas a un contexto tecnológico, por ejemplo en telecomunicaciones, SOA, automatización de pruebas, desarrollo de controladores y testeo de APIs. En su trabajo actual, Marc forma parte de un equipo scrum que está desarrollando la próxima generación de coordina todas las pruebas de aplicaciones nativas para los mercados holandés e internacional en servicios de paquetería.

marcvantveer.niobe.nl/blogwww.polteq.com

Page 308: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

303Acerca de los Autores

Robert Virkus / Enough SoftwareRobert ha estado trabajando en el espacio móvil desde 1998. Experimentó la fragmentación de Java de primera mano cuando desarrolló y portó un cliente móvil en el Siemens SL42i, el primera teléfono para el mercado de masas con una máquina virtual Java. Después de esta experiencia puso en marcha el proyecto de código abierto J2ME Polish en 2004. J2ME Polish ayuda a los desarrolladores a superar la fragmentación por dispositivo. Es el fundador y CEO de Enough Software, la compañía detrás de J2ME Polish, muchas aplicaciones móviles, y este libro.

Twitter: @robert_virkuswww.j2mepolish.orgwww.enough.de

Chris Ward / SitepointChris es un desarrollador y escritor trotamundos que trabaja actualmente en varios proyectos con el objetivo de explorar el potencial de la 'cultura libre'. Actualmente el editor de www.sitepoint.com/mobile y siempre está buscando nuevos escritores.

Twitter: @ChrisChinchchrischinchilla.com

Page 309: Don’t Panic GUIA A LA GALAXIA DE APLICACIONES MÓVILES

msdn.microsoft.com hp.com/go/mobiledevelopers.sap.com

www.enough.de

una iniciativa de:

esponsorizado por:

“Si quieres empezar tu propio negocio en el ámbito móvil, este es el libro que tienes que leer primero.” Minh Nguyen en amazon.com

Una lectura obligatoria para cualquiera que esté considerando crear y comercializar apps.” Steve en amazon.com

“El títol és magní�co, pero el contenido hace honor al título en cierta medida. Este libro electrónico ofrece un amplio vistazo a casi cualquier cosa relacionada con el desarrollo de aplicaciones móviles existente.” Azzief Khaliq en hongkiat.com

“¡Una obra espectacular! Te asombrarás por cómo de increíblemente rápido puedes establecer tu presencia en el mercado móvil con los simples pasos explicados en esta guía.” Daniel Hudson en webtechman.com

Socio de distribución:

wip.org

Don’t PanicGUIA A LA GALAXIA DE APLICACIONES MÓVILES

aEdición

com

plet

amente actualizado

aún gratis

www.mobiledevelopersguide.com