AIRアプリケーションのオートアップデートライブラリ(ActionScriptライブラリ)で以下の機能があります。
ライブラリ以外に以下のものが用意されている必要があります。説明には同一アプリケーションのバージョン違いが登場して紛らわしいので 便宜的に最新バージョン(アップデートで上書きする側)を「NEW」、現行バージョン(アップデートで上書きされる側)を「OLD」で識別することにします。
ライブラリを使用する前の下準備(1, 2)をしてからライブラリ本体の説明(3 ~)に入ります。図も参考ください。
図1 オートアップデートのフローチャート。
http://example.com/latest_app.air
<?xml version="1.0" encoding="UTF-8"?> <application> <version>2.0</version> <download_url>http://example.com/latest_app.air</download_url> </application>を以下URLに保管したとします(図1 左上)。後ほど詳しく説明しますが、XMLファイル中のノード名は任意のものでかまいません。
http://example.com/update.xml
import com.borealkiss.fl.utils.AirUpdater; var updater:AirUpdater; updater = AirUpdater.getInstance("1.0", "http://example.com/update.xml", "version", "download_url");
AirUpdater.getInstance()に渡す引数は全てStringで一番前から順番に
となっています。XMLファイル内のノード名は好き勝手つけれますが、 必ずAirUpdater.getInstance()の引数名と一致させる必要があります(上記例では<version>と<download_url>)。
AirUpdater.check()でバージョンチェックを開始します(図1 矢印a)。 update.xmlにアクセスし中身を解析してから、OLDアプリケーションのバージョンと XMLファイルに記述されたNEWアプリケーションのバージョンの数値の大小を比較して
の3通りの場合に対してイベントを返すのでそれぞれにイベントリスナーを付与します。
updater.check(); //NEWバージョンが存在する updater.addEventListener(AirUpdater.LATEST_VERSION_FOUND,onFound); //NEWバージョンは存在しない updater.addEventListener(AirUpdater.LATEST_VERSION_NOT_FOUND,onFound); //通信エラー updater.addEventListener(IOErrorEvent.IO_ERROR,onFound);
NEWバージョンがある場合は続けてAirUpdater.downloadUpdate()を行います。 これによりNEWアプリケーションをデスクトップにダウンロードし(図1 矢印c)、 現在立ち上げているOLDアプリケーションをNEWアプリケーションに書き換えるまでの作業を自動で行ってくれます(図1 矢印d)。
private function onFound(e:Event):void{ switch(e.type){ case AirUpdater.LATEST_VERSION_FOUND: //NEWバージョンが存在する updater.downloadUpdate(); break; case AirUpdater.LATEST_VERSION_NOT_FOUND: //NEWバージョンが存在しない trace("No newer version found"); break; default: //通信エラー trace("Error"); } }