Integração de APIs e aplicações móveis
Utilizadores de dispositivos móveis que estão constantemente em movimento preferem aplicações que sejam práticas e eficientes. A MobileTogether oferece aos desenvolvedores ferramentas para integrar de forma fluida APIs e aplicações móveis, combinando a funcionalidade dos dispositivos móveis com informações atualizadas de fontes externas. Isto permite aos desenvolvedores criar aplicações nativas personalizadas, que funcionam em diferentes plataformas, e que proporcionam uma experiência rica e envolvente para o utilizador final.
As APIs públicas são uma excelente fonte de dados externos que podem melhorar praticamente qualquer aplicação móvel personalizada. Os desenvolvedores podem combinar informações de várias APIs para fornecer aos utilizadores informações mais completas, de forma mais rápida e num formato elegante e integrado.
Existem APIs disponíveis para quase todos os tipos de informação que a sua aplicação móvel possa precisar, desde o rastreamento de voos até aos preços de matérias-primas ou ações, passando pelo acompanhamento de tempestades tropicais.
Neste artigo, vamos analisar uma aplicação GPS que começa com a funcionalidade de geolocalização do dispositivo móvel para responder à pergunta básica: "Onde estou?". Em seguida, esta aplicação interage com as APIs do Google e da MapQuest para adicionar uma grande quantidade de informações adicionais. Vamos integrar um motor de pesquisa que utiliza informações geográficas para localizar pontos de interesse próximos, num raio de até 400 metros, e que permite, até, identificar a localização do utilizador numa fotografia de satélite, com uma vista panorâmica de um continente inteiro ou mais.

Quando a nossa aplicação é iniciada, o utilizador é inicialmente apresentado com botões para controlar o GPS, como se pode ver nesta imagem da janela do simulador MobileTogether:

Assim que o primeiro par de coordenadas é registado, um conjunto de ícones coloridos na barra de ferramentas oferece acesso a novas opções:

Da esquerda para a direita, os botões desempenham as seguintes funções:
- O botão verde de diálogo abre a aplicação de mensagens de texto do dispositivo móvel com uma mensagem predefinida que diz: "Estou aqui: ", seguido pelas coordenadas de latitude e longitude e o endereço da rua. Esta ação do botão combina uma ação de SMS da MobileTogether com texto proveniente da fonte de dados de geolocalização, como se pode ver na definição da Árvore de Ações abaixo. A mesma ação funciona em dispositivos Android, iPhone ou Windows, e o programador não precisa se preocupar com o mecanismo específico para controlar cada sistema operativo de telemóvel. A MobileTogether cuida automaticamente dos detalhes para cada dispositivo.

- O ícone do mapa dobrado abre a aplicação de mapas padrão do dispositivo móvel, centralizada nas coordenadas exibidas. Esta é também uma ação MobileTogether, com os detalhes para a interação com cada tipo de dispositivo móvel a serem tratados automaticamente:

- O ícone com os três pontos é um botão de "Mais Informações". Este botão executa uma série de ações. Primeiramente, envia as coordenadas de latitude e longitude para uma API de geocodificação reversa da MapQuest, a fim de obter um endereço de rua que é frequentemente mais completo do que o endereço de geolocalização original. Em seguida, utiliza uma ação MobileTogether para abrir o navegador web do dispositivo móvel com uma pesquisa baseada no endereço:

- O ícone da ferramenta de satélite interage com a API do Google Maps para gerar um ficheiro de imagem fotográfica de satélite da localização, utilizando o nível de zoom especificado pelo utilizador. A imagem pode ser guardada na biblioteca de fotografias do dispositivo móvel, ou enviada por mensagem SMS ou por e-mail. Aqui está um exemplo das coordenadas capturadas acima:

- A ferramenta de ampliação abre uma nova página e utiliza as APIs de pesquisa do MapQuest e do Place Search para oferecer ao utilizador duas opções de pesquisa diferentes.
Estabelecendo a ligação entre as APIs e os aplicativos móveis
A ferramenta de imagens de satélite utiliza uma expressão XPath para gerar uma imagem através da API do Google Maps e abri-la através de uma URL. Os parâmetros exigidos pela API são fornecidos como parte da URL, permitindo configurar várias opções. Os valores para cada parâmetro são gerados dinamicamente. Aqui está a expressão XPath, conforme visualizada no editor de expressões XPath/XQuery:

A utilização de cores ajuda a esclarecer a expressão: o termo verde na linha 1 é um operador de cadeia de caracteres, os termos laranja entre aspas simples são constantes, e o roxo representa elementos da estrutura de dados ou resultados de funções.
E aqui está um exemplo da URL final, formatada com quebras de linha para corresponder à expressão XPath:

O tamanho da imagem gerada será automaticamente ajustado à largura e altura da janela de cada dispositivo do utilizador final, uma vez que esses valores são definidos como variáveis globais do MobileTogether.
A ação atribuída ao botão do satélite abre a URL no navegador web padrão do dispositivo móvel.
O MobileTogether suporta requisições HTTP/FTP, REST e SOAP para integrar APIs e aplicações móveis
As APIs de pesquisa do MapQuest e a API de pesquisa de locais utilizam ambas uma requisição GET de uma API RESTful para obter dados estruturados, que se tornam a fonte de uma página na estrutura de dados do MobileTogether e estão disponíveis para processamento posterior.
A requisição GET é definida num diálogo que é criado quando a fonte da página é adicionada à árvore de dados da aplicação, como se pode ver aqui:

Uma forma simples de construir a requisição é colar um exemplo de URL da documentação da API no campo de URL acima, e depois substituir as definições dos parâmetros dentro dos colchetes e definir as fontes dos valores na secção dos parâmetros.
A funcionalidade de pesquisa por categorias na nossa aplicação permite ao utilizador definir o raio de pesquisa e o número máximo de resultados, selecionando opções em menus suspensos. Outros menus suspensos permitem ao utilizador selecionar o alvo da pesquisa a partir de uma lista fornecida na documentação da API. Quando o utilizador clica no botão de pesquisa, uma ação MobileTogether executa a requisição "Get":


Os dados XML que são retornados são adicionados à estrutura de dados, como se pode ver aqui na secção "Fontes da Página" da janela do simulador MobileTogether:

Uma nova página de resultados de pesquisa é aberta para apresentar a informação ao utilizador sob a forma de uma tabela que pode ser deslocada. Note que a API organiza automaticamente os resultados por raio a partir da localização atual.

Os botões adicionais na página de resultados de pesquisa permitem abrir um mapa com a rota até o local desejado, realizar uma pesquisa na internet com o nome e a localização do local, ou permitir uma chamada telefónica direta para esse local, com apenas um clique.
A pesquisa por categorias oferece bons resultados, mas pode ser complicado para o utilizador escolher entre mais de 300 opções possíveis. A API de pesquisa de locais da MapQuest aceita qualquer frase de texto simples como alvo e fornece resultados semelhantes. A API de pesquisa de locais também é acessada através de uma requisição GET RESTful e é configurada de forma semelhante à pesquisa por categorias:

Existem várias diferenças nos parâmetros necessários e nos dados que são devolvidos pela API de pesquisa de locais. A pesquisa por categorias oferece resultados em XML ou JSON, mas a API de pesquisa de locais apenas devolve resultados em JSON.
Combinar diferentes formatos de dados não é um problema para o MobileTogether. Simplesmente criámos um campo de edição na nossa aplicação para recolher os dados introduzidos pelo utilizador, e utilizamos novamente uma ação de "Recarregar" para executar a requisição "Get".

Os resultados em formato JSON podem ser visualizados aqui, na estrutura de dados "Fontes da Página" da janela do Simulador:

Os resultados são apresentados ao utilizador numa tabela que pode ser visualizada por partes, como se pode ver aqui. No entanto, esta API não fornece a distância a partir do ponto atual, nem números de telefone

Embora a API tenha retornado dados em formato JSON, podemos ainda aplicar os resultados a uma ação de geolocalização do MobileTogether, de forma que o botão do mapa abra a aplicação de mapas padrão do dispositivo móvel e mostre a rota até o endereço indicado


A ação "MobileTogether Open URL" é atribuída à ferramenta "Globe" para abrir o nome e o endereço da localização do resultado numa janela do navegador web. Os operadores "replace" aninhados garantem a geração de uma URL com sintaxe válida.


Uma nota sobre as chaves de API
Um dos parâmetros exigidos por cada uma das APIs descritas aqui é uma chave de API única, atribuída pelo fornecedor da API. A chave de API identifica e autentica o utilizador sempre que é feita uma solicitação à API. Para uma aplicação partilhada entre um grupo de utilizadores empresariais definidos, é provável que seja mais adequado utilizar uma única chave partilhada, armazenada como um elemento persistente na estrutura de dados do MobileTogether. As solicitações de todos os utilizadores serão agregadas, e será emitida uma única fatura caso o uso total exceda a quota gratuita para qualquer API.
Quando uma aplicação se destina à distribuição pública, o desenvolvedor pode querer exigir que cada utilizador obtenha uma chave API única e seja responsável pelo uso individual. A nossa aplicação inclui uma página de Configurações, acessível ao clicar no ícone de engrenagem na página inicial. A página de Configurações permite ao utilizador definir várias preferências, incluindo a escolha de motores de pesquisa e uma funcionalidade para guardar cada chave API numa área de dados persistentes, exclusiva de cada dispositivo móvel.

Adicionar funcionalidades personalizadas
Até agora, descrevemos algumas funcionalidades de geolocalização bastante comuns, encontradas em muitos aplicativos móveis. Também pode utilizar as APIs mencionadas acima – ou outras APIs públicas – para adicionar funcionalidades aos aplicativos que resolvam problemas específicos. Por exemplo, o nosso aplicativo inclui uma página intitulada "Onde Estava". Qualquer pessoa que precise documentar uma viagem ao longo de um percurso pode clicar no ícone do envelope nesta página para enviar um registo da viagem por e-mail. No nosso aplicativo, um toque prolongado em qualquer ícone de ferramenta abre uma mensagem de ajuda:

Pode criar e combinar APIs e aplicações móveis para si, e experimentar todas as outras funcionalidades do MobileTogether para desenvolver aplicações móveis elegantes e compatíveis com diferentes plataformas, ao descarregar o MobileTogether Designer, que é gratuito. Este software inclui ajuda integrada, tutoriais e muitos exemplos. Também pode consultar vários vídeos demonstrativos do MobileTogether para começar.