---
title: "Desenvolvimento e depuração de funções personalizadas em aplicações móveis"
date: "2021-03-17"
categories: 
  - "apps"
  - "mobile-development"
  - "tools"
tags: 
  - "app-design"
  - "app-development"
  - "debugging"
  - "mobile-development-tools"
description: Explore o papel das funções do utilizador no desenvolvimento de aplicações móveis, com foco na localização e na depuração dentro do framework da Altova MobileTogether, para uma programação eficaz.
---
Status: #blog

Tags:  #app-design #app-development #debugging #mobile-development-tools

Categories: [low-code+no-code](/blog/pt/category/low-codeno-code.md) | [mobile-development](/blog/pt/category/mobile-development.md) 
# 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](https://www.altova.com/pt/mobiletogether) 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.

![](/blog/images/mt_darktheme_blog_3.jpg)

<!--more-->

Num artigo anterior, mencionámos a aplicação "Parcel Delivery" como um exemplo de [técnicas avançadas de programação](https://www.altova.com/blog/programming-techniques-for-mobile-development/) 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:

[![](/blog/images/mobile-screens-1.png)](mobile-screens-1.png)

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:

[![Definições de funções de utilizador em aplicações móveis](/blog/images/function-definitions.png)](function-definitions.png)

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:

[![Executar uma função de utilizador no simulador MobileTogether](/blog/images/simulator-1-1.png)](simulator-1-1.png)

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:

[![Executar a função DestinationMarkerList](/blog/images/simulator-2a.png)](simulator-2a.png)

O texto e o título de cada destino são exibidos quando o utilizador clica no marcador no mapa

[![Marcadores de mapa e texto das etiquetas criados pela função definida pelo utilizador](/blog/images/map1-1.png)](map1-1.png)

A função `DestinationMarkerList()` é uma propriedade do controlo de mapa:

[![Atribuir uma função de utilizador como uma propriedade do mapa](/blog/images/properties-1-2.png)](properties-1-2.png)

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

[![Listagem de utilizações de funções definidas pelo utilizador em aplicações móveis](/blog/images/listing-1.png)](listing-1.png)

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:

[![Executar a função do utilizador passo a passo no depurador MobileTogether](/blog/images/debug-1-1.png)](debug-1-1.png)

À 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:

[![Função do utilizador para marcadores no mapa, no relatório de entregas](/blog/images/simuator-rpt.png)](simuator-rpt.png)

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.

[![O diálogo de localização atribui nomes a cadeias de texto determinadas em tempo de execução](/blog/images/localization.png)](localization.png)

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"

[![Correção da sintaxe das funções definidas pelo utilizador em aplicações móveis, para garantir o seu funcionamento em todas as línguas](/blog/images/simulator-rpt2.png)](simulator-rpt2.png)

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:

[![Selecionar uma linguagem de simulação para validar os resultados da localização](/blog/images/language-menu-es.png)](language-menu-es.png)

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.

[![Executar o simulador para visualizar os resultados da função do utilizador resulta em resultados em espanhol](/blog/images/spanish-color-map-1.png)](spanish-color-map-1.png)

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](https://www.altova.com/pt/mobiletogether/demos#video_Demos), mais [aplicativos de exemplo](https://www.altova.com/pt/mobiletogether/demos), ou até mesmo o/a [manual online](https://www.altova.com/manual/MobileTogether/mobiletogetherdesigner/) 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](https://www.altova.com/pt/mobiletogether/download).
