SharedObject を使ってローカルにデータを保存する

| comment (0) | trackback (0)

「ローカル共有オブジェクト(SharedObject)」は、ウェブブラウザでクッキーにデータを蓄積できるのと同様、クライアントマシン上にデータを保存することができます。これは「Flash Cookie」とも呼ばれ、一般的なCookieと同じ様に使用することができます。
ブラウザのクッキーはひとつのサイトで 4KB までしか利用できませんが、SharedObject では 100KB まで使うことができます。

データは SharedObject を作成したドメインと同じドメイン内のFlashムービーによってのみ読み込むことができるようになっています。ですので SharedObject に保存されたクライアントマシン上の情報を他人(他のドメインのムービー)から勝手に覗き込むことはできません。

ウェブサイト上の Flash ムービーに一度アクセスすることによってユーザのコンピュータ上に書き込まれ、このサイトを再度訪問すると、SharedObject に保存された情報をもとにユーザに応じてカスタマイズされた内容が提供することができます。

次の例は、SharedObject のインスタンスを作成し、「name」と「age」の2つの項目を設定してクライアントマシンのローカルディスクに sample.sol という名前でファイルは保存します。

var so:SharedObject = SharedObject.getLocal("sample");
so.data.name = "shunji";
so.data.age = 30;
so.flush;

次の例は、すでに保存されている情報を読み込んでいます。

var so:SharedObject = SharedObject.getLocal("sample");
if (so.size != 0) {
	var myName:String = so.data.name;
	var myAge:String = so.data.age;
}

共有オブジェクトの保存場所は、SharedObject 保存フォルダ内に、ウェブ上にあるFlashムービーのドメイン名から始まる格納フォルダまでのパス(絶対パス)と同じフォルダ階層をつくりその中に拡張子が sol のファイルを生成します。
SharedObject.getLocal メソッドは、すでにローカルディスクに sample.sol が存在すればそれを参照します。 例えば、アドレスが http://yourDomain.com/apps/sharedobject_sample.swf の場合、SharedObject.getLocal メソッドで「sample」という名前の共有オブジェクトを作成すると、ファイルの保存場所は、次の場所になります。

#SharedObjects\<英数字の文字列>\yourDomain.com\apps\sharedobject_sample.swf\sample.sol

※ 「#SharedObjects」の場所は OS によって異なります。

下記の例は、ムービーへのアクセス回数を取得するものです。

try {
	var so:SharedObject = SharedObject.getLocal("sample");
	var flushStatus:String = so.flush();
	
	if (flushStatus == SharedObjectFlushStatus.FLUSHED) {
		if (so.data.count) {
			so.data.count += 1;
			trace(so.data.count.toString() + "回目のアクセスです");
		} else {
			so.data.count = 1;
			trace("初めてのアクセスです");
		}
	} else {
		trace("ディスク領域が不足しています");
	}
} catch (e:Error) {
	trace("エラー");
}

SharedObjectFlushStatus クラスは、SharedObject.flush メソッドの呼び出した時に返されるコードを取得しています。「FLUSHED」が返された場合正常にフラッシュされたことを示します。「PENDING」が返されるのは、共有オブジェクトのディスク領域が不足しているためフラッシュが実行できないときです。

trackback (0)

trackback URL: http://gelsol.sub.jp/core/mt-tb.cgi/21

Post your comment