Abrindo um aplicativo em Adobe AIR pelo browser

Precisei implementar em um projeto, uma particularidade interessante, de que um aplicativo web(Flash) se comunicasse com um aplicativo feito em Adobe AIR. De primeira pensei em usar LocalConnection, mas não tinha como implementar a classe LocalConnection sem que o aplicativo em Adobe AIR não estivesse aberto. A tarefa foi deixada de lado até que lembrei que o Adobe Media Player faz exatamente isso, se você já o tem instalado na máquina, ele simplesmente abre o aplicativo.

O Adobe AIR possui um arquivo chamado air.swf(http://airdownload.adobe.com/air/browserapi/air.swf) que contém uma API para facilitar a interação entre o runtime e algum aplicativo em Adobe AIR a partir de uma página web. Para isso você deve carregar o air.swf no mesmo dominio do seu aplicativo web, sendo possivel:

  • Verificar se o runtime do Adobe AIR está instalado.
  • Verificar a partir de uma página se o seu aplicativo em Adobe AIR está instalado.
  • Instalar um aplicativo em Adobe AIR a partir do browser.
  • Abrir um aplicativo em Adobe AIR já instalado a partir do browser.

Vamos aos exemplos, primeiro criarei um novo projeto do tipo Desktop Application no Flex Builder, esse aplicativo que será aberto pelo browser mais tarde. Preciso configurar o applicationID e o publisherID, sem esses parametros, o aplicativo não será aberto.
O applicationID é configurado quando você cria o projeto ou posteriormente na tag id do seu arquivo .xml.
[XML]
br.com.leonardofranca.files.lauchApp
[/XML]
Para o publisherID, necessitamos usar algum certificado digital, usarei um criado no projeto so para efeito de exemplificação(senha será 123). Só terei acesso ao publisherID depois que instalar meu aplicativo em Adobe AIR na máquina.
O último detalhe é usar a tag allowBrowserInvocation.
[XML]
true
[/XML]
O arquivo xml de configuração sera como abaixo:
[XML]


br.com.leonardofranca.files.lauchApp
lauchApp
lauchApp
0.0.1

[This value will be overwritten by Flex Builder in the output app.xml]

true

[/XML]
E nosso mxml:
[MXML]






[/MXML]

Agora vamos a parte que será responsavel por fazer a chamada para abrir o aplicativo acima. Criei um projeto do tipo Web Application no Flex Buider. Como explicado acima, esse aplicativo precisa carregar o air.swf para seu dominio para logo em seguida chamar o método launchApplication passando os parametros applicationID e publisherID.
Não tem misterio, segue o código completo.
[MXML]






[/MXML]

Deveremos ter o seguinte resultado:

Abrindo um aplicativo em Adobe AIR pelo browser

Abrindo um aplicativo em Adobe AIR pelo browser

DOWNLOAD SOURCE 1

DOWNLOAD SOURCE 2

Referencias:
Installing and running AIR applications from a web page:
http://help.adobe.com/en_US/AIR/1.5/devappsflex/WS5b3ccc516d4fbf351e63e3d118666ade46-7e15.html
Sobre o applicationID:
http://help.adobe.com/en_US/AIR/1.5/devappsflex/WS5b3ccc516d4fbf351e63e3d118666ade46-7ff1.html#WS5b3ccc516d4fbf351e63e3d118666ade46-7c9c
Sobre o publisherID e certificados digitais suportados pelo Adobe AIR
http://help.adobe.com/en_US/AIR/1.5/devappsflex/WS5b3ccc516d4fbf351e63e3d118666ade46-7ff0.html#WS5b3ccc516d4fbf351e63e3d118666ade46-7cca

Translations:
English Version

4 thoughts on “Abrindo um aplicativo em Adobe AIR pelo browser

  1. Jefhcardoso

    Cara, isso foi incrível! Jamais eu havia imaginado uma comunicação dessa natureza entre um aplicativo web (Flash) e um aplicativo feito em adobe AIR.
    Então é só usar o Adobe Media Player que ele abre o aplicativo Read more? Incrível!
    Agradeço pela fantástica dica e lhe convido, a você e seus leitores para que façam uma visita ao meu blog para uma apreciação: http://jefhcardoso.blogspot.com/. Posso aguardar?

  2. Diogo

    Oi Leonardo,

    Existe a possibilidade de o swf(web) passar uma váriavael para o aplicativo air ? … vc teve algum problema de erro na classe flash.filesystem.File ? no meu caso estou fazendo um aplicativo (swf ou exe) que roda no desktop… e quero fazer uma chamada para abrir um air… só que o swf(pai) não reconhece a classe filesystem. Vc pode me responder por email ? Desde já agradeço ! Abraço!

Leave a Reply