Desarrollo y depuración de funciones personalizadas en aplicaciones móviles

Recientemente, me encontré con esta nota en la revisión de código de un colega realizada por un desarrollador senior: "Se ha revisado ligeramente la función del usuario para que funcione correctamente cuando se utilizan idiomas distintos del inglés". Este comentario me sorprendió: el código es el código, y no debería importar qué idioma hable el desarrollador o el usuario final. Una función de usuario es simplemente una expresión que puede aceptar parámetros de entrada y devuelve un resultado.

Altova MobileTogether ofrece funciones de usuario en un marco de desarrollo móvil multiplataforma que combina el diseño de interfaces de usuario mediante arrastrar y soltar con la programación funcional estandarizada para la selección y el procesamiento de datos. Varias aplicaciones de demostración de MobileTogether dependen en gran medida de las funciones de usuario, y el entorno de diseño de MobileTogether incluye funciones que facilitan enormemente la creación y la validación de estas funciones.

Analicemos las funciones que utilizan los usuarios en las aplicaciones móviles, examinando una de estas aplicaciones de demostración.

En una publicación anterior, mencionamos la aplicación Parcel Delivery como un ejemplo de técnicas de programación avanzadas para el desarrollo móvil. Parcel Delivery es una implementación elegante realizada por un desarrollador experimentado y que depende en gran medida de las funciones del usuario.

El ejemplo de "Entrega de Paquetes" es una simulación completa de una aplicación real de entrega de paquetes. El usuario final asume el papel de un conductor de una empresa de transporte, cuya tarea es entregar paquetes desde un almacén en Nueva Jersey hasta destinos en la ciudad de Nueva York, guiado por el GPS. Puede ejecutar la aplicación en la ventana del simulador de MobileTogether Designer para observar movimientos realistas hacia cada destino. Si ejecuta "Entrega de Paquetes" en su propio teléfono desde el servidor de demostración de MobileTogether, su teléfono utilizará su funcionalidad GPS integrada.

Aquí se muestran dos pantallas de asignación de conductores, una vista en un iPhone con el tema oscuro y otra en un teléfono Android con el tema claro:

Las funciones definidas por el usuario, que se ejecutan durante la ejecución, generan la lista de tareas de entrega y los marcadores en el mapa. Podemos ver las definiciones de estas funciones en la ventana del Constructor de Expresiones XPath del programa MobileTogether Designer:

La opción "Constructor" seleccionada anteriormente proporciona herramientas de ayuda, descripciones emergentes de elementos XPath/XQuery específicos del contexto, y autocompletado a medida que se crean las expresiones. La opción "Evaluador" le permite previsualizar los resultados de las expresiones, para que pueda validar o modificar una expresión si es necesario.

Mientras la aplicación se ejecuta en el simulador MobileTogether, el evaluador XPath tiene acceso a todos los valores en tiempo de ejecución de los datos de la página. Podemos abrir el evaluador XPath en el simulador para evaluar funciones de usuario en aplicaciones móviles:

La función RemainingDestinations() devuelve una lista con los atributos de cada destino, que se utiliza para rellenar la lista de texto que se encuentra en la sección inferior de la página "Todo".

La función de usuario DestinationMarkerList() llama a la función RemainingDestinations() y crea una lista de marcadores en el mapa para indicar la ubicación de cada destino

El texto y el título de cada destino se muestran cuando el usuario hace clic en un marcador en el mapa

La función DestinationMarkerList() es una propiedad del control de mapa:

El menú principal del proyecto incluye una opción para generar una lista de todas las instancias en las que se utilizan las funciones definidas por el usuario en la aplicación

Para obtener una visión detallada del proceso de evaluación de una función de usuario, puede activar el modo de depuración durante la simulación y observar la evaluación de la función paso a paso:

A medida que se utiliza la aplicación, el usuario simula cada entrega y registra el destinatario y el estado de cada paquete (si está dañado o no). Una página de resumen de las entregas muestra los resultados:

En este mapa, los marcadores están codificados por colores, y el texto que aparece al hacer clic en cada uno describe el estado de la entrega. Para la entrega destacada anteriormente, Joan Jones fue la receptora sustituta, por lo que el marcador es naranja en lugar de verde. La función del usuario ReportMarkerList() extrajo el resumen de la entrega del árbol de datos y cambió el color del marcador porque la persona que realmente recibió el paquete no era el destinatario original.

La única forma en que sabemos que la entrega no fue completamente exitosa es a través del texto de la acción. ¡Y ahí se resuelve el misterio del comentario en la revisión del código! El texto está en inglés, por lo que el revisor del código modificó una función del usuario para que funcionara en cualquier idioma.

MobileTogether ofrece funcionalidades de localización que permiten analizar fácilmente el texto de los mensajes en diversos idiomas durante la ejecución.

La aplicación de entrega de paquetes está adaptada para las versiones en inglés, alemán, español, japonés o francés del sistema operativo. La sección superior del cuadro de diálogo de localización, que se muestra a continuación, muestra una tabla con las traducciones de elementos fijos como títulos de páginas, etiquetas, botones, etc.

La sección inferior define una tabla de traducción para cadenas de texto, configurada en tiempo de ejecución en función de las condiciones que se producen durante la ejecución. MobileTogether incluye una función integrada llamada mt-load-string('nombre') que permite referenciar cadenas de texto mediante sus nombres asignados, independientemente del idioma del dispositivo.

La imagen que se muestra a continuación ilustra la definición de la función ReportMarkerList(), que establece los colores de los marcadores y el texto emergente para los marcadores en el mapa del informe de entrega. Si el texto asociado a una entrega coincide con la cadena llamada "delivered_C", entonces el marcador será de color verde. El texto "delivered_C" en inglés es "Personally accepted delivery" (Entrega aceptada personalmente). En español, el texto sería "Entrega aceptada en persona"

Si el desarrollador simplemente hubiera comparado el resumen de la entrega con la cadena de texto "Personally accepted delivery" en inglés, los marcadores del mapa no se habrían coloreado correctamente en ningún otro idioma.

Podemos validar el funcionamiento de la función de usuario ReportMarkerText() en varios idiomas utilizando el simulador MobileTogether. El menú principal del proyecto incluye una opción para ejecutar la aplicación en otros idiomas:

Podemos ejecutar la aplicación en español y realizar una serie de simulaciones de entregas para generar un informe de entregas en español. El color de cada marcador se establece correctamente en función del texto descriptivo de cada elemento en el resumen de entregas.

Utilice todas sus habilidades y herramientas, incluyendo técnicas de programación avanzadas como las funciones personalizadas en aplicaciones móviles, para crear sus propias aplicaciones en tiempo récord. Descubra MobileTogether demostraciones en video, más aplicaciones de ejemplo, o incluso el/la manual en línea para obtener información detallada sobre todos los aspectos. Cuando estén listos para empezar a desarrollar sus propias aplicaciones móviles multiplataforma, Descargue el programa MobileTogether Designer.