Serviços REST como fontes de dados para aplicações móveis

A plataforma MobileTogether permite aos desenvolvedores preencher aplicações móveis com informações obtidas a partir de fontes externas, através de.. Serviços web REST e SOAP, e processa os dados recebidos, sejam eles em formato XML, JSON ou HTML. O suporte do MobileTogether para REST e SOAP oferece aos desenvolvedores de aplicações móveis acesso a vastos recursos de dados online, para uma ampla gama de aplicações.

A opção "Adicionar Fonte" no MobileTogether Designer permite o acesso a diálogos específicos para fornecer os detalhes necessários para requisições REST, SOAP e HTTP. Neste artigo, descrevemos como implementar uma requisição REST para obter dados de altitude a partir de coordenadas fornecidas em latitude e longitude.

O desafio:

Os dados de GPS podem ser tanto úteis como frustrantes. Se uma aplicação móvel utiliza o GPS de forma contínua, o utilizador pode ser inundado de dados a cada poucos segundos, e a bateria do dispositivo esgota rapidamente. Além disso, os sistemas GPS são extremamente precisos para registar coordenadas x/y, mas são imprecisos quando se trata de indicar a altitude. Se quisermos registar as variações de altitude desde a base até o topo de uma colina, por exemplo, precisamos de uma solução melhor.

Com o programa MobileTogether Designer, podemos criar uma aplicação móvel compatível com diferentes plataformas, que permite aos utilizadores recolher dados para locais específicos, conforme necessário. Podemos extrair as coordenadas de cada ponto e obter dados de altitude precisos através do serviço web USGS Point Query, descrito no sítio web da USGS.

Primeiramente, podemos experimentar o serviço web num navegador, através do seguinte endereço: http://ned.usgs.gov/epqs

Simplesmente fornecemos um conjunto de coordenadas, selecionamos as unidades e os tipos de dados de saída, e clicamos em "Obter Altitude". O serviço de consulta de altitude devolve o resultado abaixo:

Duas características interessantes deste resultado são a URL gerada na janela de resultados, que podemos usar como modelo para especificar a fonte de dados do serviço REST no MobileTogether, e o conteúdo do resultado, que mostra a estrutura XML. Aqui está a URL completa:

Para adicionar o serviço REST como fonte de dados para uma aplicação móvel, podemos colar a URL na caixa de diálogo "Pedido de API RESTful do MobileTogether" e substituir os parâmetros pelas coordenadas x e y. Também utilizaremos um parâmetro para especificar as unidades, permitindo que o utilizador escolha entre pés ou metros.

Na nossa aplicação, as coordenadas são lidas por um Grupo de Ações, e as variáveis definidas como dados persistentes são atualizadas com os valores de longitude e latitude.

Estes valores são, então, fornecidos como parâmetros para a requisição GET, conforme definido pelas expressões XPath na coluna "Valor" da tabela "Parâmetros". O sistema de ajuda integrado do MobileTogether Designer inclui uma documentação detalhada das opções e configurações dos serviços REST, incluindo o suporte para campos de cabeçalho HTTP e conteúdo multipart HTTP, que são necessários por alguns serviços.

Quando fechamos a caixa de diálogo, uma nova fonte de dados, correspondente à requisição REST, é automaticamente adicionada à janela de fontes da página. Clicar com o botão direito na nova fonte de dados abre um menu de contexto, onde uma das opções é "Importar estrutura a partir de XML". Isto abre uma caixa de diálogo onde pode especificar um ficheiro ou pode colar a URL de exemplo original, com os valores dos parâmetros incorporados, para obter a estrutura diretamente do serviço REST. De qualquer forma, a estrutura das Fontes da Página é atualizada com nós que correspondem ao resultado da consulta:

Se preferir trabalhar com dados JSON em vez de XML, basta selecionar "JSON" na janela de pedido da API REST e ajustar a URL para selecionar os dados JSON do serviço web. O menu de contexto oferecerá a opção "Importar estrutura a partir de JSON" e o restante do funcionamento do MobileTogether Designer é o mesmo.

A imagem abaixo mostra a tela principal da aplicação finalizada. No ecrã à esquerda, a aplicação acabou de ser iniciada e está à espera que o utilizador ative o rastreamento GPS, clicando num dos botões de opção. No lado direito, o GPS está ativado e o botão "Atualizar Localização" é exibido. O utilizador clica neste botão para capturar um par de coordenadas, e a aplicação executa a requisição REST para obter a altitude correspondente.

A aplicação desliga então o rastreamento por GPS para reduzir o consumo de energia e atualiza o ecrã com a nova localização:

Os botões "Mostrar Endereço" e "Mostrar Mapa" expandem a visualização, fornecendo mais informações sobre as coordenadas mais recentes. Uma página de "Configurações" permite ao utilizador selecionar preferências e guardar conjuntos de coordenadas em ficheiros GPX. A aplicação também inclui uma página de "Detalhes" que exibe os dados GPS brutos do ponto mais recente registado.

Se desejar experimentar a aplicação por si próprio, descarregue o MobileTogether Designer – o uso é gratuito – e obtenha uma cópia da aplicação de geolocalização e dos ficheiros associados no GitHub em https://github.com/altova/MobileTogether-geolocation-example. Pode executá-la no simulador integrado no MobileTogether Designer e visualizar a aplicação como ela aparece em dispositivos Android, iOS, Windows Phone e outros. Incluímos até um ficheiro de dados com coordenadas para simular um dispositivo móvel em movimento enquanto a aplicação é executada no Designer.