Omitir pausas publicitarias durante un período de tiempo

De forma predeterminada, TVSDK fuerza la reproducción de una pausa publicitaria cuando el usuario busca tras una pausa publicitaria. Puede personalizar el comportamiento para omitir una pausa publicitaria si el tiempo transcurrido desde la finalización de una pausa anterior es de un determinado número de minutos.

IMPORTANTE

Cuando hay una búsqueda interna para omitir un anuncio, puede haber una ligera pausa en la reproducción.

El siguiente ejemplo de selector de directiva de publicidad personalizada omite los anuncios en los próximos cinco minutos (hora del reloj del muro) después de que un usuario haya visto una pausa publicitaria.

  1. Amplíe el selector de directivas de publicidad predeterminado para anular el comportamiento predeterminado.

    /**
     * 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
    }
    
  2. Cree una nueva fábrica de publicidad que utilice su selector personalizado.

    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;
        }
    }
    
  3. Registre la nueva clase de fábrica de publicidad que se utilizará con 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);
    

En esta página