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. Esses registros permitem visualizar as ações do usuário que levam a um evento coletado pelo Crashlytics no seu app.

  • Desative os relatórios automáticos 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

Informar exceções capturadas

Se você tiver exceções esperadas, o SDK do Crashlytics pode defini-las como eventos não fatais nos relatórios. 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. Esses erros relacionados à memória podem ser associados à corrupção da memória no seu app, que é a principal causa de vulnerabilidades de segurança.

  • É possível visualizar esses dados em uma nova guia "Stack traces da memória" ao clicar 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 rapidamente a todos os problemas com esses dados.

Você poderá 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 (em inglês). É necessário modificar o manifesto do app Android. Se você tiver algum código C++ no app, poderá 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 chegar ao estado específico do seu aplicativo que está gerando 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 (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ê visualiza 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. Também é possível limpar o valor ao defini-lo como uma string em branco. Esse valor é exibido no painel do Firebase Crashlytics ao visualizar 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 de falha, não fatal ou 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 que levam a um evento de falha, não fatal ou 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.

Ative 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 ativem o relatório 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 modificação continua entre os lançamentos do seu app. Assim, o Crashlytics consegue coletar relatórios automaticamente. Para desativar o relatório automático 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.