来源:AIR Tip 6: Launching an Application from the Browser
这个教程将让你了解如何从浏览器中运行一个AIR应用并向它传递参数。本教程基于Adobe AIR Beta3。(AIR1.0与Beta3之间基本无差异…译者注)
AIR Beta3引入了浏览器接口(API)。这个API允许AIR应用可以从一个WEB浏览器中运行,并且它允许将参数从浏览器中传递到AIR应用里。
设置你的AIR应用
应用必须设置allowBrowserInvocation值为True来允许从浏览器API中接受事件(实现方式见代码示例1)。一旦这个值被设置了,你的AIR应用将接受一个BrowserInvokeEvent[参考]事件,当它通过浏览器API被调用的时候。
XML:
-
<!– Whether the application can be launched when the user clicks a link in a web browser.
-
Optional. Default false. –>
-
<allowBrowserInvocation>true</allowBrowserInvocation>
了解API
浏览器API包含了一个标签,launchApplication,它事实上调用了你的AIR应用[更多信息]。这个应用可以得到3个参数(其中有2个是必须的)。
1.appID – 你的AIR应用的唯一标示
2.pubID – 你的AIR应用的发布者ID
3.arguments – 一个传递到你的AIR应用中的参数的数组
获取你的发布者ID
发布者ID[参考]和其它的应用程序一样,创建自一个授权证书。这个ID可以通过以下两种方式获得:
1.在每个AIR应用中,发布者ID可以用NativeApplication.nativeApplication.publisherID属性来引用
2.当一个AIR应用被安装了,发布者ID会保存在META-INF/AIR/publisherid文件中
创建一个电影用于运行AIR应用
作为一个良好的开始,你可以查看使用Adobe AIR SDK实现的安装示例。这个示例的源码可以在src/badge文件夹中找到。这个示例已经写入了载入浏览器API的代码。你将在示例代码2中看到它们。
ACTIONSCRIPT:
-
…
-
_loader = new Loader();
-
var loaderContext:LoaderContext = new LoaderContext();
-
loaderContext.applicationDomain = ApplicationDomain.currentDomain;
-
_loader.contentLoaderInfo.addEventListener(Event.INIT, onInit);
-
try {
-
_loader.load(new URLRequest(BROWSERAPI_URL_BASE + “/air.swf”), loaderContext);
-
} catch (e:Error) {
-
root.statusMessage.text = e.message;
-
}
-
…
Adobe AIR SDK包含了检测AIR是否已经安装的代码。我们可以修改这个,以便我们可以在自定义的应用中显示状态信息。
ACTIONSCRIPT:
-
private function onInit(e:Event):void {
-
_air = e.target.content;
-
switch (_air.getStatus()) {
-
case “installed” :
-
statusMessage.text = “AIR is installed and has been detected.”
-
stage.addEventListener(MouseEvent.CLICK,onButtonClicked);
-
break;
-
case “available” :
-
// AIR is Available
-
statusMessage.text = “AIR is not installed – application cannot be launched.”
-
break;
-
case “unavailable” :
-
// AIR Not Available
-
statusMessage.text = “AIR is not installed – application cannot be launched.”
-
break;
-
}
-
}
你可以很容易的扩展这个示例,在AIR未安装的时候去安装它(这样对你的应用非常有益处),但是在这个教程中,我们只是实现在已经安装的情况下,去运行一个AIR应用。示例代码4标明了如何使用installApplication标签来运行一个应用。
ACTIONSCRIPT:
-
private function onButtonClicked(e:Event):void {
-
statusMessage.text = “Attempting to Launch AIR Application”;
-
_air.launchApplication(_applicationID,_publisherID,_arguments);
-
}
在网页上插入这个运行管理器
示例代码5展示了如何插入这个运行管理器到网页中去(使用SWFObject)。所有的参数都通过浏览器API传递到了管理器中,其实是使用了FlashVars方法,在SWFObject中,使用的是so.addVariable标签。
在这个示例中,我把applicationID和publisherID使用FlashVars传递到了电影中,但是你或许不希望所有这些信息都被显示出来。在这里,你还是努力把这些代码敲入你的电影中吧。
JAVASCRIPT:
-
var so = new SWFObject(“launchMovie.swf”, “badge”, “250″, “75″, “9.0.115″, “#FFFFFF”);
-
so.addVariable( “applicationID”, “net.davidtucker.airtips.BrowserAPITest” );
-
so.addVariable( “publisherID”, “xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.1″ );
-
so.addVariable( “arguments”, “Application Launched from Browser,Argument 2″ );
-
so.write(“foo_flashcontent”);
测试示例
要使这个示例正常工作,你需要拥有AIR TIP 5中说到的BrowserInvokeEvent示例。你可以点击这里安装。
源文件
Download (15 kb)
参考资料
Getting the application and publisher identifiers (Developer Guide)
Checking from a web page if an AIR application is installed (Developer Guide)
Launching an installed AIR application from the browser (Developer Guide)
Loading the air.swf file (Developer Guide)
Tags: AIR, AIR教程