Resguardo

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

A modo de ejemplo, consulta el siguiente diagrama. Cuando el usuario mira un video, decide saltar de la marca de 5 a 15 minutos. Sin embargo, hay una pausa publicitaria a los 10 minutos que deseas que miren antes de que puedan mirar el contenido después:

Para mostrar esta pausa publicitaria, sigue estos pasos:

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

En forma de diagrama, se ve así:

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

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

Verifica si el usuario ejecutó una búsqueda que pasó después de una pausa publicitaria no vista y, de ser así, llévalo de vuelta a la pausa publicitaria. En el SDK de Android, usa el objeto PlayerControl para detectar saltos. Cuando el usuario lo 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 comienzo 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, ya que la pausa publicitaria que acaba de ver fue el resultado de la recuperación automática:

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