解決 main:play 出現在廣告之間的問題

問題

在某些追蹤情況下,您可能會遭遇 main:play 呼叫意外出現在某個廣告的結尾與下一個廣告的開始之間的情況。如果廣告完成呼叫與下一個廣告開始呼叫之間的延遲超過 250 毫秒,Media SDK 便會回復到傳送 main:play 呼叫。如果這個回復到 main:play 的動作發生在前段廣告插播期間,內容開始量度的設定可能會過早。

Media SDK 會將前述廣告間的間隙解讀為主要內容,因為它與任何廣告內容並無重疊之處。Media SDK 沒有任何已設定的廣告資訊,而且播放器正處於播放狀態。如果沒有廣告資訊,而且播放器處於播放狀態,Media SDK 預設會將間隙的持續時間視為主要內容。它不能將播放持續期間視為空的廣告資訊。

IDENTIFICATION

在使用 Adobe Debug 或 Charles 之類的封包 Sniffer 時,如果您在前段廣告插播期間發現以下順序的心率呼叫:

  • 工作階段開始: 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,緊接著呼叫第二個廣告的 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:AdBreakCompletetrackEvent:AdComplete 的設定。

略過廣告時:

  • 呼叫 trackEvent(MediaHeartbeat.Event.AdSkip);.

廣告插播完成時:

  • 呼叫trackEvent(MediaHeartbeat.Event.AdComplete);

    注意

    如果您已在前述最後一個 trackEvent:AdComplete 呼叫時執行本步驟,可以予以忽略。

  • 呼叫 trackEvent(MediaHeartbeat.Event.AdBreakComplete);.

本頁內容