Resguardo

Como publicador de videos, recomendamos que evites que los usuarios busquen más allá de tus anuncios durante el video. Si un usuario busca más allá de una pausa publicitaria, puedes llevarlo de regreso al inicio de esa pausa publicitaria y regresarlo a su ubicación de búsqueda una vez que se haya completado esa pausa. Esta función se llama "restablecimiento automático".

Como ejemplo, consulta el siguiente diagrama. El usuario está mirando un video y decide avanzar desde la marca de 5 a 15 minutos. Sin embargo, hay una pausa publicitaria a los 10 minutos que quieres que mire antes de que pueda mirar el contenido después:

Para mostrar esta pausa publicitaria, sigue estos pasos:

  1. Verifica si el usuario ejecutó un salto que pasó más allá de una pausa publicitaria no vista y, de ser así, llévalo de vuelta a la pausa publicitaria.
  2. Una vez que se complete la pausa publicitaria, vuelve a su búsqueda original.

En forma de diagrama, se ve de la siguiente manera:

A continuación, se muestra cómo implementar este flujo de trabajo en el SDK de DAI de IMA, como se hace en AdvancedExample.

Cómo evitar que un salto deje de mirar una pausa publicitaria

Verifica si el usuario ejecutó una búsqueda que pasó después de una pausa publicitaria no vista y, de ser así, llévala a la pausa. En el SDK de Android, usa el objeto PlayerControl para detectar saltos. Cuando el usuario busque, activa el método onSeek() del SampleHlsVideoPlayerCallback implementado por SampleAdsWrapper. Ese método (que se presenta a continuación) verifica el punto de inserción antes del tiempo de búsqueda del usuario. Si no se reproduce, busca al inicio de esa pausa publicitaria en lugar del punto de búsqueda inicial deseado y guárdalo en snapBackTime.

@Override
public void onSeek(int timeMillis) {
  double timeToSeek = timeMillis;
  if (streamManager != null) {
    CuePoint cuePoint =
        streamManager.getPreviousCuePointForStreamTime(timeMillis / 1000);
    if (cuePoint != null && !cuePoint.isPlayed()) {
      snapBackTime = timeToSeek / 1000.0; // Update snapback time.
      // Missed cue point, so snap back to the beginning of cue point.
      timeToSeek = cuePoint.getStartTime() * 1000;
      videoPlayer.seek(Math.round(timeToSeek));
      videoPlayer.setCanSeek(false);
      return;
    }
  }
  videoPlayer.seek(Math.round(timeToSeek));
}

Hacer que el usuario vuelva a su búsqueda original

Ahora, cuando recibas un evento onAdBreakEnded, verifica si se configuró snapBackTime. Si es así, lleva al usuario a ese punto de la transmisión, porque la pausa publicitaria que acaba de ver fue el resultado de un restablecimiento automático:

@Override
public void onAdBreakEnded() {
  // Re-enable player controls.
  videoPlayer.setCanSeek(true);
  videoPlayer.enableControls(true);
  if (snapBackTime > 0) {
    videoPlayer.seek(Math.round(snapBackTime * 1000));
  }
  snapBackTime = 0;
}