본문 바로가기

Adobe AIR

[AIR] Adobe AIR 개발시 BrowserInvokeEvent 의 arguments 값

 최근들어 Adobe AIR 기반으로 되어 있는 데스크톱 어플들이 하나 둘씩 나오고 있는데요. FlashPlayer 기반의 개발보다 자료가 없어서 개발하면서 검색하는 시간이 점점 늘어만 가네요. 그중 하나 BrowserInvokeEvent 사용시 arguments 값에 대한 이야기를 해 보려고 합니다.


AIR 기반 어플리케이션은 일반적으로 아이콘 클릭으로 실행 시키는 방법과 함께 브라우져에서 사용자 이벤트 (마우스 또는 키보드)가 발생 했을때 실행 시킬수 있는 기능이 있습니다. 자세한 내용은 아래 링크에 있는 설명서를 참고하세요.


웹 페이지에서 AIR 응용 프로그램 설치 및 실행


이때 어플리케이션이 실행 되었을때 아이콘을 클릭해서 실행이 되면 InvokeEvent, 브라우저에 의해서 실행이 되면 BrowserInvoke 이벤트가 발생하게 됩니다. 

브라우저에서의 실행은  air.swf 파일 로드를 통해 그안에 정의 되어 있는 메소드의 installApplication 과 launchApplication을 이용합니다. 이 두 메소드의 쓰임은 위의 링크에서 브라우저에서의 AIR 응용프로그램 설치, 브라우저에서 설치된 AIR 응용 프로그램 시작 에서 확인할 수 있습니다. 

이 두 메소드는 설치후에 어플리케이션이 실행되었을때 파라미터를 전달해 주는 arguments 값을 설정해 줄수 있는데요. 이 arguments 값이 Array 형으로 전달 되는데 Array 안에 들어 갈수 있는 데이터형이 문자형(String) 으로 제한 됩니다. 보안상에 이유로 인해서 제한을 두고 있는것 같지만, 문제는 문자형도 제대로 넘어가지 않습니다. 예를 들어 URL 은 배열안에 넣고 전달 하려고 해도 아에 launchApplication 이나 installApplication 이 호출된 후에 AIR 어플리케이션이 실행 되지 않습니다. 그 이유는 문자안에 영문 문자열이 아닌 다른 문자가 포함되어 있을때 이러한 문제가 발생 합니다.

해결 방법은 전달해야 하는 문자들은 Base64로 인코딩 한 후에 전달하고 어플리케이션에서 디코딩해서 사용하면 됩니다.
Flex SDK 를 사용한다면 기본으로 Base64Encoder, Base64Decoder 가 포함되어 있으니 사용하시면되고, 다른 프로젝트라면 as3crypto (http://code.google.com/p/as3crypto/)라이브러리를 사용해 보는것을 추천합니다.

비교적 많은 기능을 가지고 있는 AIR 플랫폼이지만 제약도 많습니다. 다만 다른 플랫폼에서는 없는 기능과 사용자 편의성을 몇개 가지고 있다는게 메리트가 느껴집니다. 



'Adobe AIR' 카테고리의 다른 글

[AIR] Adobe AIR 개발 Tip - Application Setting  (2) 2011.04.24
[AIR] AIR for Android  (2) 2010.09.25
Arthropod : The easy Flash and AIR Debugger  (2) 2008.12.11