Personalizar relatórios de erros do Firebase Crashlytics


No painel do Crashlytics, clique em um problema e acesse um relatório de eventos detalhado. É possível personalizar esses relatórios para entender melhor o que está acontecendo no app e as circunstâncias em torno dos eventos informados ao Crashlytics.

  • Receba automaticamente registros de navegação estrutural se o app usar o SDK do Firebase para Google Analytics. Com eles, é possível visualizar as ações do usuário antes de um evento coletado pelo Crashlytics no seu app.

  • Desative a geração automática de relatórios de falhas e ative a permissão para geração de relatórios para seus usuários. Por padrão, o Crashlytics coleta automaticamente relatórios de erros para todos os usuários do seu app.

Relatar exceções

Relatar exceções capturadas

Caso você já espere certas exceções, o SDK do Crashlytics pode defini-las como eventos não fatais. Esses eventos são registrados no dispositivo e enviados com o próximo relatório de eventos fatais ou quando o usuário final reinicia o jogo.

Registre exceções em C# usando o seguinte método:

Crashlytics.LogException(Exception ex);

É possível registrar exceções esperadas nos blocos try/catch do seu jogo:

try {
    myMethodThatThrows();
} catch (Exception e) {
   Crashlytics.LogException(e);
   // handle your exception here!
}

Informar exceções não capturadas

Para exceções não capturadas que não apresentam falhas no seu jogo (por exemplo, exceções não identificadas de C# na lógica do jogo), é possível fazer com que o SDK do Crashlytics relate esses dados como eventos fatais definindo a propriedade Crashlytics.ReportUncaughtExceptionsAsFatal como true ao inicializar o Crashlytics no seu projeto do Unity . Esses eventos são informados ao Crashlytics em tempo real sem que o usuário final precise reiniciar o jogo.

Informar essas exceções não identificadas como eventos fatais significa que elas serão contabilizadas nas suas estatísticas de usuários sem falhas e alertas de velocidade.

As falhas nativas são sempre relatadas como eventos fatais. Esses eventos são registrados no dispositivo e enviados quando o usuário final reinicia o jogo.

void Start() {
    // Since there is no try-block surrounding this call, if an exception is thrown,
    // it is considered unexpected.
    // Setting `Crashlytics.ReportUncaughtExceptionsAsFatal = true`
    // will ensure that such cases are reported as fatals.
    thirdPartyMethodThatMayThrow();
}

Incluir relatórios do GWP-ASan para depurar problemas de corrupção de memória

Para apps Android que usam IL2CPP, o Crashlytics pode ajudar a depurar falhas causadas por erros de memória nativa coletando relatórios GWP-ASan. Os erros relacionados à memória podem ser associados à corrupção da memória no seu app, que é a principal causa de vulnerabilidades de segurança.

  • Esses dados podem ser visualizados em uma nova guia Stack traces da memória quando você clica nos detalhes de um problema no painel do Crashlytics.

  • Também é possível usar o novo sinal Relatório do GWP-Asan e filtrar para ter acesso rápido a todos os problemas dos dados.

Será possível gerar relatórios de memória do GWP-ASan se o app usar o SDK mais recente do Crashlytics para Unity (v10.7.0+) e tiver o GWP-ASan explicitamente ativado. É necessário modificar o manifesto do app Android. Se você tiver algum código C++ no app, será possível testar a configuração do GWP-ASan usando o exemplo de código nativo na documentação do Android.

Adicionar chaves personalizadas

As chaves personalizadas ajudam você a saber o estado específico do seu app antes de uma falha. É possível associar pares de chave-valor arbitrários aos seus relatórios de erros e usar as chaves personalizadas para pesquisar e filtrar relatórios de erros no console do Firebase.

  • No painel do Crashlytics, é possível pesquisar problemas que correspondam a uma chave personalizada.
  • Ao analisar um problema específico no console, você pode ver as chaves personalizadas associadas a cada evento (subguia Chaves) e até mesmo filtrar os eventos por chaves personalizadas (menu de Filtro na parte de cima da página).

Quando chamadas várias vezes, as chaves existentes são atualizadas com valores novos, e somente o valor mais atual é capturado quando uma falha é registrada.

Crashlytics.SetCustomKey(string key, string value);

Adicionar mensagens de registro personalizadas

As mensagens registradas são associadas aos dados da falha e são visíveis no painel do Firebase Crashlytics quando você abre uma falha específica.

Crashlytics.Log(string message);

Definir identificadores de usuários

É possível usar um ID, um token ou um valor com hash para identificar exclusivamente o usuário final do seu app sem divulgar ou transmitir qualquer informação pessoal. O valor também pode ser apagado se for definido como uma string em branco. Ele é exibido no painel do Firebase Crashlytics quando você abre uma falha específica.

Crashlytics.SetUserId(string identifier);

Acessar registros de navegação estrutural

Os registros de navegação estrutural oferecem uma melhor compreensão das interações de um usuário com seu app que levaram a um evento não fatal, de falha ou de ANR. Esses registros podem ser úteis ao tentar reproduzir e depurar um problema.

Os registros de navegação estrutural usam a tecnologia do Google Analytics. Para receber esses registros, ative o Google Analytics no seu projeto do Firebase e adicione o SDK do Firebase para Google Analytics ao seu app. Quando esses requisitos forem atendidos, os registros de navegação estrutural serão incluídos automaticamente com os dados de um evento na guia Registros quando você visualizar os detalhes de um problema.

O SDK do Analytics registra automaticamente o evento screen_view, o que permite que os registros de navegação estrutural mostrem uma lista de telas visualizadas antes do evento não fatal, de falha ou de ANR. Um registro de navegação estrutural screen_view contém um parâmetro firebase_screen_class.

Os registros de navegação estrutural também são preenchidos com todos os eventos personalizados registrados manualmente na sessão do usuário, incluindo os dados de parâmetro do evento. Esses dados podem ajudar a mostrar uma série de ações do usuário antes de um evento não fatal, de falha ou de ANR.

É possível controlar a coleta e o uso de dados do Google Analytics, o que inclui os dados que preenchem os registros de navegação estrutural.

Ativar a permissão para geração de relatórios

Por padrão, o Crashlytics coleta automaticamente relatórios de erros para todos os usuários do seu app. Você pode dar aos usuários mais controle sobre os dados que eles enviam, permitindo que eles aceitem a geração de relatórios de falhas.

Para desativar a coleta automática e inicializar o Crashlytics apenas para usuários selecionados, chame a substituição da coleta de dados do Crashlytics no ambiente de execução. O valor de substituição persiste em diferentes lançamentos do seu app. Dessa forma, o Crashlytics consegue coletar relatórios automaticamente. Para não participar da geração automática de relatórios de falhas, transmita false como o valor de modificação. Quando definido como false, o novo valor não se aplica até a próxima execução do app.

Crashlytics.IsCrashlyticsCollectionEnabled = true

Gerenciar dados do Crash Insights

Com o Crash Insights, você soluciona problemas quando compara stack traces anônimos a traces de outros aplicativos do Firebase. Você receberá um aviso se o problema fizer parte de uma tendência maior. Para muitos problemas, o Crash Insights também oferece recursos para ajudar a depurar a falha.

Ele usa dados de falhas agregados para identificar tendências de estabilidade comuns. Caso prefira não compartilhar os dados do app, é possível desativar o Crash Insights no menu com o mesmo nome na parte de cima da lista de problemas do Crashlytics no console do Firebase.