O SDK do receptor da Web fornece a API CastDebuglogger para que os desenvolvedores depurem facilmente o app receptor da Web e uma ferramenta de controle e controle (CaC, na sigla em inglês) complementar para capturar registros.
Inicialização
Para usar a API CastDebuglogger, inclua o script abaixo no app Web Receiver logo após o script do SDK do receptor da Web:
<!-- 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 gerador de registros de depuração estiver ativado, uma sobreposição com o MODO DE DEPURAÇÃO será exibida no receptor.
Registrar eventos do player
Com CastDebugLogger
, você pode facilmente registrar eventos do jogador que são disparados pelo
SDK do receptor da Web e usar diferentes níveis de geração de registros para registrar os dados do evento.
A configuração loggerLevelByEvents
usa 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 serão acionados
ou se uma mudança em mediaStatus
for transmitida, use a seguinte configuração para registrar
os 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 na sobreposição de depuração do receptor da Web com cores diferentes. Use os seguintes métodos de registro, listados em ordem decrescente de prioridade:
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 precisa ser uma tag personalizada, e o segundo é a mensagem de registro. A tag pode ser qualquer string que você considere útil.
Veja 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);
}
}
);
});
}
);
Você pode controlar quais mensagens aparecem na sobreposição de depuração definindo o nível de registro em loggerLevelByTags
para cada tag personalizada. Por exemplo, ativar uma tag personalizada com o nível de registro cast.framework.LoggerLevel.DEBUG
exibirá todas as mensagens adicionadas com mensagens de erro, aviso, informações e registro de depuração. Outro exemplo é que ativar uma tag personalizada com o nível WARNING
exibirá apenas mensagens de registro de erro e de aviso.
A configuração loggerLevelByTags
é opcional. Se uma tag personalizada não estiver configurada para o nível de logger, todas as mensagens de registro vão ser 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
Depurar sobreposição
O Cast Debug Deploy fornece uma sobreposição de depuração no receptor da Web para mostrar as mensagens de registro personalizadas. Use 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 o castDebugDebugLogger estiver 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();
}
});