来源:AIR Tip 5: Passing Arguments to an Application on Install
这个教程将告诉你当一个AIR应用使用Badge的方式来安装时,如何控制应用的安装进程并传递参数。这个教程包含了一篇文章和一个教学视频,它是基于AIR Beta3的版本的。
有人在评论里问我,当使用AIR Installer Badge来安装AIR应用的时候,是否可以传递参数到应用程序中去。答案是:可以,又不可以。首先,它不能直接完成这个功能,当然,你可以很容易的修改Badge文件以使它支持这个功能;其次,要让一个AIR应用接受BrowserInvokeEvent[参考],必须将应用配置文件的allowBrowserInvocation属性设置为True。
修改AIR Install Badge
假如你需要这个功能,那么你就要创建一个修改过的AIR Install Badge。源代码中附带了Adobe AIR Beta3的SDK。你可以在src/badge这个目录中找到它。你将需要修改AIRBadge.as这个文件。
1.你需要为这个类添加一个名为_arguments的属性。所有属性位于类的最底部,所以你可以把这个属性添加到其它属性的后面。这个属性的类型是数组。
ACTIONSCRIPT:
-
…
-
private var _messageColor: String;
-
private var _buttonColor: String;
-
private var _imageURL: String;
-
private var _appURL: String;
-
private var _appName: String;
-
private var _airVersion: String;
-
private var _arguments: Array;
-
…
2.然后,你需要把参数分配到SWF文件中的_arguments属性。这个步骤是在构造函数中完成的。你需要把传递的字符串参数用Split转换为数组。你可以使用String类提供的Split标签来完成这个功能。在这个例子里,你可以用逗号作为数组的分隔符。
ACTIONSCRIPT:
-
…
-
_imageURL = validateURL(parameters["imageurl"]);
-
_airVersion = String(parameters["airversion"]);
-
_appURL = validateURL(parameters["appurl"]);
-
_arguments = String(parameters["arguments"]).split(“,”);
-
…
3.最后,你需要把_arguments作为第三个参数传递给_air.installApplication标签。这个标签在onButtonClicked函数中被调用了两次,你需要同时更新它们两个。
ACTIONSCRIPT:
-
…
-
_air.installApplication( _appURL, _airVersion, _arguments );
-
…
通过这些更改,现在你可以传递参数到Badge安装器中了,随后这些参数会被传递到你的AIR应用安装进程中去。作为一个示例,我创建了一个AIR的应用,用来显示所有传递给它的参数,它同时也显示其它从BrowserInvokeEvent中获取的参数。
针对这个安装过程,我修改了我的InstallBadge.js文件来包含所有的参数(这些参数是用Flashvars传递的)。在这个示例里我创建了一个ColdFusion文件用来传递IP地址和服务器名称到应用中。
这个AIR应用列出了所有的BrowserInvokeEvent传递给它的参数。下面你将看到这个示例。
在站点中加入一个修改过的Dadge
最近我为Adobe AIR开发者中心写了一篇名为《使用Badge安装特性无缝配置Adobe AIR应用》的文章。 这篇文章详细介绍了如何在一个页面中引用Badge。在这个例子中我只是稍微修改了一下这些文件(添加了一些典型的参数)。
首先,我修改了InstallBadge.js文件,并且我把这个新的文件放在了这个教程之中。其次,我添加了一个全局变量(airApplicationArguments)到页面的头部。这是一个逗号分隔的参数:
JAVASCRIPT:
-
// AIR Application Arguments
-
var airApplicationArguments = “First Argument,Second Argument”;
设置你的AIR应用
这是两个为了让你的AIR应用可以接受BrowserInvokeEvents事件所必须做的两个设置。首先,你需要修改你的AIR配置文件,以允许它接受这些事件。确保allowBrowserInvocation这个属性在你的XML配置文件中设置为True。
XML:
-
<!– Whether the application can be launched when the user clicks a link in a web browser.
-
Optional. Default false. –>
-
<allowBrowserInvocation>true</allowBrowserInvocation>
其次,你需要告诉你的AIR应用去监听这些事件,如下所示:
ACTIONSCRIPT:
-
import flash.events.BrowserInvokeEvent;
-
private function init():void {
-
NativeApplication.nativeApplication.addEventListener(BrowserInvokeEvent.BROWSER_INVOKE,onBrowserInvoke);
-
}
-
private function onBrowserInvoke(e:BrowserInvokeEvent):void {
-
// Code to React to BrowserInvokeEvent
-
}
示例程序
这个示例AIR应用(正如你在视频中所看到的)是可用的。它显示了所有通过BrowserInvokeEvent传递给它的信息。这个程序的源码集成在右键菜单里,你点击右键就可以看到。
附加文件
安装AIR应用 – Click Here
源文件下载 (636 kb)
参考文献
Livedocs – BrowserInvokeEvent
Developer Center – Deploying Adobe AIR applications seamlessly with the badge install feature
Developer Guide – Launching an Installed AIR Application from the Browser
Tags: AIR, AIR教程