Mensajería de restricciones de dominio

En este tema, aprenderá cómo mostrar los mensajes de error apropiados cuando no se permite la reproducción de un video debido a restricciones de dominio. De forma predeterminada, Brightcove Player no informa al usuario que un video tiene un dominio restringido.

Resumen

Es posible restringir dónde se puede ver un video a través de restricciones de dominio. La Configuración de restricciones de contenido del reproductor El documento le muestra cómo utilizar Video Cloud para aplicar restricciones de dominio. El documento que está leyendo ahora le indica cómo implementar código para informar a los usuarios que el reproductor está usando restricciones de dominio.

De forma predeterminada, Brightcove Player no informa al usuario que un video que están intentando ver está en un reproductor de dominio restringido. El jugador simplemente muestra una pantalla negra. Si ve la consola, verá lo siguiente.

error de consola de restricción de dominio

Esto no es muy útil, pero si marca la La red pestaña y haga clic en un Nombre que corresponda a su ID de video, luego verifique la Avance pestaña, verá un error más esclarecedor.

pestaña de red de la consola de mensajes de dominio

Este documento implementa una estrategia para que el usuario sepa que el video que está tratando de ver tiene un dominio restringido.

Objeto de error del catálogo de jugadores

La clave para crear un mensaje fácil de usar es la error objeto contenido en Brightcove Player's catalog. A continuación, se muestra un ejemplo de un error de restricción de dominio en una captura de pantalla de la consola de un navegador. Observe que el objeto contiene un data propiedad, que a su vez contiene una matriz. La matriz contendrá el último error que encontró el catálogo al cargar un video. En el ejemplo, verá que el elemento de la matriz informa un problema de restricción de dominio.

objeto de error de catálogo

Manejar bc-catalog-error

Es posible que el manejo de errores en la ready() sección normal del script bloque pueda causar problemas. Por ejemplo, puede ocurrir que el bc-catalog-error evento se pueda enviar antes de que el reproductor esté listo y, si escucha el error en la ready() sección, no podrás manejar el error. Puede que descubra que no hay ningún problema en su código, pero el problema puede depender del navegador, así que tenga cuidado. Por esta razón, el código de manejo de errores en este documento utilizará el one() método de manejo de eventos para escuchar el bc-catalog-error en un bloque de código separado en lugar de dentro del ready() sección.

Mensaje en HTML

Una vez que comprenda la estructura del error que se produce y dónde se ubica, puede usar JavaScript para mostrar un error descriptivo para el usuario. Los pasos básicos de implementación son:

  • Cree un elemento de destino en el que mostrar el mensaje.
  • Asegúrese de que el jugador esté listo para actuar.
  • Verifique si ha ocurrido algún error.
  • Si es así, verifique si el error es un problema de restricción de dominio.
  • En caso afirmativo, muestre el mensaje al usuario.

El siguiente código implementa estos pasos.

  • Línea 8: Inserte un elemento HTML, en este caso un párrafo, en el que inyectar texto; darle al elemento un id con fines de orientación.
  • Línea 13: Utilice el one() método agregar un detector de eventos para el bc-catalog-error evento solo una vez.
  • Línea 16: Utilice un if declaración para asegurarse de que se ha producido algún error.
  • Línea 17: Asigne a una variable la información de error específica del objeto de error del catálogo de Brightcove Player.
  • Línea 18: Utilice un if para asegurarse de que exista la información de error específica Y que el tipo de error sea de restricción de dominio.
  • Línea 19: Inyecte un mensaje de texto apropiado en el elemento HTML creado en la línea 12.
  <video-js id="myPlayerID"
    data-video-id="3495887198001"
    data-account="1507807800001"
    data-player="4c8eb732-ba76-485c-a906-407365721633"
    data-embed="default"
    controls=""></video-js>

    <p id="textTarget"></p>

  <script src="https://players.brightcove.net/1507807800001/4c8eb732-ba76-485c-a906-407365721633_default/index.min.js"></script>

  <script type="text/javascript">
    videojs.getPlayer('myPlayerID').one('bc-catalog-error', function(){
      var myPlayer = this,
        specificError;
      if (myPlayer.catalog.error !== undefined) {
        specificError = myPlayer.catalog.error.data[0];
        if (specificError !== undefined & specificError.error_subcode == "DOMAIN") {
          document.getElementById("textTarget").innerHTML = "The video you are trying to watch cannot be viewed as it is domain restricted.";
        };
      };
    });

    videojs.getPlayer('myPlayerID').ready(function() {
      var myPlayer = this;
      console.log('in ready');
    });
  </script>

La siguiente captura de pantalla muestra el mensaje que se muestra debajo del reproductor.

error debajo del jugador

Mensaje a través del complemento de errores

Es posible que desee que se muestre el mensaje en el reproductor si el video tiene un dominio restringido. Puede hacer esto utilizando el complemento de errores. El complemento de errores se carga automáticamente en el reproductor, por lo que no es necesario realizar explícitamente esa operación. Para obtener detalles sobre el complemento de errores más allá de lo que se mencionará aquí, consulte el Mostrar complemento de mensajes de error documento.

  • Línea 43: Utilice el one() método agregar un detector de eventos para el bc-catalog-error evento solo una vez.
  • Líneas 46-53: Llame al jugador error() método, pasando como un argumento JSON que define el errors información para mostrar. Tenga en cuenta que la elección de -3 porque el código de error es arbitrario, y la única guía es no utilizar un código de error estándar (actualmente 1-5).
  • Línea 57: Llama a error() método para mostrar la información de error personalizada. La lógica utilizada para determinar cuándo se ha producido el error de restricción de dominio es la misma que la anterior. El objeto pasado como argumento define qué mensaje de error mostrar.
  <script type="text/javascript">
    videojs.getPlayer('myPlayerID').one('bc-catalog-error', function(){
      var myPlayer = this,
        specificError;
      myPlayer.errors({
        'errors': {
          '-3': {
            'headline': 'The video you are trying to watch cannot be viewed because of domain restrictions.',
            'type': 'DOMAIN'
          }
        }
      });
      if (typeof(myPlayer.catalog.error) !== 'undefined') {
        specificError = myPlayer.catalog.error.data[0];
        if (specificError !== 'undefined' & specificError.error_subcode == "DOMAIN") {
          myPlayer.error({code:'-3'});
        };
      };
    });

    videojs.getPlayer('myPlayerID').ready(function() {
      var myPlayer = this;
    });
  </script>

La siguiente captura de pantalla muestra la visualización del error definido por el complemento de error.

error definido

Pantalla de error general

Las dos secciones anteriores tratan específicamente sobre la visualización del error generado cuando un video con restricción geográfica se ve desde una ubicación restringida. Algunos errores no proporcionan el nivel de detalle que ofrece la restricción de dominio. Aquí se muestra un ejemplo de objeto de error de este tipo. Note que el datos El campo está vacío, mientras que con el error de restricción de dominio contenía información de error clave.

objeto de error general

El siguiente código muestra cómo mostrar información de catalog.error sin importar el nivel de detalle. En un nivel alto, el código realiza lo siguiente:

  • Comprueba si se ha producido un error de catálogo.
  • Comprueba si en el objeto de error el data El campo contiene información de error específica. Si NO lo hace, el mensaje de error general se inserta en el HTML.
  • Si hay información de error específica Y está relacionada con la restricción de dominio, se inyecta un mensaje apropiado en el HTML.
  • Si hay información de error específica y no está relacionada con la restricción de dominio, el mensaje de error específico se inyecta en el HTML.
  <script type="text/javascript">
    videojs.getPlayer('myPlayerID').one('bc-catalog-error', function(){
      var myPlayer = this,
        specificError;
      if (myPlayer.catalog.error != undefined) {
        specificError = myPlayer.catalog.error.data[0];
        if (specificError == undefined) {
          document.getElementById("textTarget").innerHTML = "The following error has occurred: <strong>" + myPlayer.catalog.error.message + "</strong>";
        } else if (specificError.error_subcode == "DOMAIN") {
          document.getElementById("textTarget").innerHTML = "The video you are trying to watch cannot be viewed because of domain restrictions.";
        } else {
          document.getElementById("textTarget").innerHTML = "The following error has occurred: " + specificError.message;
        };
      };
    });

    videojs.getPlayer('myPlayerID').ready(function() {
      var myPlayer = this;
    });
  </script>

La siguiente captura de pantalla muestra el mensaje de error general que se muestra en HTML. Por supuesto, también puede usar el complemento de errores para mostrar el mensaje, como se muestra en la sección anterior de este documento.

pantalla de mensaje de error general debajo del reproductor