處理出現在廣告之間的間隙 resolving-main-play-appearing-between-ads
問題
在某些追蹤情況下,您可能會遭遇 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);
note note NOTE 唯有在上一個廣告未完成時才進行呼叫。請考慮使用布林值來維持上一個廣告的 " isinAd
" 狀態。 -
為廣告資產建立物件例項,如
adObject
。 -
填入廣告中繼資料
adCustomMetadata
。 -
呼叫
trackEvent(MediaHeartbeat.Event.AdStart, adObject, adCustomMetadata);
. -
如果這是前段廣告插播中的第一個廣告,請呼叫
trackPlay()
。
在每個廣告資產完成時:
-
請勿進行呼叫
note note NOTE 如果應用程式知道這是廣告插播中的最後一個廣告,請在這裡呼叫 trackEvent:AdComplete
,並略過trackEvent:AdBreakComplete
中trackEvent:AdComplete
的設定。
略過廣告時:
- 呼叫
trackEvent(MediaHeartbeat.Event.AdSkip);
.
廣告插播完成時:
-
呼叫
trackEvent(MediaHeartbeat.Event.AdComplete);
note note NOTE 如果您已在前述最後一個 trackEvent:AdComplete
呼叫時執行本步驟,可以予以忽略。 -
呼叫
trackEvent(MediaHeartbeat.Event.AdBreakComplete);
.