Atlanabilirlik

CAF DAI SDK'sı ile atlanabilir reklam isteğinde bulunmak ve göstermek biraz karmaşık bir iştir. Çünkü bu işlem, kullanılan gönderen ve alıcı kombinasyonunun "atla" düğmesini görüntüleme ve bu düğmeyle etkileşim kurma özelliğine sahip olup olmadığının belirlenmesini gerektirir.

SDK, geçerli alıcının doğrudan bir atla düğmesi oluşturup oluşturma özelliğine sahip olup olmadığını tespit etmek için otomatik olarak tüm çabayı gösterir. Ancak yayıncının, imaRequestData.senderCanSkip özelliğini açıp kapatarak ekli gönderenlerden herhangi birinin atlanabilir reklam gösterip gösteremeyeceğini belirlemesi gerekir.

CAF DAI SDK'sının tüm örneklerinde submitCanSkip, medya nesnesinin bir parçası olarak doğrudan gönderenden iletilir. Bu, tek bir gönderen için iyi sonuç veren bilerek basitleştirilmiş bir uygulamadır ancak gerçek dünyadaki uygulamalarda, birden fazla gönderen uygulamasına bir CAF alıcısı bağlanabilir ve bir medya dosyasını sıraya alan gönderen, söz konusu medya nesnesi yüklendiğinde ve akış isteğinde bulunulduğunda artık bağlı olmayabilir.

Daha ileri düzey bir alıcı, ilişkili gönderen türlerinden hangilerinin atlama özelliğini desteklediğini, hangilerinin desteklemediğini takip edebilir ve yükleme sırasında, atlama özelliğine sahip gönderenlerden herhangi birinin alıcıya bağlı olup olmadığını kontrol edebilir.

Örnek (tek gönderen):

...

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

Örnek (birden fazla gönderen desteği):

...

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

...

Yayıncılar, kullanıcılarının deneyim edinin ve tüm atlanabilir gönderenlerin akış isteğinin yapılması ile reklamın oynatılması arasında bağlantının kesilmesi mümkün olduğundan, STARTED etkinliğine reklamın atlanabilir olup olmadığını ve hem gönderenler hem de alıcının atlanabilirliği destekleyip desteklemediğini kontrol edecek bir işleyici ekleyebilirsiniz. Bu işleyici, görünürse bu tür reklamları otomatik olarak atlayabilir. Ancak böyle gelişmiş bir uygulama, CAF DAI desteğinin kapsamı dışındadır.

Varsayılan olarak, bu tür bir uç vaka meydana gelirse kullanıcı, ilk olarak atlanabilirliği destekleyen bir gönderen bağlayıp görüntülenen atla düğmesini tıklayarak teknik olarak bir atlama başlatabilir.