Personalize seus relatórios de erros do Firebase Crashlytics

No painel do Crashlytics, você pode clicar em um problema e obter um relatório detalhado do evento. Você pode personalizar esses relatórios para ajudar a entender melhor o que está acontecendo no seu aplicativo e as circunstâncias dos eventos relatados ao Crashlytics.

  • Obtenha registros de localização atual automaticamente se seu aplicativo usar o SDK do Firebase para Google Analytics. Esses registros fornecem visibilidade das ações do usuário que levaram a um evento coletado pelo Crashlytics no seu aplicativo.

  • Desative o relatório automático de falhas e ative o relatório opcional para seus usuários. Observe que, por padrão, o Crashlytics coleta automaticamente relatórios de erros de todos os usuários do seu aplicativo.

Relatar exceções

Relatar exceções capturadas

Se houver exceções esperadas, você poderá fazer com que o SDK do Crashlytics as relate como eventos não fatais . Esses eventos são registrados no dispositivo e enviados junto com o próximo relatório de evento fatal ou quando o usuário final reinicia o jogo.

Você pode registrar exceções em C# usando o seguinte método:

Crashlytics.LogException(Exception ex);

Você pode registrar exceções esperadas nos blocos try/catch do seu jogo:

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

Relatar exceções não detectadas

Para exceções não detectadas que não travam o jogo (por exemplo, exceções C# não detectadas na lógica do jogo), você pode fazer com que o SDK do Crashlytics as relate como eventos fatais definindo a propriedade Crashlytics.ReportUncaughtExceptionsAsFatal como true onde você inicializa o Crashlytics no seu projeto do Unity . Esses eventos são relatados ao Crashlytics em tempo real, sem a necessidade do usuário final reiniciar o jogo.

Relatar essas exceções não detectadas como eventos fatais significa que elas contarão nas estatísticas de usuário sem falhas e nos alertas de velocidade.

Observe que 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 GWP-ASan para depurar problemas de corrupção de memória

Para aplicativos 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 estar associados à corrupção de memória do seu aplicativo, que é a principal causa de vulnerabilidades de segurança do aplicativo.

  • Você pode visualizar esses dados em uma nova guia "Rastreamentos de pilha de memória" ao clicar nos detalhes de um problema no painel do Crashlytics .

  • Você também pode usar o novo sinal e filtro "Relatório GWP-ASan" para visualizar rapidamente todos os problemas com esses dados.

Você pode obter relatórios de memória GWP-ASan se seu aplicativo usar o SDK Crashlytics para Unity mais recente (v10.7.0+) e tiver o GWP-ASan explicitamente ativado (requer que você modifique seu Android App Manifest ). Se você tiver algum código C++ em seu aplicativo, poderá testar a configuração do GWP-ASan usando o exemplo de código nativo na documentação do Android .

Adicione chaves personalizadas

As chaves personalizadas ajudam você a obter o estado específico do seu aplicativo que levou a uma falha. Você pode associar pares chave/valor arbitrários aos seus relatórios de falhas e, em seguida, usar as chaves personalizadas para pesquisar e filtrar relatórios de falhas no Console do Firebase.

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

Quando chamados várias vezes, novos valores para chaves existentes atualizarão o valor e somente o valor mais atual será capturado quando uma falha for registrada.

Crashlytics.SetCustomKey(string key, string value);

Adicione mensagens de log personalizadas

As mensagens registradas são associadas aos seus dados de falha e ficam visíveis no painel do Firebase Crashlytics ao visualizar uma falha específica.

Crashlytics.Log(string message);

Definir identificadores de usuário

Você pode usar um número de ID, token ou valor hash para identificar exclusivamente o usuário final do seu aplicativo, sem divulgar ou transmitir nenhuma informação pessoal. Você também pode limpar o valor definindo-o como uma sequência em branco. Este valor é exibido no painel do Firebase Crashlytics ao visualizar uma falha específica.

Crashlytics.SetUserId(string identifier);

Obtenha registros de localização atual

Os registros de localização atual fornecem uma melhor compreensão das interações que um usuário teve com seu aplicativo, levando a um evento de falha, não fatal ou ANR. Esses logs podem ser úteis ao tentar reproduzir e depurar um problema.

Os registros de navegação estrutural são desenvolvidos pelo Google Analytics. Portanto, para obtê-los, você precisa ativar o Google Analytics para seu projeto do Firebase e adicionar o SDK do Firebase para Google Analytics ao seu aplicativo. Depois que esses requisitos forem atendidos, os logs de navegação serão automaticamente incluídos nos dados de um evento na guia Logs quando você visualizar os detalhes de um problema.

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

Os logs de localização atual também são preenchidos com quaisquer 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.

Observe que você pode controlar a coleta e o uso de dados do Google Analytics , que incluem os dados que preenchem os registros de localização atual.

Ativar relatórios de aceitação

Por padrão, o Crashlytics coleta automaticamente relatórios de erros de todos os usuários do seu aplicativo. Você pode dar aos usuários mais controle sobre os dados que enviam, permitindo que eles optem por relatar 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 em tempo de execução. O valor de substituição persiste durante as inicializações do seu aplicativo para que o Crashlytics possa coletar relatórios automaticamente. Para cancelar o relatório automático de falhas, passe false como o valor de substituição. Quando definido como false , o novo valor não se aplica até a próxima execução do aplicativo.

Crashlytics.IsCrashlyticsCollectionEnabled = true

Gerenciar dados do Crash Insights

O Crash Insights ajuda a resolver problemas comparando seus rastreamentos de pilha anônimos com rastreamentos de outros aplicativos do Firebase e informando se o problema faz parte de uma tendência maior. Para muitos problemas, o Crash Insights ainda fornece recursos para ajudá-lo a depurar a falha.

Crash Insights usa dados agregados de falhas para identificar tendências comuns de estabilidade. Se preferir não compartilhar os dados do seu aplicativo, você pode desativar o Crash Insights no menu Crash Insights, na parte superior da lista de problemas do Crashlytics no console do Firebase .