AIR アプリをブラウザからインストールする
サンプルをダウンロード
■インストール用の Flash を作成する
インストール用の Flash を ActionScript3.0 で作成します。(Flash Player で動作する普通の Flash )
Flash Player の設定ダイアログを使用するため、幅 217 、高さ180 以上のサイズで作成する必要があります。
ブラウザから、AIR アプリケーションにアクセスするには、専用の API を使用します。
この API は、FlashPlayer のバージョンが 9.0.115.0 以降で動作するようです。
■インストール用 API を使用する為の準備
この air.swf ファイルの中に、ブラウザ用の API が用意されています。
air.swf ファイルが格納されている URL
http://airdownload.adobe.com/air/browserapi/air.swf
air.swf ファイルを読み込む例です。
air.swf ファイルを読み込む
import flash.net.URLRequest;
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.system.LoaderContext;
import flash.system.ApplicationDomain;
import flash.events.Event;
var air_swf_url:URLRequest = new URLRequest("http://airdownload.adobe.com/air/browserapi/air.swf");
var air_swf:Object = null;
// ローダーオブジェクトを作成
var loader_obj:Loader = new Loader();
// ローダーインフォオブジェクトを取得
var info:LoaderInfo = loader_obj.contentLoaderInfo;
// アプリケーションドメインの変更
var loader_context:LoaderContext = new LoaderContext();
loader_context.applicationDomain = ApplicationDomain.currentDomain;
// 読み込みが完了して初期されたときに呼び出されるイベント
info.addEventListener(Event.INIT , LoaderInitFunc);
function LoaderInitFunc(e:Event):void {
air_swf = e.target.content;
}
// 読み込み開始
loader_obj.load(air_swf_url,loader_context);
■ランタイムがインストールされているか調べる
getStatus() メソッドを使用すると AIR ランタイムがインストールされているか調べる事ができます。
ランタイムがインストールされているか調べる
// AIR ランタイムがインストールされているか調べる
var status:String = air_swf.getStatus();
switch(status){
case "unavailable":
trace("ランタイムはインストールされていない。ランタイムのインストールは不可能。");
break;
case "available":
trace("ランタイムはインストールされていない。ランタイムのインストールは可能。");
break;
case "installed":
trace("ランタイムはインストール済み。");
break;
}
■AIR アプリケーションをインストールする
AIR アプリケーションのインストーラを起動するには、installApplication() メソッドを使用します。
このメソッドは、マウスがクリックされたタイミングなどで呼び出す必要があります。
(air.swf).installApplication ( url , 動作に必要なAIRランタイムのバージョン , AIR アプリ起動時に渡す引数パラメータ ) :void
第01引数 | String | String型でファイルまでのパスを絶対パスで指定します。相対パスは使用できません。 |
第02引数 | String | AIR アプリケーションで動作するのに最低限必要な AIR ランタイムのバージョンを指定。 |
第03引数(略可) | Array | インストール完了後、AIR アプリ起動時に、引数パラメータを渡したい場合、配列で指定。 |
戻り値 | void | なし |
AIR アプリケーションをインストールする
import flash.events.MouseEvent;
// air ファイルが格納されている URL
var air_app_url:String = "http:hakuhin.jp/download/air/html_loader_00_fla09_air1.air";
// AIR アプリの動作に必要な、AIR ランタイムの最低バージョン
var air_version:String = "1.0";
// マウスボタンが押されたときに実行されるイベント
stage.addEventListener(MouseEvent.MOUSE_DOWN , function (e:MouseEvent):void{
// AIR アプリケーションのインストーラを起動する
air_swf.installApplication( air_app_url, air_version );
});
すでに AIR ランタイムがインストールされていれば、AIR アプリケーションインストーラが起動します。
もし AIR ランタイムがインストールされていない場合は、 AIR ランタイムのインストールを促すダイアログが表示されます。
AIR ランタイムのインストールが終われば、その後 AIR アプリケーションインストーラが起動します。
■インストール用 API が動作しない?
HTML タグの wmode パラメータに "direct" や "gpu" を指定すると、 AIR ランタイムのインストーラが起動しないようです。
「Windows XP」「Flash Player 10.1」「Adobe AIR 2.0.2」で確認
「Windows XP」「Flash Player 10.1」「Adobe AIR 2.0.2」で確認
AIR アプリをブラウザから起動する
■AIR アプリがブラウザから呼び出される事を許可する
AIR アプリが、ブラウザから呼び出される事を許可するためには、「アプリケーション記述ファイル」を変更する必要があります。
「アプリケーション記述ファイル」の <allowBrowserInvocation> タグを true に変更します。
アプリケーション記述ファイルの allowBrowserInvocation タグを true に変更する
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<application xmlns="http://ns.adobe.com/air/application/2.0">
~略~
<allowBrowserInvocation>true</allowBrowserInvocation>
</application>
■アプリケーション ID を取得する
アプリケーション ID は、「AIR インストーラーの設定ダイアログ」の以下の部分に相当します。
アプリケーション ID の取得方法は、こちらで解説しています。
アプリケーションIDを取得
import flash.desktop.NativeApplication;
var app:NativeApplication= NativeApplication.nativeApplication;
trace("アプリケーションID:" + app.applicationID );
■発行者 ID を取得する
発行者 ID の取得方法は、こちらで解説しています。
Adobe AIR 1.5.3 以降の場合、発行者 ID の使用は非推奨となりました。
特に使用しない場合は、"" となります。
発行者IDを取得 (ADL 上では取得できません)
import flash.text.TextField;
import flash.desktop.NativeApplication;
// テキストフィールドを作成
var text_field:TextField = new TextField();
text_field.x = 10;
text_field.y = 10;
text_field.width = stage.stageWidth - 20;
text_field.height = 20;
text_field.border = true;
stage.addChild(text_field);
var app:NativeApplication = NativeApplication.nativeApplication;
text_field.text = "発行者ID:" + app.publisherID;
■インストールされている AIR アプリケーションのバージョンを調べる
インストールされている、AIR アプリケーションのバージョンを調べるには、getApplicationVersion() メソッドを使用します。
AIR ランタイムがインストールされていない場合、エラーとなります。
(air.swf).getApplicationVersion ( アプリケーションID , 発行者ID , コールバック関数 ) :void
第01引数 | String | AIR アプリケーションのアプリケーションIDを指定します。 |
第02引数 | String | AIR アプリケーションの発行者IDを指定します。 |
第03引数 | Function | バージョンを取得するためのコールバック関数を登録します。 |
戻り値 | void | なし |
成功すれば、「AIR インストーラーの設定ダイアログ」の「バージョン」に記述した文字列が取得できます。
インストールされていない場合は、null が取得できます。
AIRアプリケーションのバージョンを取得する
import flash.text.TextField;
// AIRアプリケーションのアプリケーションID
var air_app_id:String = "com.adobe.example.InstallSample";
// AIRアプリケーションの発行者ID (無い場合は "")
var air_app_publish:String = "9EA885A8B1B37E8D7AE877C3D31473E1A2278ECC.1";
// テキストフィールドを作成
var text_field:TextField = new TextField();
text_field.x = 10;
text_field.y = 10;
text_field.width = stage.stageWidth - 20;
text_field.height = 20;
text_field.border = true;
stage.addChild(text_field);
try{
// インストールされているAIRアプリケーションのバージョンを調べる
air_swf.getApplicationVersion( air_app_id, air_app_publish, function (version:String):void{
if(version == null){
text_field.text = "インストールされていない";
}else{
text_field.text = "バージョン:" + version;
}
});
}catch(e:Error){
}
■ブラウザから AIR アプリケーションを起動する
ブラウザから AIR アプリケーションを起動するには、launchApplication() メソッドを使用します。
このメソッドは、マウスがクリックされたタイミングなどで呼び出す必要があります。
(air.swf).launchApplication ( アプリケーションID , 発行者ID , AIR アプリ起動時に渡す引数パラメータ ) :void
第01引数 | String | AIR アプリケーションのアプリケーションIDを指定します。 |
第02引数 | String | AIR アプリケーションの発行者IDを指定します。存在しない場合は "" |
第03引数(略可) | Array | AIR アプリ起動時に、引数パラメータを渡したい場合、配列で指定。 |
戻り値 | void | なし |
AIR アプリケーションを起動する
import flash.events.MouseEvent;
// AIRアプリケーションのアプリケーションID
var air_app_id:String = "com.adobe.example.InstallSample";
// AIRアプリケーションの発行者ID (無い場合は "")
var air_app_publish:String = "9EA885A8B1B37E8D7AE877C3D31473E1A2278ECC.1";
// マウスボタンが押されたときに実行されるイベント
stage.addEventListener(MouseEvent.MOUSE_DOWN , function (e:MouseEvent):void{
// AIR アプリケーションを起動する
air_swf.launchApplication( air_app_id, air_app_publish );
});
第03引数で渡す引数を、AIR アプリケーション側で取得する方法は、こちらで解説しています。