La richiesta e la visualizzazione di annunci ignorabili con l'SDK DAI CAF è un'attività un po' complessa, perché richiede l'identificazione se la combinazione di mittenti e destinatari in uso è in grado di visualizzare e interagire con un pulsante Salta.
L'SDK farà automaticamente il possibile per rilevare se il destinatario corrente ha la capacità di eseguire il rendering e interagire direttamente con un pulsante Salta. Tuttavia, il publisher deve determinare se uno dei mittenti associati può visualizzare annunci ignorabili attivando/disattivando l'attributo imaRequestData.senderCanSkip
.
In tutti gli esempi per l'SDK DAI CAF, mittenteCanSkip viene trasmesso direttamente dal mittente come parte dell'oggetto multimediale. Si tratta di un'implementazione volutamente semplificata che funziona bene per un singolo mittente, ma nelle applicazioni reali un ricevitore CAF può essere collegato a più app mittente e il mittente che accoda un file multimediale potrebbe non essere più connesso quando l'oggetto multimediale viene caricato e viene effettuata la richiesta di streaming.
Un destinatario più avanzato potrebbe tenere traccia di quali tipi di mittenti affiliati supportano la possibilità di ignorare e quali no e, al momento del caricamento, controllerà se al momento sono presenti mittenti con cui è possibile ignorare l'annuncio.
Esempio (mittente singolo):
...
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;
};
...
Esempio (supporto di più mittenti):
...
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;
};
...
Essenzialmente, i publisher sono responsabili
dei loro utenti e dei loro e poiché è possibile che tutti i mittenti ignorabili possano disconnettersi tra il momento in cui viene effettuata la richiesta di streaming e quando viene riprodotto l'annuncio, è consigliabile collegare un gestore all'evento STARTED
per verificare se un annuncio è ignorabile e se sia il mittente che il destinatario non sono in grado di supportare la possibilità di ignorare. Il gestore potrebbe saltare automaticamente questi annunci, se vengono visualizzati. Un'implementazione così avanzata, tuttavia, esula dall'ambito del supporto del DAI CAF.
Per impostazione predefinita, se si verifica un caso limite di questo tipo, l'utente è comunque tecnicamente in grado di avviare un comando Ignora, collegando prima un mittente che supporta la possibilità di ignorare e facendo clic sul pulsante Salta visualizzato.