Diseñar la web móvil es más que solo adaptar al navegador

iPhone Transit Planner por illustir (cc-by)

iPhone Transit Planner por illustir (cc-by)

Esta semana pude leer un artículo en el blog de Pablasso llamado ¿Cómo debe ser el Internet para móviles? que es acerca de cómo WAP y WAP2 han quedado obsoletos con la llegada del iPhone de parte de Apple, y como él acertadamente menciona, ahora no hay tantas limitaciones de memoria o software como antes. Hasta aquí puedo darle la razón, con Apple y Android soportando HTML5 ¿quién quiere usar WAP?

Por otro lado termina el artículo con un par de comentarios en los que no estoy de acuerdo, vamos por partes:

Pablasso: En mi mundo ideal los móviles deberían de adaptarse a mostrar los contenidos lo más fielmente posible, y si no tienen la pantalla adecuada, entonces proveer aplicaciones para obtener esos contenidos por otros medios, como puede ser RSS

Es un error grave pensar que la web debe ser igual todo el tiempo y en todo lugar, especialmente  en el campo de los móviles.

Web móvil va más allá de adaptar al navegador, importan las capacidades del dispositivo así como también importa el contexto (lugar, hora, tarea, etc) en donde recibe la información, y para apoyar esto citó a la guía breve de web móvil de la W3C:

W3C: Es importante tener en cuenta que existen grandes diferencias entre usuarios móviles y usuarios fijos, como son los diferentes tipos de contenido que manejan, las capacidades de los dispositivos que utilizan (pantallas pequeñas) y el contexto en el cual el usuario recibe el contenido (por ejemplo, en el autobús).

Mostrar en el móvil exactamente lo mismo que en la PC no es siempre lo mejor, aunque también es cierto que un buen navegador, como Safari Mobile, puede ayudar mucho a navegar sobre esas webs no optimizadas para móviles y crear una mejor experiencia web que WAP o WAP2.

iPhone junto al iPod Touch son buenos dispositivos con un excelente navegador pero están muy lejos de competir contra una PC. En un día normal de navegación he llegado a bloquear Safari Mobile hasta 3 veces, no puedo cargar más de 2 webs “normales” (no adaptadas a móviles) y menos usar Flash.

De nuevo, la web móvil no es acerca de un navegador, hay que considera rendimiento (hardware), compatibilidad (software), velocidad de transferencia (conexión) y costo (de conexión, del móvil, etc.).

Pablasso: A menos que sea punto clave para tu negocio, yo no me preocuparía en ofrecer una versión web para móviles con navegadores inferiores al iPhone.

Tengo que aceptar estoy de acuerdo, si no es clave para tu negocio no debes preocuparte por desarrollarlo, porque para todo hay mercado y es bueno enfocarte en el tuyo. Por ejemplo, si el 90% de las visitas desde móviles provienen de iPhone ¿qué sentido tendría invertir tiempo y dinero en desarrollar una web WAP?

Sin embargo, no hay que olvidar que el enfoque de la web es lograr el mayor alcance posible, independientemente del medio, el dispositivo e incluso de limitaciones físicas. De allí la importancia de apegarse a estándares y no desarrollar solo para uno.

Más información sobre la web móvil

Viernes de recomendaciones

Una vez más llegan las recomendaciones de la semana, buen  momento para explotar el viernes ;)

  • In South Korea, All of Life Is Mobile (Inglés). Aunque este artículode NY Times lo compartí al inicio de la semana en Twitter, quiero compartirlo de nuevo porque vale la pena leerlo. Es acerca de cómo el móvil se ha convertido en “la navaja suiza de la era digital” en países como Korea del Sur. Increible.
  • iCodeBlog (Inglés). Blog de programación para iPhone, es muy buena fuente de tutoriales y tips para el desarrollo de apps para iPhone. Actualiza regularmente (no satura tu bandeja) y el contenido es especial :)
  • MobileDrupal (Inglés). Otro blog bastante enfocado en desarrollo de sitios web junto con Drupal. Si trabajas con Drupal es muy buena referencia para iniciar con la web móvil.

Mis iconos favoritos en iPhone / iPod Touch

Ayer fue día de actualizar las apps del iPod Touch, y mientras se actualizaban estuve viendo los iconos de las que tengo instaladas.

De 52 aplicaciones instaladas, dejo mis 6 iconos favoritos:

bolsacontactosgoogledocs

speedtesttapdefenseyahoo

  • Son frescos/modernos
  • Son diferentes de la mayoría
  • Son fáciles de encontrar
  • Buen diseño (no necesitas texto para entenderlos).

Crear un icono no es tarea fácil, a menos tamaño mayor dificultad, pero estos han logrado muy bien su propósito.

¿Cuáles son tus favoritos?

Usar twitter en el teléfono

Usar Twitter puede crear adicción, ellos no lo dicen pero suele pasar, y por eso te dejo tres formas de twitter desde tu teléfono no importa en donde estes

TinyTwitter

Para twittear desde teléfonos Sony Ericsson, Nokia, Blackberry o cualquier otro con Java incluido

TinyTwitter en Blackberry

TinyTwitter es una aplicación hecha en Java (J2ME) que significa que funciona en muchos teléfonos,  incluyendo Sony Ericsson, Nokia, además de Blackberry y Windows Mobile.

TinyTwitter es bastante completo, además de tener las opciones básicas para twittear también incluye algunas que todavia lo hacen mejor, como por ejemplo:

  • Actualización automática para recibir nuevos tweets. Si mezclas esto con la opción de minimizar y de alerta (sonido o vibración si esta disponible) seguro no te pierdes ningún tweet.
  • Responder un tweet rápidamente (incluye automáticamente el nombre de la otra persona).
  • Es bastante configurable, desde la interfaz hasta la sincronización. Puedes elegir mostrar la imagen de los twitteros, activar las alertas de sonido, programar las actualizaciones automáticas o cambiar el tamaño de letra.
  • Access links, es una opción que busca enlaces en los últimos tweets y los muestra en una lista, solo para seleccionar y visitar.
  • Incluye mensajes directos, una opción que se agradece teniendo en cuenta que Twitter no ofrece esto en su versión móvil.
  • Además de las opciones anteriores incluye las vistas básicas para ver el timeline (últimos tweets de tus amigos), inbox (mensajes directos), user timeline (para ver a una solo contacto)

I love TinyTwitterLos contras de TinyTwitter son pocos comparados con las características, pero igual no esta demás mencionarlos:

  • Es feo, nada para presumir.
  • A veces es lento, tarda en reaccionar al cambiar de pantalla aunque si avisa que esta “haciendo algo” que no es mucho pero ayuda. Generalmente esto ocurre cuando lleva mucho tiempo ejecutandose, 30 mins o más.

Alternativas a TinyTwitter solo conozco JibJib, otro cliente de twitter en Java, aunque por supuesto no tan completo como TinyTwitter. He probado los dos y me quedo con TinyTwitter.

Descarga TinyTwitter desde la web oficial o ingresa desde tu teléfono a http://m.ttwt.at.

TwitterFon

Para twittear desde iPhone o iPod Touch.

Búsqueda de TwitterFonTwitterFon es bastante famoso entre los twitteros con iPhone, y la razón es que es muy bueno, incluso me atrevo a decir que es de los mejores, además de ser gratis.

De TwitterFon obtienes todas las opciones de Twitter: timeline(amigos), mentions (respuestas), mensajes directos, favoritos y búsqueda; pero además tiene otras opciones bastante útiles como

  • Cache, de tweets y de imágenes, que lo hace increíblemente rápido comparado con otros clientes similares.
  • Tendencias, búsqueda de tendencias y búsquedas almacenadas para guardar tus búsquedas favoritas.
  • Opciones de usuario: ver perfil, ver últimos tweets, opción de seguir (follow),  dejar de seguir (unfollow) o bloqueo de un usuario.
  • Respuesta rápida con un tap sobre la imagen de otro usuario.
  • Tweet en TwitterFonBuen sistema de respuestas con memoria, que recuerda lo que estabas escribiendo aunque cierres la app., opción de adjuntar imagen (con Twitpic), localización, borrado rápido y puedes elegir a tus amigos desde un menú para no escribir su nombre.
  • Actualización automática y Auto-scroll para ir a los tweets más recientes.
  • Navegador integrado, basado en Safari.

TwitterFon no tiene contras, cumple con todo lo necesario para twittear, sin embargo, si hay otras aplicaciones con más opciones, por ejemplo Tweetie.

Tweetie

Para twittear desde iPhone o iPod Touch.

Voy a escribir poco de Tweetie porque básicamente hace lo mismo que TwitterFon con la diferencia de que incluye algunas caracteristicas dignas de mención como:

  • Soporte de cuentas multiples. La razón por la que todavia lo uso en lugar de TwitterFon.
  • Mejor interfaz que TwiterFon. Más agradable y simple de usar.
  • Temas visuales (3).
  • Integración con Instapaper, un servicio web para guardar páginas para leerlas más tarde.
  • Buena integración con Twitpic, incluyendo vista en pantalla completa y configuración de la calidad de las fotos.

Tweetie tiene en contra el precio (no es gratis), no tiene cache por lo que es más lento y tampoco sincronización automática.

Twitter + Opera Mini

Para twittear desde Opera Mini en teléfonos donde este disponible.

Twitter en Opera MiniLa última opción de la lista es la versión móvil de Twitter junto a Opera Mini. Las ventajas de hacerlo desde Opera Mini frente a otros navegadores es que Opera Mini puede recordar nuestra sesión durante más tiempo, es más simple de usar y lo podemos configurar en la pantalla de favoritos (speed dial).

Las contras son las mismas que la versión móvil de Twitter, no hay mensajes directos, no resaltan las respuestas y carece de una forma de responder rápido un tweet. Por supuesto, esta es la última alternativa.


Este tema es una respuesta a la pregunta de Pablo en la nueva página de webdebolsillo en Facebook:

¿Que aplicación para twitter me recomiendan, tengo un sony ericsson w980, seria una aplicación java?

Detectar iPhone y aplicar estilos usando HTML o Javascript

Hace dos días les mostraba cómo crear un campo de texto con botón de borrar incluido, en ese ejemplo tuve que distinguir entre Safari de Safari Mobile (iPhone/iPod Touch) porque aunque ambos usan webkit aún muestran pequeñas diferencias en la forma de mostrar el HTML y CSS.

Detectar iPhone y aplicar estilos usando HTML

La forma de detectar el iPhone usando HTML y aplicar los estilos adecuados la descubrí en “CSS, JavaScript and XHTML Explained” .

Con un hack en la etiqueta <Link>

El hack consiste en agregar un estilo a través de la etiqueta link con un media type especial

<!--[if !IE]>–>
<link media="only screen and (max-device-width: 480px)" type="text/css" rel="stylesheet" href="iphone.css" />
<!–<![endif]–>

Only screen es detectado por la mayoría de navegadores mientras que (max-device-width: 480px) solo por el iPhone y iPod Touch. De esta forma la hoja de estilo solo es cargada por el iPhone/iPod Touch. Se añaden los comentarios condicionales para Internet Explorer, porque según comentan en el blog original, algunas versiones de Internet explorer cargan la el estilo para iphone.

Con un hack en la etiqueta <style>

De la misma forma anterior se puede aplicar el estilo necesario en la etiqueta Style directamente, de esta forma

<style media="only screen and (max-device-width: 480px)" type="text/css">
  .texto{color:blue;}
</style>

Detectar iPhone y aplicar estilos usando Javascript

La forma de detectar el iPhone con Javascript la utilice en el ejemplo anterior del campo de texto, y aunque es funcional es un poco más complicada que la anterior y requiere de Javascript.

if(navigator.platform=="iPhone"||navigator.platform=="iPod"){
 document.write('<style> texto{color:blue;};</style>’);
}

En este caso use la variable platform del objeto navigator de Javascript, que en el caso del iPhone devuelve “iPhone” y en del iPod Touch “ipod”.

Demo

Los dejo con algunas capturas del resultado del segundo método en diferentes navegadores, para el ejemplo: Safari Mobile, Firefox, IE y Safari.

Safari Mobile (iPod Touch)

Hack safari mobile

Firefox

Hack safari mobile en Firefox

Internet Explorer

Hack safari mobile en Internet Explorer

Safari (Windows)

Hack safari mobile en Safari

El ejemplo lo encuentras en http://webdebolsillo.com//sandbox/hacks-safari-mobile/

Cómo crear un campo de texto con botón de borrar integrado

El titulo parece confuso pero el tema es bastante sencillo, es acerca de cómo crear un campo de texto con un botón incluido para borrar el campo, como el que usan las aplicaciones nativas de iPhone o Google, te muestro una imagen para que se entienda mejor:

Google y su campo de texto con botón para limpiar

En este tutorial voy a explicar cómo conseguir el efecto en webkit, específicamente para iPhone/iPod Touch, aunque con algunos cambios se puede llevar a muchos otros navegadores.

Para empezar

Crear el campo es bastante sencillo, básicamente es el HTML de toda la vida, el efecto se logra con CSS y un poco de Javascript. Para hacerlo solo necesitas un editor de texto o HTML y un navegador que utilice webkit, de preferencia Safari.

El resultado final es un “campo de texto” como este

Campo de texto con botón de borrado

Escribo “campo de texto” entre comillas porque en realidad son tres elementos, una etiqueta (label), un campo de texto (input text) y un boton (input button).

Campo de texto sin estilo

Integrar los 3 elementos y conseguir un super campo de texto

HTML

Como ya lo dije mencione antes, el efecto esta en CSS, aunque vamos a empezar con el HTML:

<label for="txtNombre" class="ts-txtReset ts-label">Nombre:</label>
<input id="txtNombre" class="ts-txtReset ts-txt"type="text" />
<input id="btnNombre" class="ts-txtReset ts-btn" type="button" value="txtNombre" />

Si te puedes dar cuenta no hay nada extraordinario, quizás solo el nombre de las clases y el valor del botón que es el mismo que id del campo de texto, de momento no nos sirve y lo veremos más adelante, en el código javascript.

Las clases no tienen nada especial, excepto que todas comienzan con ts-, esto es porque el ejemplo es parte de un framework en el que estoy trabajando, Touchscript, y nada más que eso.

Estilo CSS

Ahora vamos con el estilo del campo de texto. La idea es engañar al ojo haciendolo creer que es un solo campo de texto, cuando en realidad son tres.

Etiqueta (ts-txtReset ts-label)

Cree el estilo la etiqueta con bordes redondeados, excepto del lado derecho que es donde se une con el campo de texto, también especifique el padding y el tamaño de letra, ambos para ajustarlo al campo de texto (con el padding por defecto no encajan y la fuente varia). Además cambie el color de la fuente a gris (#555) para resaltar la diferencia.

.ts-txtReset.ts-label{
 border:solid 1px #aaa;
 border-width:1px 0 1px 1px;
 padding:2px 0px 3px 4px;
 background:#fff;
 color:#555;
 margin:0;
 font-size:1em;
 /* WEBKIT */
 -webkit-appearance: none;
 -webkit-border-top-left-radius:4px;
 -webkit-border-bottom-left-radius:4px;
}

Campo de texto (ts-txtReset ts-txt)

Con el campo de texto es prácticamente lo mismo, añadir bordes excepto de los lados para ajustar a la etiqueta y el botón. Además añadí una regla exclusiva de webkit y que pudieron ver arriba, es -webkit-appearance: none;. Esta sirve para eliminar la sombra que Safari añade al campo de texto, de no quitar la sombra se perdería el efecto porque la etiqueta y el botón no tienen esa sombra y se nota “el salto”. También puedes ver que quite los bordes redondeados con -webkit-border-radius:0;

.ts-txtReset.ts-txt{
 border:solid 1px #aaa;
 border-width:1px 0 1px;
 padding:3px 2px 2px 0;
 font-size:1em;
 background:#fff;
 margin:0;
 /* WEBKIT */
 -webkit-appearance: none;
 -webkit-border-radius:0;
}

Botón (ts-txtReset ts-btn)

Casi para cerrar los estilos añade el del botón, de nuevo la misma que los anteriores pero con dos cambios notables. El primero es la imagen de fondo y el segundo es que no muestra texto (aunque si tiene value).

El fondo lo incluyo con background y con bastante padding lateral(10px) para hacer el botón más grande.

El texto se oculta con text-indent:-500em (lo envía muy lejos ;) ) y por si acaso agrego overflow:hidden (para ocultar lo que este muy lejos).

.ts-txtReset.ts-btn{
 border:solid 1px #aaa;
 border-width:1px 1px 1px 0;
 padding:2px 7px 3px;
 font-size:1em;
 margin:0;
 background:#fff url(icono-reset.png) no-repeat center center;
 text-indent:-500em;
 overflow:hidden;
 /* WEBKIT */
 -webkit-appearance: none;
 -webkit-border-radius:0;
 -webkit-border-top-right-radius:4px;
 -webkit-border-bottom-right-radius:4px;
}

Termino el estilo agregando un estilo “base” al body:

body{font-family:helvetica, arial, sans-serif;}

Hasta aquí conseguiste el efecto visual del cuadro de texto, ahora hay que agregar la funcionalidad con javascript,

Hacer que el botón de borrar borre

La funcionalidad del botón de borrar igual es sencilla y se logra con javascript.

Lo primero es crear la función de borrar, o limpiar como le digo yo.

// TouchScript txtReset Limpia
function tsTxtResetLimpia(ev){
 txtVictima=document.getElementById(ev["target"].value);
 if(txtVictima){
  txtVictima.value="";
  txtVictima.focus();
 }
}

El parámetro ev es un objeto de evento, el “lanzador” del evento lo envía automáticamente, y de él lo único que importa es el campo target, que es lo mismo que el botón que disparo el evento (en nuestro ejemplo btnNombre). Del botón (target) tomamos el campo value que contiene el id del campo de texto que debe borrar (esa era la idea de usar el id del campo de texto en el value del botón). Luego compruebo si ese id existe, si existe borro el contenido y lanzo la función focus para el campo de texto.

La función de limpiar esta lista, ahora hay que asignársela al botón (btnNombre) usando addEventListener y el evento click.

// Inicializa las acciones al cargar la pagina
addEventListener('load',function(){
 // Asigna el evento click al boton btnNombre
 document.getElementById('btnNombre').addEventListener('click',tsTxtResetLimpia,false);
},false);

Safari en PC muestra una diferencia en el padding respecto a la de Safari mobile (iPhone/iPod) y para que se vea bien en ambos agregue un “mini hack”.

//Mini hack para corregir padding superior en Safari para PC
if(navigator.platform!="iPhone"&amp;&amp;navigator.platform!="iPod"){
 document.write('&lt;style&gt;.ts-txtReset.ts-label{padding-top:3px;}&lt;/style&gt;');
}

Listo, con eso tienes un campo de texto con etiqueta y botón de borrar integrados. El código completo del ejemplo lo puedes ver en txtreset.txt, te recomiendo revisarlo para no olvidar cosas como la etiqueta meta viewport.

Ejemplo final

Notas

  • El ejemplo es una muestra de lo simple que es mejorar un control para formulario y mejorar la usabilidad de una página web.
  • Por la misma razón que solo es un ejemplo, aún se puede mejorar en muchos sentidos. Especialmente hacerlo con código no intrusivo, para no interferir si javascript esta desactivado, y poderlo hacer compatible con más navegadores además de Safari, o webkit en general.
  • Más adelante incluiré este campo de texto en Touchscript para que sea más fácil usarlo.

Material

Entretenido con 3 juegos para iPhone

Tres juegos para iPhoneEsta semana que paso estuve bastante entretenido con 3 juegos para el iPod Touch, iTouch de cariño ;) , dos juegos de carros y un juego de Poker en el que soy malo pero me gusta jugarlo :P

VW New Polo y Seat Ibiza Cupra Race son los dos de autos y Live Poker es el de Poker, obviamente.

VW New Polo

Imagen 031

Este juego lo encontré paseando por la App. Store, sino estoy mal estaba dentro del top 25 de las aplicaciones gratuitas. Lo baje para quitarme la curiosidad de cómo es un juego “patrocinado” y porque se veía bien en las capturas.

El juego no decepciona de entrada, gráficas decentes, quizás mejor que las de Asphalt 4, se maneja bien y por supuesto incluye una página de promoción de las características del nuevo Polo. El juego tiene 8 niveles diferentes, al inicio con 7 bloqueados, en donde tenemos que romper el record de la pista para poder pasar el siguiente nivel. Cuando empiezas a jugarlo es algo dificil y llega un punto que sientes el auto increíblemente lento (llega a 110mph “solamente”), es bastante desesperante, al punto que pensé que solo iba a jugar un par de pantallas y dejarlo.

A la fecha he desbloqueado 6 de las 8 pistas, más por el reto de romper todos los records que porque el juego sea bueno. Es jodidamente difícil llegar a tiempo, especialmente en las pistas largas en donde un choque puede arruinar todo.

Imagen 045Imagen 041 Imagen 051

En resumen, esta bonito para ser gratis pero tampoco esperen mucho. Es mucho mejor Seat Ibiza Cupra Race.

Ver en VW en App Store

Seat Ibiza Cupra Race

IMG_0001 Ya lo dije, es mejor Cupra race que VW New Polo, aunque ambos estan por la misma línea: Juegos de carreras para promocionar un auto, las dos son aplicaciones patrocinadas (los famosos advergames).

Aunque son similares, Cupra race es mejor que VW New Polo por varias razones, la primera es que el auto me gusta mas jeje, otra es porque tiene más modos de juego: carrera, contra el tiempo (time attack) y la prueba de manejo (test drive). Además el juego es mucho más rápido, el auto se siente más rápido, y es más emocionante ir en carrera que solo intentando romper el tiempo.

Aparte de la mala calidad de los gráficos, no hay nada malo en esta aplicación, quizas agregaría el vídeo de introducción que se carga cada vez que entras al juego. Es bastante molesto. ¬_¬

IMG_0002 IMG_0003

Advertencia: Ninguno de los dos juegos supera a Asphalt 4 en calidad de juego, aunque ninguno de los dos cuesta más que Asphalt 4 :)

Ver Seat Ibiza Cupra Race en App Store

Live Poker

IMG_0005 Para el final dejo Live Poker que me impresiono como juego, es bastante completo para ser gratis. llegue a él por un aviso en Facebook que me llevo a la App Store. No me había pasado eso antes así que decidí probarlo y me dio una buena sorpresa, el juego se conecta a Facebook, a través de Facebook Connect, y permite jugar con otros amigos e interactuar en Facebook.

El juego es un juego “básico” de Poker, en donde entras al salón de juego, sacas cartas, apuestas, te diviertes y de vuelta a comenzar. Como características extras esta la opción de chat, de dar regalos a tus compañeros de mesa, a llevar un registro de tus juegos y por supuesto conectarse a Facebook para darle un “toque social” al juego. Demás esta decir que los gráficos son excelentes, solo vean las capturas.

IMG_0006

Imagen 028

Ver Live Poker en App Store