Registrador de depuração do Cast

O SDK do receptor da Web fornece a API CastDebugLogger para que os desenvolvedores possam depurar o app receptor da Web e um app complementar Ferramenta CaC (Command and Control) para capturar ou de sistemas operacionais de contêineres.

Inicialização

Para usar a API CastDebugLogger, inclua o seguinte script no seu App receptor da Web logo após o script do SDK dele:

<!-- Web Receiver SDK -->
<script src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
<!-- Cast Debug Logger -->
<script src="//www.gstatic.com/cast/sdk/libs/devtools/debug_layer/caf_receiver_logger.js"></script>

Crie o objeto CastDebugLogger e ative o logger:

const castDebugLogger = cast.debug.CastDebugLogger.getInstance();

const context = cast.framework.CastReceiverContext.getInstance();

context.addEventListener(cast.framework.system.EventType.READY, () => {
  if (!castDebugLogger.debugOverlayElement_) {
      // Enable debug logger and show a 'DEBUG MODE' overlay at top left corner.
      castDebugLogger.setEnabled(true);
  }
});

Quando o registrador de depuração estiver ativado, uma sobreposição que exibe o MODO DE DEPURAÇÃO aparecem no receptor.

Registrar eventos do player

Usando CastDebugLogger, você pode registrar facilmente os eventos do jogador que são disparados por o SDK do receptor da Web e usar diferentes níveis de registrador para registrar os dados de evento. A configuração loggerLevelByEvents leva cast.framework.events.EventType e cast.framework.events.category para especificar os eventos que serão registrados.

Por exemplo, se você quiser saber quando os eventos CORE do jogador são acionados ou se uma mudança de mediaStatus for transmitida, use a seguinte configuração para registrar o eventos:

castDebugLogger.loggerLevelByEvents = {
  'cast.framework.events.category.CORE': cast.framework.LoggerLevel.INFO,
  'cast.framework.events.EventType.MEDIA_STATUS': cast.framework.LoggerLevel.DEBUG
}

Registrar mensagens personalizadas com tags personalizadas

A API CastDebugLogger permite criar mensagens de registro que aparecem nos a sobreposição de depuração do receptor da Web com cores diferentes. Use os seguintes métodos de registro: listados em ordem da prioridade mais alta para a mais baixa:

  • castDebugLogger.error(custom_tag, message);
  • castDebugLogger.warn(custom_tag, message);
  • castDebugLogger.info(custom_tag, message);
  • castDebugLogger.debug(custom_tag, message);

Para cada método de registro, o primeiro parâmetro deve ser uma tag personalizada e O segundo parâmetro é a mensagem de registro. A tag pode ser qualquer string que você ache útil.

Confira um exemplo de como usar o logger de depuração no interceptador LOAD.

const LOG_TAG = 'MyReceiverApp';

playerManager.setMessageInterceptor(
    cast.framework.messages.MessageType.LOAD,
    request => {
        castDebugLogger.debug(LOG_TAG, 'Intercepting LOAD request');

        return new Promise((resolve, reject) => {
            fetchMediaAsset(request.media.contentId).then(
                data => {
                    let item = data[request.media.contentId];
                    if (!item) {
                        castDebugLogger.error(LOG_TAG, 'Content not found');

                        reject();
                    } else {
                        request.media.contentUrl = item.stream.hls;
                        castDebugLogger.info(LOG_TAG,
                            'Playable URL:', request.media.contentUrl);

                        resolve(request);
                    }
                }
            );
        });
    }
);

É possível controlar quais mensagens aparecem na sobreposição de depuração configurando o registro em loggerLevelByTags para cada tag personalizada. Por exemplo, ativar um uma tag personalizada com nível de registro cast.framework.LoggerLevel.DEBUG seria exibida todas as mensagens adicionadas com mensagens de erro, aviso, informação e registro de depuração. Outra exemplo é que ativar uma tag personalizada com o nível WARNING exibiria apenas e as mensagens de registro de aviso.

A configuração loggerLevelByTags é opcional. Se uma tag personalizada não estiver configurada no nível do logger, todas as mensagens de registro serão exibidas na sobreposição de depuração.

const LOG_TAG1 = 'Tag1';
const LOG_TAG2 = 'Tag2';

// Set verbosity level for custom tags
castDebugLogger.loggerLevelByTags = {
    [LOG_TAG1]: cast.framework.LoggerLevel.WARNING,
    [LOG_TAG2]: cast.framework.LoggerLevel.DEBUG,
};
castDebugLogger.debug(LOG_TAG1, 'debug log from tag1');
castDebugLogger.info(LOG_TAG1, 'info log from tag1');
castDebugLogger.warn(LOG_TAG1, 'warn log from tag1');
castDebugLogger.error(LOG_TAG1, 'error log from tag1');

castDebugLogger.debug(LOG_TAG2, 'debug log from tag2');
castDebugLogger.info(LOG_TAG2, 'info log from tag2');
castDebugLogger.warn(LOG_TAG2, 'warn log from tag2');
castDebugLogger.error(LOG_TAG2, 'error log from tag2');

// example outputs:
// [Tag1] [WARN] warn log from tag1
// [Tag1] [ERROR] error log from tag1
// [Tag2] [DEBUG] debug log from tag2
// [Tag2] [INFO] info log from tag2
// [Tag2] [WARN] warn log from tag2
// [Tag2] [ERROR] error log from tag2

Sobreposição de depuração

O logger de depuração do Cast fornece uma sobreposição de depuração no receptor da Web para mostrar as mensagens de registro personalizadas. Usar showDebugLogs para alternar a sobreposição de depuração e clearDebugLogs para limpar as mensagens de registro na sobreposição.

Lembrete: use showDebugLogs e clearDebugLogs depois que castDebugLogger for ativado.

const context = cast.framework.CastReceiverContext.getInstance();

context.addEventListener(cast.framework.system.EventType.READY, () => {
  if (!castDebugLogger.debugOverlayElement_) {
      // Enable debug logger and show a 'DEBUG MODE' overlay at top left corner.
      castDebugLogger.setEnabled(true);
      // Show debug overlay
      castDebugLogger.showDebugLogs(true);
      // Clear log messages on debug overlay
      castDebugLogger.clearDebugLogs();
  }
});