IMA DAI SDK'sını kullanmaya başlama

İlgilendiğiniz DAI çözümünü seçme

Tam hizmet DAI

Bu kılavuzda, IMA CAF DAI SDK kullanılarak DAI akışının nasıl oynatılacağı gösterilmektedir. Tamamlanmış bir örnek entegrasyonu görüntülemek veya takip etmek isterseniz örneği indirin.

Bu kılavuzu kullanmadan önce Chromecast Uygulama Çerçevesi'nin Web Alıcısı protokolü hakkında bilgi sahibi olduğunuzdan emin olun. Bu kılavuzda, mesaj önleyiciler ve mediaInformation nesneleri gibi CAF alıcı kavramlarının ve bir CAF göndericisini emüle etmek için Cast Command and Control aracını kullanma konusunda bilgi sahibi olunduğu varsayılır.

IMA DAI'yı kullanmak için Ad Manager 360 hesabınızın olması gerekir. Ad Manager hesabınız varsa daha ayrıntılı bilgi için hesap yöneticinizle iletişime geçin. Ad Manager'a kaydolma hakkında bilgi için Ad Manager Yardım Merkezi'ni ziyaret edin.

Diğer platformlarla entegrasyon veya IMA istemci tarafı SDK'larını kullanma hakkında bilgi için Interactive Media Ads SDK'ları bölümüne bakın.

CAF DAI'ya genel bakış

DAI'nın IMA CAF DAI SDK'sını kullanarak uygulanması bu kılavuzda gösterildiği gibi iki ana bileşenden oluşur:

  • StreamRequest: Google'ın reklamcılık sunucularına akış isteğini tanımlayan bir nesnedir. Akış istekleri iki temel türde olur:

    • LiveStreamRequest: Öğe Anahtarı ile isteğe bağlı API anahtarı ve diğer isteğe bağlı parametreleri belirtir.
    • VODStreamRequest: Bir İçerik Kaynağı Kimliği, Video Kimliği, isteğe bağlı API anahtarı ve diğer isteğe bağlı parametreleri belirtir.
  • StreamManager: Video akışı ile IMA DAI SDK'sı arasındaki iletişimi (izleme ping'lerini etkinleştirme ve akış etkinliklerini yayıncıya iletme gibi) işleyen bir nesne.

Ön koşullar

Gönderenin MediaInfo nesnelerini yapılandırma

Öncelikle, gönderen uygulamanızın MediaInfo nesnesini aşağıdaki alanları içerecek şekilde yapılandırın:

contentId Bu medya öğesi için benzersiz bir tanımlayıcı
contentUrl DAI StreamRequest herhangi bir nedenle başarısız olursa yüklenecek yedek akış URL'si
streamType Canlı yayınlar için bu değer "LIVE" olarak, VOD akışları için ise "BUFFERED" olarak ayarlanmalıdır
customData assetKey Yalnızca canlı yayınlar. Yüklenecek canlı yayını tanımlar
contentSourceId Yalnızca VOD akışları. İstenen akışı içeren medya feed'ini tanımlar.
videoId Yalnızca VOD akışları. Belirtilen medya feed'i içinde istenen akışı tanımlar.
ApiKey Akış URL'sini IMA DAI SDK'sından almak için gerekli olabilecek isteğe bağlı bir API anahtarı
senderCanSkip Alıcıya, gönderen cihazın atla düğmesi gösterip göstermediğini bildiren ve atlanabilir reklam desteğini etkinleştiren boole değeridir.

Yayın komutu ve kontrol aracında bu değerleri yapılandırmak için Load Media (Medya Yükle) sekmesini tıklayın ve özel yükleme isteği türünü LOAD olarak ayarlayın. Daha sonra metin alanındaki JSON verilerini aşağıdaki JSON nesnelerinden biriyle değiştirin:

CANLI

{
  "media": {
    "contentId": "bbb",
    "contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/bbb.m3u8",
    "streamType": "LIVE",
    "customData": {
      "assetKey": "sN_IYUG8STe1ZzhIIE_ksA",
      "ApiKey": "",
      "senderCanSkip": true
    }
  },
  "credentials": "testCredentials"
}

Seç-izle

{
  "media": {
    "contentId": "tos",
    "contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/tos.m3u8",
    "streamType": "BUFFERED",
    "customData": {
      "contentSourceId": "2548831",
      "videoId": "tears-of-steel",
      "ApiKey": "",
      "senderCanSkip": true
    }
  },
  "credentials": "testCredentials"
}

Bu özel yükleme isteği nesnesi, aşağıdaki adımları test etmek için alıcıya gönderilebilir.

Temel bir CAF alıcısı oluşturma

CAF SDK Temel Alıcı Kılavuzu'nu uygulayarak temel bir web alıcısı oluşturun.

Alıcının kodu aşağıdaki gibi görünmelidir:

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js">
  </script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    cast.framework.CastReceiverContext.getInstance().start();
  </script>
</body>
</html>

IMA DAI SDK'sını içe aktarın ve Oynatıcı Yöneticisi'ni edinin

CAF için IMA DAI SDK'sını web alıcınıza, komut dosyasının CAF'sini yükledikten hemen sonra içe aktarmak üzere bir komut dosyası etiketi ekleyin. CAF DAI SDK'sı kalıcıdır. Bu nedenle, belirli bir sürüm ayarlamanıza gerek yoktur. Ardından, izleyen komut dosyası etiketinde alıcı bağlamını ve oynatıcı yöneticisini sabit değerler olarak kaydedip alıcıyı başlatın.

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();

    castContext.start();
  </script>
</body>
</html>

IMA Stream Manager'ı başlatma

CAF DAI SDK'sının Akış Yöneticisi'ni başlatın.

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();
    const streamManager = new google.ima.cast.dai.api.StreamManager();

    castContext.start();
  </script>
</body>
</html>

Yükleme mesajı önleyiciyi oluşturma

CAF DAI SDK'sı, akış isteklerinde bulunmak ve içerik URL'sini nihai DAI akışıyla değiştirmek için CAF yükleme mesajı engelleyiciyi kullanır. Mesaj engelleyici, reklam aralarını ayarlama, akış isteğinde bulunma ve mevcut contentURL değerini değiştirme işlemlerini gerçekleştiren streamManager.requestStream() yöntemini çağırır.

Yalnızca bir yükleme mesajı engelleyici olabilir. Bu nedenle, uygulamanız önleyicinin kullanılmasını gerektiriyorsa, aynı geri çağırmaya herhangi bir özel işlev eklemeniz gerekir.

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();
    const streamManager = new google.ima.cast.dai.api.StreamManager();

    const getStreamRequest = (request) => null;

    playerManager.setMessageInterceptor(
        cast.framework.messages.MessageType.LOAD, (request) => {
          return streamManager.requestStream(request, getStreamRequest(request))
              .then((request) => {
                this.broadcast('Stream request successful.');
                return Promise.resolve(request);
              })
              .catch((error) => {
                this.broadcast('Stream request failed.');
                return Promise.resolve(request);
              });
        });

    castContext.start();
  </script>
</body>
</html>

Akış isteğini oluşturma

CAF DAI entegrasyonunuzu tamamlamak için gönderenden gelen mediaInfo nesnesine eklenen verileri kullanarak akış isteğinizi oluşturmanız gerekir.

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();
    const streamManager = new google.ima.cast.dai.api.StreamManager();

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

    playerManager.setMessageInterceptor(
        cast.framework.messages.MessageType.LOAD, (request) => {
          return streamManager.requestStream(request, getStreamRequest(request))
              .then((request) => {
                return Promise.resolve(request);
              })
              .catch((error) => {
                this.broadcast('Stream request failed.');
                return Promise.resolve(request);
              });
        });

    castContext.start();
  </script>
</body>
</html>

Artık Google'ın CAF DAI SDK'sı ile DAI akışlarını isteyebilir ve oynatabilirsiniz. Daha gelişmiş SDK özellikleri hakkında bilgi edinmek için diğer kılavuzlara bakın veya örnek alıcı uygulamalarımızı indirin.