Adobe AIR プログラミング講座

 

AIR アプリをブラウザからインストールする

 

サンプルをダウンロード
 


■インストール用の Flash を作成する


インストール用の Flash を ActionScript3.0 で作成します。(Flash Player で動作する普通の Flash )
 
Flash Player の設定ダイアログを使用するため、幅 217 、高さ180 以上のサイズで作成する必要があります。
 
ブラウザから、AIR アプリケーションにアクセスするには、専用の API を使用します。
 
この API は、FlashPlayer のバージョンが 9.0.115.0 以降で動作するようです。
 

■インストール用 API を使用する為の準備


以下の URL にある air.swf ファイルを、Loader クラスを使って読みこみます。
 
Loader クラスの使い方は、こちらで解説しています。
 
この 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引数 StringString型でファイルまでのパスを絶対パスで指定します。相対パスは使用できません。
第02引数 StringAIR アプリケーションで動作するのに最低限必要な 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」で確認
 


 

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引数 StringAIR アプリケーションのアプリケーションIDを指定します。
第02引数 StringAIR アプリケーションの発行者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引数 StringAIR アプリケーションのアプリケーションIDを指定します。
第02引数 StringAIR アプリケーションの発行者IDを指定します。存在しない場合は ""
第03引数(略可)ArrayAIR アプリ起動時に、引数パラメータを渡したい場合、配列で指定。
戻り値 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 アプリケーション側で取得する方法は、こちらで解説しています。