月別アーカイブ: 2014年12月

[Adobe Analytics] ADBMobileSample-1.1-Android で java.lang.IllegalArgumentException: provider=network エラー

Adobe Mobile SDKのAndroidサンプルアプリをAndroidエミュレーターで起動しようとすると、java.lang.IllegalArgumentException: provider=network というエラーが出てアプリが起動しませんでした。

どうやらエミュレーターではLocationManager.NETWORK_PROVIDERが使えないのですかね?
対策として、LocationManager.NETWORK_PROVIDERが使えない場合は使わない、という元も子もない対策でしのいでます。

MenuActivity.java の 137行目

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);

これが問題なので、下記のようにif文で囲ったらサンプルアプリが起動しました。

if (locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
  locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);
}

参考したサイトは毎度おなじみStack Overflow
Caused by: java.lang.IllegalArgumentException: provider=network

[Adobe Analytics] HTML5動画計測

SiteCatalystの頃から使われている動画計測手法、Milestone型計測を使って、HTML5動画計測を実装したサンプルコードを載せておきます。
Video Tracking Test

ちなみに上記テストページに載せている動画はオープンソースの3DCGソフトウェアBlenderで作成された「Big Buck Bunny」というムービーです。
Big Buck Bunny – Wikipedia, the free encyclopedia

実装したコード:

s.loadModule("Media");
s.Media.trackWhilePlaying = true;
s.Media.segmentByMilestones = true;
s.Media.playerName = "My_HTML5_Player";
s.Media.trackVars="events,eVar11,eVar12";
s.Media.trackEvents="event11,event12,event13";
s.Media.trackMilestones = "25,50,75";
s.Media.trackUsingContextData = true;
s.Media.contextDataMapping = {
	"a.media.name" : "eVar11",
	"a.contentType" : "eVar12",
	"a.media.timePlayed" : "event11",
	"a.media.view" : "event12",
	"a.media.complete" : "event13"
};

function playerHandler(e){
    if (myvideo.currentTime > 0) {
        currentTime = myvideo.currentTime;
    }
    switch(e.type){
        case "play":
            if(!videoOpened){
                s.Media.open(myvideo.src, myvideo.duration, s.Media.playerName);
                s.Media.play(myvideo.src, 0);
            }else{
                s.Media.play(myvideo.src, currentTime);
            }
            videoOpened = true;
	    break;
        case "pause":
            s.Media.stop(myvideo.src, currentTime);
	    break;
        case "ended":
            s.Media.stop(myvideo.src, currentTime);
            s.Media.close(myvideo.src);
	    break;
        default:
	    break;
    }
}

if (document.getElementById("myvideo")) {
	var videoOpened = false;
	var currentTime = 0;
	var myvideo = document.getElementById("myvideo");
	myvideo.addEventListener("loadedmetadata",playerHandler,false);
	myvideo.addEventListener("play",playerHandler,false);
	myvideo.addEventListener("pause",playerHandler,false);
	myvideo.addEventListener("ended",playerHandler,false);
}

新しい計測手法のHeartbeat型計測は別の機会にやってみます。

ドメインを統一

このサイトのURLはwww.kwonline.orgですが、以前はサブドメインなしのkwonline.orgでもアクセス出来ました。

しかし、同じページにURLが二つもあると、Web解析的にもやりづらいのと、検索エンジンに両方のURLがインデックスされてしまいます。
そこで、URLをwww.kwonline.orgで統一する事にしました。

Apacheの.htaccessを使うやり方です。
ルートディレクトリに、下記のような.htaccessファイルを置いてあります。

.htaccess

RewriteEngine On

# Force redirect to www
RewriteCond %{HTTP_HOST} ^kwonline\.org
RewriteRule ^(.*) http://www.kwonline.org/$1 [R=301,L]

この記述により、サブドメなしのkwonline.orgにアクセスしても、強制的にwww.kwonline.orgに301リダイレクトされます。