こんにちは。きんくまです。
4月1日になりましたね。新年度ですね。
新社会人、新入学生のみなさま、おめでとうございます。ですね。
私も1ヶ月半ほどかかっていたとある案件が、昨日無事に終わりほっとしているところです。
さて、AIRではアップデート機能を実装することが可能です。
そのあたりを基本編とハマリ編の2つの記事にわけて紹介したいと思います。
マニュアル
実は今回の機能紹介については、ほとんどマニュアルのままです。
AIR開発では毎日これのPDF版とにらめっこして、このAPIならうまくいくんじゃないか?とか
やりながら実験→実装を繰り返してました。
>> Adobe Flash CS4 Professional での Adobe AIR 1.5 アプリケーションの開発
AIRのアップデート機能の種類
AIRではアップデート機能に2種類の実装方法があります。
・ApplicationUpdaterUI(Adobe が作ったアラートパネルが表示される)
・ApplicationUpdater(自作アラートパネルを表示させることが可能)
このうち、ApplicationUpdaterUIを使うと比較的手軽にアップデート機能を実装することができます。
ApplicationUpdaterUIのアラートパネルのサンプル
なので、今回はApplicationUpdaterUIを使った流れを紹介します。
っていうか、ApplicationUpdaterの方は試してないってだけなんですけどね、、。
更新の流れ
■サーバー側の準備
1)新しいバージョンのAIRファイルを用意する
2)更新内容がかかれたXMLを用意する
3)1と2をサーバーに設置する
■クライアント側の準備
1)Flaファイルでapplicationupdater_ui.swcをひもづける
2)ASでApplicationUpdaterUIの設定をする
■実際の流れ
1)アプリ起動
2)設定したタイミングでアプリからサーバーの更新XMLを読み込みに行く
3)現在のバージョンと、XMLにかかれたバージョンを比較して新しいバージョンだったら
「更新しますかダイアログ」を出す
4)「はい」を押すと、新しいバージョンのデータをダウンロード。
ダウンロード完了後「インストールしますかダイアログ」を出す。
5)「はい」を押すと、現在のアプリを終了して、自動でインストール、新バージョンで起動
となります。このうち、制作者が気にしなくてはいけないのは、2の部分のみで、3~5は
プロパティを1行設定するだけで、自動でやってくれます。
サーバー側の準備
■1)新しいバージョンのAIRファイルを用意する
アップデートするファイルを用意するのですが、マニュアルによると
アップデート AIR ファイルのアプリケーション ID と 発行者 ID の両方が、アップデートするアプリケーションと一致する 必要があります。発行者 ID は署名者の証明書から取得します。つまり、アップデートおよびアップデートされるアプリ ケーションの両方を同じ証明書を使用して署名する必要があります。
となっていて、AIR設定のID: com.adobe.example.no-nameの部分と証明書が同じようになっていないと、
同じアプリと認識せず、アップデート機能も働かないということになります。
設定パネルで、新しい任意のバージョン番号を記入しておきましょう。
1.0→1.1や、1.0→1.0.1なんてのもOKです。
■2)更新内容がかかれたXMLを用意する
update.xmlというXMLファイルを作ります。update.xmlは別の名前でもかまいません。
そのときは、AS側でファイル名を変えてあげてください。
<?xml version="1.0" encoding="utf-8"?> <update xmlns="http://ns.adobe.com/air/framework/update/description/1.0"> <version>2.0</version> <url>http://www.kuma-de.com/hoge/fuga/air_update.air</url> <description><![CDATA[ バージョン2.0では次の機能が追加されます。 ・こんなことや ・あんなことも ・ほら!たくさんだよ ]]></description> </update>
versionはアップデートした後のバージョンを
urlはサーバーに設置するドメイン名からの絶対パスを書きます
■3)1と2をサーバーに設置する
サーバーに設置するときは、1と2を同階層においておきましょう。
別階層でもたぶん動くとおもうんですが、マニュアルでそうなってた気がするので。
クライアント側の準備
■1)Flaファイルでapplicationupdater_ui.swcをひもづける
プログラムファイルの中にあるapplicationupdater_ui.swcをコピーして、プロジェクトの中に入れておきます。
もとデータのありか
C:\Program Files (x86)\Adobe\Adobe Flash CS4\AIK1.5\frameworks\libs\air\applicationupdater_ui.swc
これをlibsとかいうフォルダでも作って、Flashからひもづけます。
■2)ASでApplicationUpdaterUIの設定をする
package { import air.update.ApplicationUpdaterUI; import air.update.events.UpdateEvent; import flash.display.Sprite; import flash.events.Event; /** * ... * @author KinkumaDesign */ public class Main extends Sprite { private var _updateUI:ApplicationUpdaterUI; public function Main() { addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event):void { removeEventListener(Event.ADDED_TO_STAGE, init); initUpdateUI(); } private function initUpdateUI():void { _updateUI = new ApplicationUpdaterUI(); //アップデートXMLのパス(絶対パス) これのみ必須であとは任意 _updateUI.updateURL = "http://www.kuma-de.com/hoge/fuga/update.xml"; //新しい更新を周期的にチェックする間隔(日)。 _updateUI.delay = 1; //[アップデートの有無をチェック]、[アップデートがありません]、 //および [アップデートエラー] ダイアログボックスの表示 _updateUI.isCheckForUpdateVisible = false; //[アップデートのダウンロード] ダイアログボックスの表示 _updateUI.isDownloadProgressVisible = true; //[アップデートのダウンロード] ダイアログボックスの表示 _updateUI.isDownloadUpdateVisible = true; //[アップデートのインストール] ダイアログボックスの表示 _updateUI.isInstallUpdateVisible = true; //初期化イベントの登録(したければ) _updateUI.addEventListener(UpdateEvent.INITIALIZED, updateUIInitHD); //初期化 _updateUI.initialize(); } private function updateUIInitHD(e:UpdateEvent):void { _updateUI.addEventListener(UpdateEvent.INITIALIZED, updateUIInitHD); trace('init complete'); } } }
このうち、delayの間隔は任意ですが、デバッグでは1日ごとに確認するのも不便なので、
参考までに日単位に直した時間いろいろを記載しておきます。
1時間: 0.041667
1分: 0.000694
30秒: 0.000347
15秒: 0.000173
10秒: 0.000057
_updateUI.initialize(); をしたタイミングで、delayの間隔と前回更新XMLを読みにいった時間を見比べて、
自動で更新動作が始まります。
うまくいくと、一番上の方にアップしておいたサムネのようなダイアログが出て、更新作業が始まります。
参考書籍
そうそう、ついでにAIRの参考書籍のご紹介。
私は以下の本を持ってます。
>> Adobe AIRプロフェッショナルガイド Windows & Macintosh対応 (単行本(ソフトカバー))
クジラ先生の本。AIRが出始めたばかりの頃に書かれてます。
AS3とJSのどちらでも作れるようになってます。
>> Flashで作る AIRアプリケーション レシピブック (Web Designing BOOKS) (単行本(ソフトカバー))
カヤックの本。Web Designingの連載をまとめたものを連載当初のものからリライトしたもの。
広く浅く機能を紹介するのと、実案件のインタビューの2本だて。
アップデート機能や、証明書のことにも触れていて、ざっと内容を把握するのにおすすめ。
>> Adobe AIR クックブック ―プロフェッショナルに学ぶRIAプログラミングの実践 (大型本)
カヤックの本よりもつっこんだ内容を網羅しています。
アップデート機能については、ApplicationUpdaterUIでなく自作グラフィックで作るApplicationUpdaterの方も
紹介されています。また暗号化されたローカルデータの読み書きについても書かれています。
■ 自作iPhoneアプリ 好評発売中!
・フォルメモ - シンプルなフォルダつきメモ帳
・ジッピー電卓 - 消費税や割引もサクサク計算!
■ LINEスタンプ作りました!
毎日使える。とぼけたウサギ