Możliwość pominięcia

Wysyłanie i wyświetlanie reklam możliwych do pominięcia za pomocą pakietu SDK CAF DAI to trochę złożone zadanie, ponieważ wymaga określenia, czy kombinacja używanych nadawców i odbiorców może wyświetlać przycisk interakcji oraz z nim korzystać.

SDK automatycznie podejmie odpowiednie działania, aby wykryć, czy bieżący odbiorca ma możliwość bezpośredniego renderowania i korzystania z przycisku pominięcia. Wydawca musi jednak określić, czy którykolwiek z przyłączonych nadawców może wyświetlać reklamy możliwe do pominięcia, przełączając atrybut imaRequestData.senderCanSkip.

We wszystkich próbkach pakietu CAF DAI SDK parametr nadawcyCanSkip jest przekazywany bezpośrednio od nadawcy w ramach obiektu multimedialnego. Jest to celowa, uproszczona implementacja, która sprawdza się w przypadku pojedynczego nadawcy, ale w rzeczywistych aplikacjach odbiornik CAF można podłączyć do wielu aplikacji nadawcy, a nadawca, który umieści plik w kolejce, może nie być już połączony podczas wczytywania tego obiektu multimedialnego i wysyłania żądania strumienia.

Bardziej zaawansowany odbiorca może śledzić, które typy stowarzyszonych nadawców obsługują pomijanie, a które nie, i sprawdzić w czasie sprawdzania, czy z tym odbiornikiem nie są obecnie podłączone jakieś nadawcy, których można pominąć.

Przykład (nadawca):

...

    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;
    };
...

Przykład (obsługa wielu nadawców):

...

    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;
    };

...

Ostatecznie to wydawcy są odpowiedzialni za wrażenia użytkowników, ponieważ wszyscy nadawcy, których reklamy można pominąć, mogą się rozłączyć od momentu przesłania żądania strumienia do wyświetlenia reklamy, możesz też dodać do zdarzenia STARTED moduł obsługi, który sprawdza, czy reklama jest możliwa do pominięcia, a nadawca i odbiorca nie mogą obsługiwać jej pominięcia. Ten moduł obsługi może automatycznie pominąć takie reklamy, jeśli się pojawią. Jednak taka zaawansowana implementacja wykracza poza zakres obsługi DAI DAI.

Domyślnie w takich przypadkach użytkownik wciąż może zainicjować proces pomijania, konfigurując najpierw adres URL nadawcy, który obsługuje pomijanie, a następnie klikając wyświetlany przycisk.