2011年8月11日木曜日

StageWebViewでセルフ広告


ズッコケGuysのタイトル画面から、「AND MORE APP」というボタンを押すと、App Storeが起動します。そして、Dr. Mandalaというアプリケーションを紹介するようになっています。いわゆるセルフ広告です。

この導線は、紹介するアプリがひとつしかない場合は簡潔で良いのですが、紹介したいアプリが増えてくると問題が生じます。
ネコグラス時計がもう直ぐリリースされるはずなので、ズッコケGuys上でのセルフ広告システムをバージョンアップしました。

セルフ広告は、頻繁に変更できるように、広告データ本体は外部サーバに持たせて、3Gもしくは Wifi 回線から取得します。
まわりくどくなってしまいましたが(笑)、ようするにAIRのStageWebViewクラスを使って、HTMLでセルフ広告を表示する方法にしました。
アプリアイコン(リンク)をタップすると、App Storeが起動して、そのアプリのページまで移動するので、機能的にも問題ありません。


以下が全コードです。
var webView:StageWebView = new StageWebView();
var rect:Rectangle = new Rectangle(0,0,STAGE_WIDTH,STAGE_HEIGHT-30);
webView.viewPort = rect;
webView.stage = stage;
webView.addEventListener(ErrorEvent.ERROR, onWebViewError );
webView.addEventListener(LocationChangeEvent.LOCATION_CHANGING, onWebViewLocChanging );
webView.addEventListener(LocationChangeEvent.LOCATION_CHANGE, onWebViewLocChange );

// ロケールによって読み込むURLを変える
var adUrl:String = Locale.loadString("IDS_AD_URL");
try {
	webView.loadURL(adUrl);
} catch (e:Error) {
	trace(e);
}

function onWebViewLocChange( event:LocationChangeEvent ):void {
	trace("Change to "+ event.location);
	if (event.location != adUrl) {   
		navigateToURL( new URLRequest( event.location ) );
		try { 
			webView.loadURL(adUrl);
		} catch (e:Error) { 
			trace(e);
		}
	}
}

function onWebViewLocChanging( event:LocationChangeEvent ):void {
	trace( "Changing " + event.location);
	event.preventDefault();
	navigateToURL( new URLRequest( event.location ));
}

function onWebViewError( error:ErrorEvent ):void {
	trace( error );
}

気を付けなければならないのは、StageWebView は Spriteクラスなどの表示オブジェクトとは違い、コンテナ先は stage しか選べないということです。
表示プライオリティは、全表示オブジェクトよりも上になってしまうようです。
かなりゴリ押しな実装のようですね(笑)

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...