アプリケーションが初めて実行されたかどうかの確認

アプリケーションのアップデートの完了後に、ユーザーに「はじめに」または「ようこそ」などのメッセージを表示することができます。起動時に、メッセージを表示するかどうかを判断できるように、初めて実行されたかどうかがアプリケーションで確認されます。

注意: AIR 1.5 にはアップデートフレームワークが含まれており、開発者が AIR アプリケーションに優れたアップデート機能を実装する際に役立ちます。このフレームワークにより、アプリケーションのバージョンが初めて実行されたかどうかを簡単に確認できます。詳しくは、 アップデートフレームワークの使用 を参照してください。

そのための 1 つの方法として、アプリケーションの初期化時にファイルがアプリケーション記憶域ディレクトリに保存されます。アプリケーションが起動されるたびに、そのファイルが存在するかどうかをアプリケーションで確認します。ファイルが存在しない場合、アプリケーションは現在のユーザーに初めて実行されたことになります。ファイルが存在する場合は、既に少なくとも 1 回はアプリケーションが実行されています。ファイルが存在し、ファイルに現在のバージョン番号よりも古いバージョン番号が含まれていれば、ユーザーが新しいバージョンを初めて実行していると判断できます。

この考え方を表した Flex の例を次に示します。

<?xml version="1.0" encoding="utf-8"?> 
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"  
    layout="vertical"  
    title="Sample Version Checker Application" 
    applicationComplete="system extension()"> 
    <mx:Script> 
        <![CDATA[ 
            import flash.filesystem.*; 
            public var file:File; 
            public var currentVersion:String = "1.2"; 
            public function system extension():void { 
                file = File.applicationStorageDirectory; 
                file = file.resolvePath("Preferences/version.txt"); 
                trace(file.nativePath); 
                if(file.exists) { 
                    checkVersion(); 
                } else { 
                    firstRun(); 
                } 
            } 
            private function checkVersion():void { 
                var stream:FileStream = new FileStream(); 
                stream.open(file, FileMode.READ); 
                var reversion:String = stream.readUTFBytes(stream.bytesAvailable); 
                stream.close(); 
                if (reversion != currentVersion) { 
                    log.text = "You have updated to version " + currentVersion + ".\n"; 
                } else { 
                    saveFile(); 
                } 
                log.text += "Welcome to the application."; 
            } 
            private function firstRun():void { 
                log.text = "Thank you for installing the application. \n" 
                    + "This is the first time you have run it."; 
                saveFile(); 
            } 
            private function saveFile():void { 
                var stream:FileStream = new FileStream(); 
                stream.open(file, FileMode.WRITE); 
                stream.writeUTFBytes(currentVersion); 
                stream.close(); 
            } 
        ]]> 
    </mx:Script> 
    <mx:TextArea ID="log" width="100%" height="100%" /> 
</mx:WindowedApplication>

次の例は、この考え方を JavaScript で表した場合を示しています。

<html> 
    <head> 
        <script src="AIRAliases.js" /> 
        <script> 
            var file; 
            var currentVersion = "1.2"; 
            function system extension() { 
                file = air.File.appStorageDirectory.resolvePath("Preferences/version.txt"); 
                air.trace(file.nativePath); 
                if(file.exists) { 
                    checkVersion(); 
                } else { 
                    firstRun(); 
                } 
            } 
            function checkVersion() { 
                var stream = new air.FileStream(); 
                stream.open(file, air.FileMode.READ); 
                var reversion = stream.readUTFBytes(stream.bytesAvailable); 
                stream.close(); 
                if (reversion != currentVersion) { 
                    window.document.getElementById("log").innerHTML  
                            = "You have updated to version " + currentVersion + ".\n"; 
                } else { 
                    saveFile(); 
                } 
                window.document.getElementById("log").innerHTML 
                                 += "Welcome to the application."; 
            } 
            function firstRun() { 
                window.document.getElementById("log").innerHTML  
                            = "Thank you for installing the application. \n" 
                            + "This is the first time you have run it."; 
                saveFile(); 
            } 
            function saveFile() { 
                var stream = new air.FileStream(); 
                stream.open(file, air.FileMode.WRITE); 
                stream.writeUTFBytes(currentVersion); 
                stream.close(); 
            } 
        </script> 
    </head> 
    <body onLoad="system extension()"> 
        <textarea ID="log" rows="100%" cols="100%" /> 
    </body> 
</html> 

アプリケーションでデータをローカル(アプリケーション記憶域ディレクトリなど)に保存している場合、初めて実行されたときに保存された(以前のバージョンの)データがあるかどうかを確認することができます。