Überspringbarkeit

Das Anfordern und Einblenden überspringbarer Anzeigen mit dem CAF-SDK für die dynamische Anzeigenbereitstellung ist etwas komplex, da dabei ermittelt werden muss, ob die Kombination aus verwendeten Absendern und Empfängern die Schaltfläche „Überspringen“ anzeigen und mit ihr interagieren kann.

Das SDK unternimmt automatisch alles, um zu erkennen, ob der aktuelle Empfänger die Schaltfläche zum Überspringen rendern und direkt damit interagieren kann. Der Publisher muss jedoch festlegen, ob einer der angehängten Absender überspringbare Anzeigen präsentieren kann, indem er das Attribut imaRequestData.senderCanSkip umschaltet.

In allen Beispielen für das CAF-SDK für die dynamische Anzeigenbereitstellung wird „senderCanSkip“ direkt vom Absender als Teil des Medienobjekts übergeben werden. Dies ist eine absichtlich vereinfachte Implementierung, die für einen einzelnen Absender gut funktioniert. In der Praxis kann jedoch ein CAF-Empfänger mit mehreren Absender-Apps verbunden werden. Der Absender, der eine Mediendatei in die Warteschlange stellt, ist möglicherweise nicht mehr verbunden, wenn das Medienobjekt geladen und die Streamanfrage gestellt wurde.

Ein erweiterter Empfänger könnte im Auge behalten, welche verknüpften Absendertypen das Überspringen unterstützen und welche nicht. Außerdem würde er bei der Ladezeit prüfen, ob derzeit überspringbare Empfänger an den Empfänger angehängt sind.

Beispiel (Einzelsender):

...

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

Beispiel (Support für mehrere Absender):

...

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

...

Letztendlich sind die Publisher selbst dafür verantwortlich, dass alle überspringbaren Absender die Verbindung zwischen dem Zeitpunkt der Streamanfrage und der Wiedergabe der Anzeige unterbrechen können. Deshalb sollten Sie dem STARTED-Ereignis einen Handler hinzufügen, mit dem geprüft wird, ob eine Anzeige überspringbar ist und sowohl der Absender als auch der Empfänger die Überspringbarkeit nicht unterstützen können. Diese Handler könnten solche Anzeigen automatisch überspringen, wenn sie eingeblendet werden. Eine solche erweiterte Implementierung würde jedoch den Support für die dynamische Anzeigenbereitstellung (CAF) nicht unterstützen.

In solchen Fällen kann der Nutzer jedoch standardmäßig eine Anfrage überspringen. Dazu verbindet er zuerst einen Absender, der die Überspringbarkeit unterstützt, und klickt dann auf die Schaltfläche „Überspringen“.