2016-05-08 8 views
1

のためにサブスクライブする方法を、私はGoogleのIMA pluginvideojsプレーヤー+はIMA広告をグーグル - イベント

video.jsプレーヤーを使用して、いくつかのテストコードを実行しようとしている私は、プラグインの作者が提供する簡単な例を使用: https://github.com/googleads/videojs-ima/tree/master/examples/simple

今、私はいくつかの広告プレーヤーイベントを購読しようとしています。

私は次のようにイベントのために(ラインの変化元のサンプルコードの48+)を購読してみました:

player.one(startEvent, function() { 

    player.ima.onAdStarted_ = function(){ 
     console.log("Ad started"); 
    } 

    player.ima.onAdPlayPauseClick_ = function(){ 
     console.log("Ad clicked"); 
    } 

    player.ima.onAdComplete_ = function(){ 
     console.log("Ad completed"); 
    } 

    player.ima.initializeAdDisplayContainer(); 
    player.ima.requestAds(); 
    player.play(); 
}); 

をそして、それは正しく、イベントをキャプチャしますが、メインプレイヤーが壊れている:後広告が終了しました.IMAコントロールは無効にされていません(メインプレーヤーのコントロールをオーバーレイしています)。ビデオは管理できません。

私は誤ってIMAのイベントの一部をオーバーライドし、それが正常に動作していないと仮定します。

player.one(startEvent, function() { 


    player.ima.initializeAdDisplayContainer(); 
    player.ima.addEventListener("click",function(){ 
     console.log("Ad clicked"); 
    }); 

    player.ima.addEventListener(google.ima.AdEvent.Type.STARTED,function(){ 
     console.log("Ad started"); 
    }); 

    player.ima.addEventListener(google.ima.AdEvent.Type.ALL_ADS_COMPLETED, function(){ 
     console.log("Ad completed"); 
    }); 
    player.ima.requestAds(); 
    player.play(); 
}); 

をしかし、それは働いていない:

私もそのようにイベントリスナーを追加しようとしました。

IMAのイベントを購読する方法は、主に「広告開始済み」、「広告クリック済み」、および「広告終了」イベントですか?

答えて

1

OK、私は私の問題を解決するために管理しました。

videojs-ima.jsファイルにあるプラグインを書き直して、そこにはadsManageradsLoaderのすべての必要なイベントへのアクセス権があります。

I.e. (コードでは、線208で追加):このソリューションは、文書化されていません

adsManager.addEventListener(
    google.ima.AdEvent.Type.STARTED, 
    function(){ 
     console.log("Ad started"); 
    }); 
3

TLDR;

player.on("adsready", function(){ 
    player.ima.addEventListener(google.ima.AdEvent.Type.CLICK, function(){ 
    console.log(">>> ad clicked"); 
    }); 
}); 

あなたはイベントリスナーを追加するとき、adsManagerがされていないので、あなたのコードは動作しません。作成した。 googleads/videojs-imaリポジトリの次のスニペットを見てください。

// https://github.com/googleads/videojs-ima/blob/master/src/videojs.ima.js#L758-L769 
player.ima.addEventListener = function(event, callback) { 
    if (adsManager) { 
    adsManager.addEventListener(event, callback); 
    } 
}; 

次のスニペットを見て、それは広告マネージャの作成の終了時に放出されるので1は、adsreadyイベントに耳を傾ける必要があり、広告マネージャにイベントリスナーを追加できるように。

// https://github.com/googleads/videojs-ima/blob/master/src/videojs.ima.js#L219-L278 
player.ima.onAdsManagerLoaded_ = function(adsManagerLoadedEvent) { 
    adsManager = adsManagerLoadedEvent.getAdsManager(
     contentPlayheadTracker, adsRenderingSettings); 

    // other code 
    // ... 

    player.trigger('adsready'); 
}; 

ためのIMA広告イベントをGoogleに耳を傾ける、あなたは次のように発行されるイベントadsready後にイベントリスナーを追加する必要があります。

player.on("adsready", function(){ 
    player.ima.addEventListener(google.ima.AdEvent.Type.CLICK, function(){ 
    console.log(">>> ad clicked"); 
    }); 
}); 
+0

華麗な答え! – sunki

関連する問題