一部の広告トラッキングシナリオでは、1 つの広告が終了してから次の広告が開始するまでの間に、予期せず main:play
呼び出しが発生することがあります。広告完了呼び出しと次の広告開始呼び出しの間の遅延が 250 ミリ秒を超えると、メディア SDK は main:play
呼び出しの送信にフォールバックします。この main:play
へのフォールバックがプリロール広告ブレーク中に発生した場合、コンテンツ開始指標が早期に設定されることがあります。
上記のような広告の間隔は、広告コンテンツとのオーバーラップがないので、メディア SDK ではメインコンテンツとして解釈されます。メディア SDK に広告の情報が設定されず、プレーヤーの状態が再生中になります。広告の情報がなく、プレーヤーの状態が再生中の場合、デフォルトでは、メディア SDK はメインコンテンツの前の間隔であると判断します。情報が null の広告の前の再生時間であると判断することはできません。
Adobe Debug または Charles などのネットワークパケットスニファーを使用している場合に、プリロール広告ブレーク中に次のハードビートがこのとおりの順序で呼び出されます。
セッション開始: s:event:type=start
& s:asset:type=main
広告開始: s:event:type=start
& s:asset:type=ad
広告再生: s:event:type=play
& s:asset:type=ad
広告完了: s:event:type=complete
& s:asset:type=ad
メインコンテンツ再生:s:event:type=play
& s:asset:type=main
(想定外)
広告開始: s:event:type=start
& s:asset:type=ad
広告再生: s:event:type=play
& s:asset:type=ad
広告完了: s:event:type=complete
& s:asset:type=ad
メインコンテンツ再生:s:event:type=play
& s:asset:type=main
(想定どおり)
広告完了呼び出しのトリガーを遅らせます。
プレーヤー内から間隔を処理するには、最初の広告の trackEvent:AdComplete
の呼び出しを遅らせ、その直後に 2 つ目の広告の trackEvent:AdStart
を呼び出します。アプリでは、最初の広告が終了した後の AdComplete
イベントの呼び出しを遅らせる必要があります。必ず、広告ブレークの最後の広告の trackEvent:AdComplete
を呼び出します。プレーヤーが現在の広告アセットが広告ブレークの最後の広告であることを識別できる場合は、trackEvent:AdComplete
を直ちに呼び出します。この解決策では、直前の広告ユニットに関連付けられる広告滞在時間が、1 秒未満ですが増加します。
プリロールを含む、広告ブレークの開始時:
広告ブレークの adBreak
オブジェクトのインスタンス(例えば、adBreakObject
)を作成します。
trackEvent(MediaHeartbeat.Event.AdBreakStart, adBreakObject);
を呼び出します。
すべての広告アセットの開始時:
を呼び出しますtrackEvent(MediaHeartbeat.Event.AdComplete);
これは、前の広告が完了しなかった場合にのみ呼び出してください。ブール値を使用して前の広告の「isinAd
」状態を維持することを検討してください。
広告アセットの広告オブジェクトのインスタンス(例えば、adObject
)を作成します。
広告のメタデータ adCustomMetadata
を設定します。
trackEvent(MediaHeartbeat.Event.AdStart, adObject, adCustomMetadata);
を呼び出します。
これがプリロール広告ブレークの最初の広告である場合は、trackPlay()
を呼び出します。
すべての広告アセットの完了時:
呼び出しをおこないません
アプリケーションが広告ブレークの最後の広告であることを認識している場合は、ここで trackEvent:AdComplete
を呼び出し、trackEvent:AdBreakComplete
で trackEvent:AdComplete
の設定をスキップします。
広告スキップ時:
trackEvent(MediaHeartbeat.Event.AdSkip);
を呼び出します。広告ブレークの完了時:
を呼び出しますtrackEvent(MediaHeartbeat.Event.AdComplete);
最後の trackEvent:AdComplete
呼び出しの一環としてこの手順を既に実行している場合は、この手順をスキップできます。
trackEvent(MediaHeartbeat.Event.AdBreakComplete);
を呼び出します。