AIR アプリケーションのアップデート機能を簡単に実装するためのフレームワークが Adobe Labs に公開されました。(Application Update Framework for Adobe AIR@Labs) フレームワークやドキュメントは air_appupdater_061608.zip (ZIP : 0.92 MB) に含まれています。
このフレームワークにはアップデートの有無からインストール完了の確認までに必要な機能と UI がひととおり含まれています。標準の UI の代わりにカスタム UI も使用することも可能です。
SDK 内には 4 つの同じような名前のファイルが提供されていますが swc ファイルが Flash 用、swf ファイルが HTML 用です。標準で提供される UI を使用する場合は ApplicationUpdaterUI.swc (swf) を、UI を使用しない場合は ApplicationUpdater.swc (swf) を使用します。
このフレームワークでサポートされるのは以下のようなシナリオです。
- 定期的にアップデートの確認を実行
- アップデート情報の書かれた XML ファイルをダウンロードし内容をチェック
- 新しいバージョンの AIR アプリケーションをダウンロードしてインストールを開始
- アップデートの確認からインストール進行状況の通知まで個々のステップにおけるイベントの発行
- アップデートされたアプリケーションの最初の実行時のイベント発行
従って、このフレームワークを使用するには、決められたフォーマットの XML ファイルをサーバ側に用意する必要があります。このファイルをアップデート記述子と呼びます。
アップデート記述子には以下の 3 つの項目を記述します。どれも必須項目です。
- version - AIR アプリケーションの新しいバージョン、アプリケーション記述ファイル内の version と同じ値を使用
- url - AIR アプリケーションのパッケージファイルの URL
- description - アップデート処理中に表示される新しいバージョンに関する情報
下はアップデート記述子の簡単なサンプルです。description には lang 属性を使って各国語で説明を記述できるようになっています。
<?xml version="1.0" encoding="utf-8"?> <update xmlns="http://ns.adobe.com/air/framework/update/description/1.0"> <version>1.1a1</version> <url>http://example.com/updates/sample_1.1a1.air</url> <description> <text xml:lang="en">English description</text> <text xml:lang="ja">日本語 description</text> <text xml:lang="fr">French description</text> </description> </update>
さて、アップデート機能を利用するには ApplicationUpdaterUI か ApplicationUpdater のインスタンスを使用します。このとき属性として以下の項目を設定できます。
- updateURL: String - アップデート記述子の場所を URL で記述
- delay: Number - アップデート確認の間隔を日単位で指定 (0.01 のような値も可)
- defaultUI: <dialog> タグを使って標準 UI の使用を指定 (利用可能なダイアログは “checkForUpdate”,” downloadUpdate”, “downloadProgress”, “installUpdate”, “fileUpdate”, “unexpectedError”)
これらの属性を外部 XML ファイル経由で読み込むことができます。下は外部 XML ファイルの記述例です。
<?xml version="1.0" encoding="utf-8"?> <configuration xmlns="http://ns.adobe.com/air/framework/update/configuration/1.0"> <url>http://example.com/updates/update.xml</url> <delay>1</delay> <defaultUI> <dialog name="checkForUpdate" visible="false" /> <dialog name="downloadProgress" visible="false" /> </defaultUI> </configuration>
外部 XML ファイルを利用する場合は、ファイルの場所を configurationFile 属性に設定します。
var appUpdaterUI:ApplicationUpdaterUI = new ApplicationUpdaterUI(); appUpdaterUI.configurationFile = "cfg/updateConfig.xml";
XML ファイルを使用する代わりに ApplicationUpdater の属性に直接値を指定することもできます。
var appUpdaterUI:ApplicationUpdaterUI = new ApplicationUpdaterUI(); appUpdaterUI.updateURL = "http://example.com/updates/update.xml"; appUpdaterUI.delay = 1;
属性を設定したら、必要なイベント処理を登録してから initialize() メソッドを呼びます。これでアップデート機能が実行されます。イベントの詳細についてはフレームワークに付属するドキュメントを参照してください。
var appUpdaterUI:ApplicationUpdaterUI = new ApplicationUpdaterUI(); appUpdaterUI.configurationFile = "cfg/updateConfig.xml"; appUpdaterUI.addEventListener(UpdateEvent.DOWNLOAD_COMPLETE, onDownloadComplete); appUpdaterUI.addEventListener(StatusUpdateEvent.UPDATE_STATUS, onStatusUpdate); appUpdaterUI.addEventListener(StatusUpdateErrorEvent.UPDATE_ERROR, onStatusUpdateError); appUpdaterUI.addEventListener(DownloadErrorEvent.DOWNLOAD_ERROR, onDownloadError); appUpdaterUI.addEventListener(ErrorEvent.ERROR, onError); appUpdaterUI.initialize();
ApplicationUpdater のインスタンスを同時に複数使うことはできません。
コメントする