Posibilidad de omitir

Solicitar y mostrar anuncios que se pueden omitir con el SDK de DAI de CAF es una tarea compleja, ya que requiere identificar si la combinación de remitentes y receptores en uso tiene la capacidad de mostrar anuncios e interactuar con un botón "Omitir".

El SDK hará su mejor esfuerzo automáticamente para detectar si el receptor actual puede renderizar e interactuar directamente con un botón de omisión. Sin embargo, debe activar o desactivar el atributo imaRequestData.senderCanSkip para determinar si alguno de los remitentes adjuntos puede mostrar anuncios que se pueden omitir.

En todos los ejemplos para el SDK de DAI de CAF, remitenteCanSkip se pasa directamente desde el remitente, como parte del objeto de medios. Esta es una implementación simplificada a propósito que funciona bien para un solo remitente, pero en aplicaciones del mundo real, es posible que un receptor de CAF se pueda conectar a varias apps emisoras y que el remitente que ponga en cola un archivo multimedia ya no esté conectado cuando se cargue ese objeto multimedia y se realice la solicitud de transmisión.

Un receptor más avanzado podría hacer un seguimiento de los tipos de remitentes afiliados que admiten omisión y cuáles no, y comprobaría en el momento de la carga si hay algún remitente con capacidad de omisión que esté conectado actualmente al receptor.

Ejemplo (sendero único):

...

    let getStreamRequest = (request) => {
      const imaRequestData = request.media.customData;
      let streamRequest = null;
      if (imaRequestData.assetKey) {
        // Live stream
        streamRequest = new google.ima.cast.dai.api.LiveStreamRequest();
        streamRequest.assetKey = imaRequestData.assetKey;
      } else if (imaRequestData.contentSourceId) {
        // VOD stream
        streamRequest = new google.ima.cast.dai.api.VODStreamRequest();
        streamRequest.contentSourceId = imaRequestData.contentSourceId;
        streamRequest.videoId = imaRequestData.videoId;
      }
      if (streamRequest && imarequestdata.ApiKey) {
        streamRequest.ApiKey = imarequestdata.ApiKey;
      }
      if (streamRequest && imarequestdata.senderCanSkip) {
        streamRequest.senderCanSkip = imaRequestData.senderCanSkip;
      }
      return streamRequest;
    };
...

Ejemplo (compatibilidad con varios remitentes):

...

    let getStreamRequest = (request) => {
      const imaRequestData = request.media.customData;
      let streamRequest = null;
      if (imaRequestData.assetKey) {
        // Live stream
        streamRequest = new google.ima.cast.dai.api.LiveStreamRequest();
        streamRequest.assetKey = imaRequestData.assetKey;
      } else if (imaRequestData.contentSourceId) {
        // VOD stream
        streamRequest = new google.ima.cast.dai.api.VODStreamRequest();
        streamRequest.contentSourceId = imaRequestData.contentSourceId;
        streamRequest.videoId = imaRequestData.videoId;
      }
      if (streamRequest && imarequestdata.ApiKey) {
        streamRequest.ApiKey = imarequestdata.ApiKey;
      }

      let senders = castContext.getSenders();
      let senderCanSkip = (sender) => {
        const skippableUserAgents = [
          "iOS CastSDK",
          "Android CastSDK"
        ];
        // trim user agent to just include device
        let userAgent = sender.userAgent.explode(',')[0];
        return skippableUserAgents.includes(userAgent);
      };
      if (streamRequest && senders.some(senderCanSkip)) {
        streamRequest.senderCanSkip = imarequestdata.senderCanSkip;
      }
      return streamRequest;
    };

...

En última instancia, los publicadores son responsables de la experiencia de sus usuarios y, como es posible que todos los remitentes que se pueden omitir se desconecten entre el momento en que se realiza la solicitud de transmisión y el momento en que se reproduce el anuncio, recomendamos que adjuntes un controlador al evento STARTED que verificará si un anuncio se puede omitir, y tanto el remitente como el receptor no puedan admitir la omisión. Ese controlador podría omitir automáticamente esos anuncios, si aparecen. Sin embargo, una implementación tan avanzada está fuera del alcance de la asistencia de DAI del CAF.

De forma predeterminada, si se produce un caso límite, el usuario aún puede iniciar una omisión técnicamente. Para ello, primero debe conectar un remitente que admita omisión y, luego, hacer clic en el botón para omitir que aparece.