BT

Web Intents do Google: um novo mecanismo para integração entre aplicações web

por Jeevak Kasarkod , traduzido por Fábio Santos em 10 Ago 2011 |

A equipe do Chromium, o projeto open source que é base do Google Chrome e do Chrome OS, lançou recentemente o Web Intents, uma API que possibilita que aplicações web se integrem com serviços de terceiros sem a necessidade de acesso a APIs específicas para cada serviço. O Web Intents é o equivalente ao Android Intents, mas para a web. Possibilita o registro e a execução de serviços com baixo acoplamento entre aplicações e serviços. Esse mecanismo permite ainda ao usuário controle mais amigável das integrações entre as aplicações e, no processo, simplifica o trabalho dos desenvolvedores de aplicações e serviços para a web.

Com o Web Intents os serviços são explicitamente registrados e associados a intents (intenções), que, basicamente, representam ações como editar, visualizar, compartilhar etc., incluindo parâmetros relevantes para cada ação. Em tempo de execução, é possível escolher qual dos serviços registrados responderá por uma determinada ação. O serviço escolhido recebe a responsabilidade pela execução, utilizando os dados fornecidos pela aplicação de origem ou pelo próprio usuário.

Um cenário que ilustra este mecanismo é o compartilhamento de fotos em uma aplicação web. Em vez de implementar APIs para integração com diferentes serviços de compartilhamento como Flickr e Picasa, a aplicação pode simplesmente disparar um intent para compartilhamento de uma foto, o que pode ser feito com poucas linhas de código. Depois, a aplicação utiliza o mecanismo de integração fornecido pelo navegador, possibilitando a escolha pelo usuário de um dos serviços de compartilhamento por ele/a registrados no próprio navegador. Até agora nenhum navegador web implementou as funcionalidades necessárias para suportar este mecanismo de integração mas o projeto do Web Intents já disponibilizou um pacote JavaScript que irá suportar a sua execução nos browsers IE8 e 9, Firefox 3 em diante, além de Chrome 5 e Safari.

James Hawkins, engenheiro de software do Google, disponibilizou um exemplo detalhado de código JavaScript (no blog do Chromium) ilustrando as funcionalidades da API:

Considere uma aplicação de armazenamento de imagens criada por uma nova empresa com recursos financeiros limitados: os desenvolvedores não possuem os recursos necessários para implementar a capacidade de edição de imagens na aplicação, mas acreditam que a aplicação não seria utilizada sem esta possibilidade. O mecanismo de Web Intents resolve o problema, possibilitando a integração da aplicação com serviços de edição de imagens com um esforço bastante reduzido.

var intent = new Intent(Intent.EDIT, ‘image/png’, getImageDataURI());
window.navigator.startActivity(intent, loadEditedImage);
 
// Este callback será executado assim que o serviço disparado for finalizado, retornando a imagem editada.
function loadEditedImage(data) {
	var image = document.getElementById(‘image’);
	setImageData(image, data);
}

Quando o usuário visitar seu serviço favorito de edição de imagens, este serviço solicitará a permissão para se registrar, com intuito de processar ações de edição (EDIT) para arquivos do tipo ‘image/*’ através da declaração abaixo:

<intent
	action=”http://webintents.org/edit”
	type=”image/*”
/>

Quando o usuário inicia a ação de edição, o serviço registrado é apresentado para o usuário, junto com outros serviços de edição de imagens possivelmente registrados no browser. Assim que o usuário seleciona o serviço desejado, este é executado em um novo contexto e pode carregar a imagem a partir do próprio intent disparado:

var intent = window.intent;
memeImg.src = intent.data;
 
memegenForm.onsubmit = function() {
    // Transformar a imagem (criando adicionando um "meme")
    addMemeTaglines(memeImg, memeTopText, memeBottomText);

    // Enviar o meme gerado ao cliente
    intent.postResult(getImageData(memeImg));
};

Assim que o método postResult() é executado, o contexto do serviço de edição é finalizado e a saída é enviada de volta à aplicação através do callback registrado no método startActivity().

Alguns tipos de intents/ações  que podem ser disparados pela aplicação já estão documentados:

  • Discover: Permite consultar a API de Web Intents em busca dos serviços registrados no browser.
  • Share: Oferece às aplicações um mecanismo simples de compartilhamento de dados. Ações que tratam este intent podem ser, por exemplo, redes sociais ou serviços de email.
  • Edit: Mecanismo simples de edição de dados por aplicações de terceiros. Exemplo de ações que tratam este intent são a manipulação de imagens e a edição de textos.
  • View: Mecanismo para a visualização de dados por aplicações de terceiros. Ações: sistemas especializados em visualização de imagens ou players de áudio e vídeo.
  • Pick: Mecanismo para seleção de arquivos ou recursos de um serviço, para uso em uma aplicação cliente. Exemplos de ações que tratam este intent são galerias de imagens como Picasa ou Flickr. Já uma aplicação cliente poderia ser um cliente de email na web, como GMail ou Hotmail.

O Google está ainda trabalhando em conjunto com a fundação Mozilla para unificar a abordagem das duas empresas para este problema. O Mozilla já mostrou interesse na criação de um mecanismo semelhante e introduziu o Web Activities no começo de julho, durante o lançamento do pacote Open Web App Addon para o Firefox. Este pacote do Mozilla contém a API que define o conceito de application manifest e disponibiliza um repositório de aplicações, um painel de controle para o disparo destas aplicações e um conjunto de interações suportadas pelo ambiente. O conceito de manifest é similar ao de intent do Web Intents.

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT