Solicitar y mostrar anuncios que se pueden omitir con el SDK de DAI de CAF es una tarea un poco compleja, ya que requiere identificar si la combinación de remitentes y receptores en uso puede mostrar un botón de omisión y poder interactuar con él.
El SDK hará todo lo posible automáticamente para detectar si el receptor actual tiene la capacidad de renderizar e interactuar con un botón de omisión directamente. Sin embargo, el publicador debe activar o desactivar el atributo imaRequestData.senderCanSkip
para determinar si alguno de los remitentes adjuntos puede mostrar anuncios que se pueden omitir.
En todas las muestras del SDK de DAI de CAF, senderCanSkip se pasa directamente desde el remitente, como parte del objeto multimedia. Esta es una implementación simplificada a propósito que funciona bien para un solo remitente, pero en aplicaciones reales, un receptor de CAF puede estar conectado a varias apps de remitente, y el remitente que pone en cola un archivo multimedia puede dejar de estar conectado cuando se carga ese objeto multimedia y se realiza la solicitud de transmisión.
Un receptor más avanzado podría realizar un seguimiento de qué tipos de remitentes afiliados admiten la omisión y cuáles no, y verificaría en el momento de la carga para ver si algún remitente con capacidad de omisión está actualmente conectado al receptor.
Ejemplo (un solo remitente):
...
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 editores son responsables de la seguridad 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, te recomendamos que adjuntes un controlador al evento STARTED
que verificará si un anuncio se puede omitir y si tanto el remitente como el receptor no admiten la omisión. Ese controlador podría omitir automáticamente esos anuncios, si aparecen. Sin embargo, esta implementación avanzada está fuera del alcance de la asistencia de la DAI de CAF.
De forma predeterminada, si se produce este caso límite, el usuario técnicamente aún puede iniciar una omisión. Para ello, primero conectará un remitente que admita la omisión y, luego, hará clic en el botón de omisión que aparece.