Resguardo

Como publicador del video, recomendamos que evites que tus usuarios que buscan más allá de los anuncios durante el video. Cuando un usuario busca más allá de una pausa publicitaria puedes regresar al inicio de la pausa y luego regresar a su ubicación de búsqueda después de que se complete la pausa publicitaria. Esta se llama "restablecimiento automático".

Como ejemplo, consulta el siguiente diagrama. Si el usuario está mirando un video y decide saltar de la marca de 5 a la de 15 minutos. Sin embargo, hay una pausa publicitaria a los 10 minutos que quieres que lo vean antes de poder ver el contenido después:

Para mostrar esta pausa publicitaria, sigue estos pasos:

  1. Verifica si el usuario realizó un salto que pasó una pausa publicitaria sin mirar. y, si es así, lleva al usuario a la pausa publicitaria.
  2. Una vez finalizada la pausa publicitaria, regresa a su búsqueda original.

En forma de diagrama, se vería así:

Aquí te mostramos cómo implementar este flujo de trabajo en el SDK de IMA de DAI, como se hace en AdvancedExample.

Cómo evitar que una búsqueda deje una pausa publicitaria sin mirar

Verificar si el usuario realizó un salto que pasó una pausa publicitaria sin mirar y, si es así, lleva al usuario a la pausa publicitaria. En el SDK de Android, usa el objeto PlayerControl para detectar la búsqueda. Cuando el usuario realice la búsqueda, activa el método onSeek() de la SampleAdsWrapper implementado por SampleHlsVideoPlayerCallback. Ese método (presentado a continuación) comprueba el punto de inserción antes del tiempo de búsqueda. Si todavía no se reproduce, busca el inicio de esa pausa publicitaria. en lugar de su punto de búsqueda inicial deseado, y guarda ese salto deseado punto 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));
}

Cómo regresar al usuario a su salto original

Ahora, cuando recibas un evento onAdBreakEnded, comprueba si snapBackTime esté establecida. Si es así, lleva al usuario a ese punto en la transmisión, ya que el la pausa que acaban de ver fue el resultado de Snapback:

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