Observatorio de Grails 
  • Inicio
  • Actualidad
  • Artículos
  • Tutoriales
  • Eventos
  • Foro
  • Acerca de
SQ28 – Intermedio – Deriva tus propiedades SQ30 – Básico – Forzar la ordenación de las asociaciones
ene 17

SQ29 – Avanzado – ¿Eres un móvil o un PC?

publicado por Enrique Medina Montenegro

0 comentarios
1.084 visitas
(3 votos, media: 5,00)

Enrique Medina Montenegro

Twitter  |  LinkedIn

Con más de 14 años de experiencia en el mundo de las TI, donde comenzó desarrollando aplicaciones de escritorio en Delphi o Visual Basic, este Ingeniero en Informática por la Universidad de Alicante (1991-1996) ha ido perfilando su actividad profesional hacia las arquitecturas J2EE, donde siempre ha seguido muy atento, e incluso colaborado en ocasiones, con proyectos open-source como MyFaces, Spring, Hibernate, Groovy o Grails. Ocupando puestos desde Programador Junior hasta Arquitecto Senior de Soluciones, Enrique ha sido testigo de cómo ha ido evolucionando la tecnología en torno al desarrollo de aplicaciones web, adquiriendo un conocimiento y experiencia que le permiten evaluar con detalle las necesidades de cada proyecto y aplicar las herramientas que maximizan su productividad. Actualmente, Enrique se ha especializado en el framework de desarrollo Grails, y ejerce la Dirección Técnica de proyectos basados, entre otras, en esta tecnología.

¿Sabías que… puedes utilizar los filtros web para detectar el tipo de cliente que está intentando cargar tu aplicación?

En los tiempos que corren, muchos desarrolladores implementan sus aplicaciones web de forma que, dependiendo del tipo de cliente que haga la petición, se redirecciona a una zona de la web u a otra. Por ejemplo, imaginemos la típica web que quiere dar soporte a los teléfonos con Android, como el Samsung Galaxy S; entonces recibiría una cabecera de ‘user-agent’ como la siguiente:

Mozilla/5.0 (Linux; U; Android 1.5; es-es; Galaxy Build/CUPCAKE) AppleWebkit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1

Aparte de versiones y nomenclatura que nos pueda sonar, podemos identificar claramente el texto “Android 1.5″, ¿correcto? Pues, entonces, ¿por qué no usar un filtro web en Grails para obtener el ‘user-agent’ de cada petición, analizar si contiene la cadena de texto “Android”, y entonces redirigir la petición a la parte ‘móvil’ de nuestra aplicación? Veamos un ejemplo:

detectarAndroid (controller:'*', action:'*') {
    // Buscamos la cadena 'Android' antes de procesar la petición.
    before = {
        request['peticionAndroid'] = false
        if (request.getHeader('user-agent') =~ /(?i)android/) {
            request['peticionAndroid'] = true
        }

        // Permitimos que se sigan ejecutando el resto de filtros web.
        return true
    }

    // El resto de eventos no nos interesan...
    after = { }
    afterView = { }
}

Una vez hemos detectado que se trata de un dispositivo móvil con Android, ya sólo nos queda redirigir la petición en nuestros controladores a, por ejemplo, unas vistas que se llamen igual que las ‘normales’, pero con el sufijo ‘_android’:

def afterInterceptor = { model, modelAndView ->
    if (request['peticionAndroid']) {
        modelAndView.viewName = modelAndView.viewName + "_android"
    }
}

Para nuestro controlador, si nos llega que la petición es de tipo ‘Android’, entonces en vez de renderizar la vista, por ejemplo, “list.gsp”, le decimos que su versión móvil es “list_android.gsp”. Fácil, ¿eh?

NOTA: El lector avispado habrá notado que el interceptor que redirige a la vista en su versión ‘móvil’ debe definirse en todos y cada uno de los controladores de nuestra aplicación, lo cual puede suponer un auténtico quebradero de cabeza. Pero bueno, aquí sólo se presenta un boceto de solución y, además, ¿para que están, si no, las transformaciones AST de Groovy?

NOTA: Aquí os dejo un listado de ‘user agents’ para dispositivos móviles: List of user agents for mobile phones.

Recuerda: Puedes aprovecharte de los filtros web para ‘cazar’ el tipo de cliente que hace la petición y redireccionarlo en base a sus características.

Del.icio.us Facebook LinkedIn Twitter

Escribir un comentario

Clic para cancelar respuesta.

Actualidad  Entradas relacionadas  si te ha interesado la entrada te proponemos otras lecturas relacionadas

  • abr13

    Interacción entre una aplicación Android y una aplicación Grails (francés)

    publicado por Enrique Medina Montenegro en Grails

    0 comentarios
    652 visitas
    (2 votos, media: 3,50)

Comentarios recientes  Comentarios recientes

  • pedro luis hola como cargo imágenes de un archivo para mostrarlo en un reporte con los demás datos; en Reportes en Grails con iReport
    17/05/2012 a las 21:03

  • yo 123; en Clusterizar una aplicación Grails con EhCache (inglés)
    24/04/2012 a las 17:33

  • yo muy buebo; en Clusterizar una aplicación Grails con EhCache (inglés)
    24/04/2012 a las 17:21

Twitter  

preload preload preload

Síguenos en Twitter  |  Facebook
Inicio  |  Actualidad  |  Artículos  |  Tutoriales  |  Eventos  |  Foro  |  Acerca de

© 2010 Observatorio de Grails. Todos los derechos reservados.