Desenvolvimento e depuração de funções personalizadas em aplicações móveis

Recentemente, deparei-me com esta observação numa análise de código realizada por um desenvolvedor sénior, relativa ao trabalho de um colega: "Revisei ligeiramente a função do utilizador para que funcione corretamente quando são utilizadas línguas diferentes do inglês." Este foi um comentário surpreendente – o código é o código e não deveria fazer diferença qual a língua que o desenvolvedor ou o utilizador final falam! Uma função de utilizador é simplesmente uma expressão que pode receber parâmetros de entrada e retornar um resultado.

O Altova MobileTogether suporta funções personalizadas num ambiente de desenvolvimento móvel multiplataforma que combina o design de interface gráfica por arrastar e soltar com a programação funcional padronizada para seleção e processamento de dados. Várias aplicações de demonstração do MobileTogether dependem fortemente de funções personalizadas, e o Altova MobileTogether Designer inclui funcionalidades que facilitam a criação e validação dessas funções.

Vamos analisar as funcionalidades dos utilizadores em aplicações móveis, examinando uma destas aplicações de demonstração.

Num artigo anterior, mencionámos a aplicação "Parcel Delivery" como um exemplo de técnicas avançadas de programação para o desenvolvimento de aplicações móveis. "Parcel Delivery" é uma implementação elegante, criada por um desenvolvedor experiente, que depende fortemente de funções definidas pelo utilizador.

O exemplo "Entrega de Encomendas" é uma simulação completa de uma aplicação real de entrega de pacotes. O utilizador final assume o papel de um motorista de uma empresa de entregas, cuja tarefa é transportar encomendas de um armazém no estado de Nova Jérsei para diversos destinos na cidade de Nova Iorque, utilizando o GPS como guia. Pode executar a aplicação na janela do simulador do MobileTogether Designer para observar movimentos realistas em direção a cada destino. Se executar o "Entrega de Encomendas" no seu próprio telemóvel a partir do servidor de demonstração do MobileTogether, o seu telemóvel utilizará a sua funcionalidade GPS integrada.

Aqui estão duas páginas de atribuição de motoristas, como aparecem num iPhone com o tema escuro e num telemóvel Android com o tema claro:

As funções definidas pelo utilizador, que são executadas em tempo de execução, geram a lista de tarefas de entrega e os marcadores no mapa. Podemos visualizar as definições destas funções na janela do "Construtor de Expressões XPath" do MobileTogether Designer:

A opção "Construtor" selecionada anteriormente fornece ferramentas de auxílio, descrições em janelas pop-up de elementos XPath/XQuery específicos do contexto, e autocompletar à medida que as expressões são criadas. A opção "Avaliador" permite visualizar os resultados das expressões, para que possa validar ou corrigir uma expressão, se necessário.

À medida que a aplicação é executada no simulador MobileTogether, o avaliador XPath tem acesso a todos os valores em tempo real dos dados da página. Podemos abrir o avaliador XPath no simulador para avaliar funções de utilizador em aplicações móveis:

A função RemainingDestinations() retorna uma lista com os atributos de cada destino, que preenche a lista de texto na secção inferior da página "Todo".

A função de utilizador DestinationMarkerList() chama a função RemainingDestinations() e constrói uma lista de marcadores de mapa para localizar cada destino no mapa:

O texto e o título de cada destino são exibidos quando o utilizador clica no marcador no mapa

A função DestinationMarkerList() é uma propriedade do controlo de mapa:

O menu principal do projeto inclui uma opção para gerar uma lista de todas as utilizações das funções definidas pelo utilizador na aplicação

Para uma análise detalhada da avaliação de uma função do utilizador, pode ativar o modo de depuração durante a simulação e observar a avaliação da função passo a passo:

À medida que a aplicação é utilizada, o utilizador simula cada entrega e regista o destinatário e o estado de cada embalagem. Uma página de resumo das entregas mostra os resultados:

Neste mapa, os marcadores são codificados por cores e o texto que aparece ao clicar em cada um descreve o estado da entrega. No caso da entrega destacada acima, Joan Jones foi a destinatária substituta, por isso o marcador é laranja em vez de verde. A função do utilizador ReportMarkerList() extraiu o resumo da entrega a partir da base de dados e atribuiu a cor ao marcador, pois a destinatária real não era a pessoa a quem a encomenda se destinava.

A única forma de saber que a entrega não foi totalmente bem-sucedida é através do texto associado. E é aí que o mistério do comentário na revisão do código é resolvido! O texto está em inglês, o que significa que o revisor do código modificou uma função do utilizador para que funcionasse em qualquer idioma.

A MobileTogether oferece funcionalidades de localização que permitem processar facilmente o texto das mensagens em vários idiomas durante a execução.

A aplicação de entrega de encomendas está disponível em versões localizadas para inglês, alemão, espanhol, japonês ou francês, dependendo da língua do sistema operativo. A secção superior da caixa de diálogo de localização, mostrada abaixo, apresenta uma tabela com as traduções para elementos fixos, como títulos de páginas, etiquetas, botões, etc.

A secção inferior define uma tabela de tradução para cadeias de texto, configurada em tempo de execução com base em condições que ocorrem durante a execução. O MobileTogether inclui uma função integrada, mt-load-string('nome'), que referencia as cadeias de texto pelos seus nomes atribuídos, independentemente do idioma do dispositivo.

A imagem abaixo mostra a definição da função ReportMarkerList(), que define as cores dos marcadores e o texto que aparece ao passar o cursor sobre os marcadores no mapa do relatório de entregas. Se o texto associado a uma entrega corresponder à cadeia de caracteres denominada "delivered_C", o marcador será verde. O texto "delivered_C" em inglês é "Personally accepted delivery" (Entrega aceite pessoalmente). Em espanhol, o texto seria "Entrega aceptada en persona"

Se o programador tivesse simplesmente comparado o resumo da entrega com a frase "Entrega aceite pessoalmente" em inglês, os marcadores no mapa não seriam coloridos corretamente em nenhuma outra língua.

Podemos validar o comportamento da função de utilizador ReportMarkerText() em várias línguas no simulador MobileTogether. O menu principal do projeto inclui uma opção para executar a aplicação em outras línguas:

Podemos executar a aplicação em espanhol e percorrer uma série de entregas para gerar um relatório de entregas em espanhol. A cor de cada marcador é definida corretamente, com base no texto da ação para cada entrada no resumo das entregas.

Utilize todas as suas competências e ferramentas, incluindo técnicas avançadas de programação, como funções personalizadas em aplicações móveis, para criar as suas próprias aplicações num tempo recorde! Descubra o nosso MobileTogether demonstrações em vídeo, mais aplicativos de exemplo, ou até mesmo o/a manual online Para uma análise aprofundada de todas as informações, quando estiver pronto para começar a desenvolver as suas próprias aplicações móveis multiplataforma Descarregue o programa MobileTogether Designer.