Implementa un risolutore di contenuti personalizzato

È possibile implementare i propri risolutori di contenuti in base ai risolutori predefiniti.

Quando il browser TVSDK rileva una nuova opportunità, esegue un'iterazione attraverso i risolutori di contenuti registrati alla ricerca di una che sia in grado di risolvere tale opportunità utilizzando il metodo canResolve . Il primo che restituisce true viene selezionato per risolvere l'opportunità. Se nessun risolutore di contenuti è in grado di farlo, questa opportunità viene ignorata. Poiché il processo di risoluzione dei contenuti è in genere asincrono, il risolutore dei contenuti è responsabile della notifica al browser TVSDK al termine del processo.

Ricorda le seguenti informazioni:

  • Il risolutore dei contenuti chiama client.process per specificare quale operazione timeline deve essere eseguita da TVSDK.

    L’operazione di solito è un posizionamento di interruzione annuncio.

  • Il risolutore dei contenuti chiama client.notifyCompleted se il processo di risoluzione ha esito positivo o client.notifyFailed se il processo non riesce.

  1. Crea un risolutore di opportunità personalizzato.

    /**
      * Class implementing AdobePSDK.ContentResolver interface
    */
    CustomResolver = function () {
    };
    
    CustomResolver.prototype = {
        constructor: CustomResolver,
        configureCallbackFunc: function (item, client) {
        // here you can read any media stream characteristics which
        // might help configure your content resolver like
        // - the media player item configuration through the item.config
        // - the media resource metadata through item.resource.metadata
       },
    
        canResolveCallbackFunc: function (opportunity) {
        // check if the opportunity can be resolved by this resolver
        // if yes return true, otherwise return false
        return true;
       },
    
        resolveCallbackFunc: function (opportunity) {
        // start the resolving process
        // communicate with your custom ad server
    
        // in this example we assume that:
        // - if successful, onResolveCompleted method will be invoked
        // - if failed, onResolveFailed method will be invoked
       },
    
        onResolveCompleted: function (response) {
         try {
            var proposals = [];
            // extract the timeline ad placement from the response
            // and add them to the proposal vector
            // - extract the ad break
            // - calculate the placement (can reuse the _opportunity.placement)
            // var timelineOperation = new AdobePSDK.AdBreakPlacement (adBreak, placement);
            // proposals.push (timelineOperation);
    
            client.process (proposals);
            client.notifyCompleted (_opportunity);
        } catch (error) {
            onResolveFailed (error);
        }
    },
    
        onResolveFailed: function (error) {
          client.notifyFailed (_opportunity);
        }
    
    };
    
  2. Crea la content factory personalizzata che utilizza il risolutore di contenuti personalizzato.

    Ad esempio:

    /**
      * Class implementing AdobePSDK.ContentFactory interface
    */
    CustomContentFactory = function () {
    };
    
    CustomContentFactory.prototype = {
        constructor: CustomContentFactory,
        retrieveResolversCallbackFunc: function (item) {
            var result = [];
            var resource = item.resource;
            if (resource.metadata.containsKey("custom-opportunity-detector")) {
                result.push (new CustomResolver());
            }
            return result;
        },
        …
    };
    
  3. Registra il content factory personalizzato per il flusso multimediale da riprodurre.

    Nel lettore di framework dell'interfaccia utente, puoi specificare una directory di fabbrica del contenuto personalizzata come segue:

    var advertisingFactory = new CustomContentFactory();
    var advertisingMetadata = new AdobePSDK.AdvertisingMetadata();
    // set any parameter you need for custom ad resolver
    // advertisingMetadata.setValue ("customparam", "customvalue");
    
    var metadata = new AdobePSDK.Metadata();
    metadata.setMetadata ("custom-opportunity-detector", advertisingMetadata);
    
    var playerWrapper = ptp.videoPlayer('.videoDiv', {
     player: {
        mediaPlayerItemConfig: {
               advertisingFactory: advertisingFactory
        },
           mediaResource: {
                   resourceUrl:'Specify Resource Url',
                   metadata: metadata
           }
    }
    
    });
    

In questa pagina