預設情況下,當用戶搜索廣告時,TVSDK強制播放廣告。 如果從上一個中斷完成所經過的時間在特定分鐘數內,則可以自定義跳過廣告中斷的行為。
當內部尋道要跳過廣告時,回放可能會稍稍停頓。
以下自定義廣告策略選擇器的示例在用戶觀看廣告中斷後的5分鐘(掛鐘時間)內跳過廣告。
擴展預設廣告策略選擇器以覆蓋預設行為。
/**
* Custom ad policy selector.
*/
public class CustomAdPolicySelector extends DefaultAdPolicySelector {
/**
* Default constructor.
*
* @param item Associated media player item.
*/
public function CustomAdPolicySelector(item:MediaPlayerItem) {
super(item);
item.player.addEventListener(AdBreakPlaybackEvent.AD_BREAK_COMPLETED,
onAdBreakCompleted);
}
override public function selectPolicyForAdBreak(adPolicyInfo:AdPolicyInfo):String {
if (shouldPlayAds()) {
return super.selectPolicyForAdBreak(adPolicyInfo);
}
return AdBreakPolicy.SKIP;
}
override public function selectAdBreaksToPlay(adPolicyInfo:AdPolicyInfo):Vector.<AdBreakTimelineItem> {
if (shouldPlayAds()) {
return super.selectAdBreaksToPlay(adPolicyInfo);
}
return new Vector.<AdBreakTimelineItem>();
}
override public function selectPolicyForSeekIntoAd(adPolicyInfo:AdPolicyInfo):String {
if (shouldPlayAds()) {
return super.selectPolicyForSeekIntoAd(adPolicyInfo);
}
return AdPolicy.SKIP_TO_NEXT_AD_IN_AD_BREAK;
}
private function onAdBreakCompleted(event:AdBreakPlaybackEvent):void {
_lastAdBreakPlayedTime = new Date().valueOf();
}
private function shouldPlayAds():Boolean {
var currentTime:Number = new Date().valueOf();
return isNaN(_lastAdBreakPlayedTime)
|| (currentTime - _lastAdBreakPlayedTime > _minimumInterval);
}
private var _lastAdBreakPlayedTime:Number = NaN;
private var _minimumInterval:Number = 300000; // 5 minutes in milliseconds
}
建立使用自定義選擇器的新廣告工廠。
public class CustomAdPolicyContentFactory extends DefaultContentFactory {
private var _adPolicySelector:CustomAdPolicySelector;
/**
* Default constructor.
*/
public function CustomAdPolicyContentFactory() {
}
/**
* @inheritDoc
*/
override protected function doRetrieveAdPolicySelector(item:MediaPlayerItem):AdPolicySelector {
if (!_adPolicySelector) {
_adPolicySelector = new CustomAdPolicySelector(item);
}
return _adPolicySelector;
}
}
註冊要與MediaPlayer一起使用的新廣告工廠類。
var mediaResource:MediaResource =
MediaResource.createFromUrl("https://example.org/stream.m3u8", null);
var mediaPlayerItemConfig:MediaPlayerItemConfig =
PSDKConfig.retrieveMediaPlayerItemConfig();
mediaPlayerItemConfig.advertisingFactory = new CustomAdPolicyContentFactory();
player.replaceCurrentResource(mediaResource, mediaPlayerItemConfig);