Désactivation

Demander et afficher des annonces désactivables avec le SDK CAF pour l'insertion dynamique d'annonces est une tâche assez complexe, car elle nécessite de déterminer si la combinaison d'expéditeurs et de destinataires utilisés peut afficher un bouton "Ignorer" et interagir avec celui-ci.

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

Dans tous les exemples du SDK CAF pour l'insertion dynamique d'annonces, "senderCanSkip" est transmis directement par l'expéditeur, dans l'objet multimédia. Il s'agit d'une implémentation délibérément simplifiée qui fonctionne bien pour un seul expéditeur. Toutefois, dans des applications réelles, un récepteur CAF peut être associé à plusieurs applications émettrices, et l'expéditeur qui met un fichier multimédia en file d'attente peut ne plus être connecté une fois cet objet multimédia chargé et la requête de flux effectuée.

Un destinataire plus avancé pourrait identifier les types d'expéditeurs affiliés qui acceptent ou non cette fonctionnalité, et vérifiera au moment du chargement si des expéditeurs compatibles avec cette fonctionnalité sont actuellement associés au destinataire.

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 les expéditeurs multiples):

...

    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 et comme il est possible que tous les expéditeurs d'annonces désactivables se déconnectent entre le moment où la demande de flux est effectuée et celui où l'annonce est lue, vous pouvez associer un gestionnaire à l'événement STARTED qui vérifiera si une annonce est désactivable, et si l'expéditeur et le destinataire ne peuvent pas permettre la désactivation. Ce gestionnaire peut ignorer automatiquement les annonces de ce type, si elles apparaissent. Cependant, une telle implémentation avancée dépasse le cadre de l'assistance pour l'insertion dynamique d'annonces CAF.

Par défaut, dans ce cas, l'utilisateur est toujours techniquement en mesure de le désactiver. Pour cela, il doit d'abord connecter un expéditeur compatible, puis cliquer sur le bouton "Ignorer" qui s'affiche.