Désactivation

La demande et l'affichage d'annonces désactivables avec le SDK d'insertion dynamique d'annonce CAF sont des tâches complexes, car elles nécessitent l'identification de la capacité de l'association des expéditeurs et des destinataires à afficher un bouton "Ignorer" et à interagir avec celui-ci.

Le SDK s'efforcera automatiquement de détecter si le récepteur actuel peut afficher le contenu et interagir directement avec le bouton "Ignorer". Toutefois, l'éditeur doit déterminer si l'un des expéditeurs associés peut afficher des annonces désactivables en activant l'attribut imaRequestData.senderCanSkip.

Dans tous les exemples du SDK d'insertion dynamique d'annonce CAF, la valeur "SenderCanSkip" est transmise directement à l'expéditeur en tant qu'objet multimédia. Il s'agit d'une implémentation volontairement simplifiée qui fonctionne bien pour un seul expéditeur. Cependant, dans des applications réelles, un récepteur CAF peut être associé à plusieurs applications d'expéditeur, et l'émetteur qui met un fichier multimédia en file d'attente peut ne plus être connecté lorsque cet objet multimédia est chargé et que la demande de flux est effectuée.

Un récepteur plus avancé peut identifier les types d'expéditeurs affiliés qui ne sont pas concernés et vérifier au moment du chargement si des expéditeurs compatibles avec cette fonctionnalité sont actuellement associés au récepteur.

Exemple (expéditeur unique):

...

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

Exemple (compatibilité avec plusieurs expéditeurs):

...

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

...

En fin de compte, les éditeurs sont responsables de l'expérience de leurs utilisateurs. Étant donné qu'il est possible pour tous les expéditeurs désactivables de se déconnecter entre le moment où la demande de flux est effectuée et le moment où l'annonce est diffusée, vous pouvez associer un gestionnaire à l'événement STARTED qui vérifiera si une annonce est désactivable. Les expéditeurs et les destinataires ne pourront pas non plus ignorer la désactivation. Ce gestionnaire peut ignorer automatiquement ces annonces, si elles apparaissent. Cependant, une telle mise en œuvre avancée dépasse le cadre de l'assistance pour l'insertion dynamique d'annonces de la CAF.

Par défaut, si ce cas particulier se produit, l'utilisateur peut techniquement ignorer une demande en connectant d'abord un expéditeur acceptant cette fonctionnalité, puis en cliquant sur le bouton "Ignorer" qui s'affiche.