Personalize seus relatórios de erros do Firebase Crashlytics

Este guia descreve como personalizar seus relatórios de falhas usando o SDK do Firebase Crashlytics. Por padrão, o Crashlytics coleta automaticamente relatórios de falhas para todos os usuários do seu aplicativo (você pode desativar os relatórios automáticos de falhas e ativar relatórios opcionais para seus usuários). O Crashlytics fornece quatro mecanismos de registro prontos para uso: chaves personalizadas , registros personalizados , identificadores de usuário e exceções capturadas .

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).

Use o método setCustomValue para definir pares chave/valor. Por exemplo:

Rápido

// Set int_key to 100.
Crashlytics.crashlytics().setCustomValue(100, forKey: "int_key")

// Set str_key to "hello".
Crashlytics.crashlytics().setCustomValue("hello", forKey: "str_key")

Objetivo-C

Ao definir números inteiros, booleanos ou flutuantes, coloque o valor na caixa como @( value ) .

// Set int_key to 100.
[[FIRCrashlytics crashlytics] setCustomValue:@(100) forKey:@"int_key"];

// Set str_key to "hello".
[[FIRCrashlytics crashlytics] setCustomValue:@"hello" forKey:@"str_key"];

Você também pode modificar o valor de uma chave existente chamando a chave e definindo-a com um valor diferente. Por exemplo:

Rápido

Crashlytics.crashlytics().setCustomValue(100, forKey: "int_key")

// Set int_key to 50 from 100.
Crashlytics.crashlytics().setCustomValue(50, forKey: "int_key")

Objetivo-C

[[FIRCrashlytics crashlytics] setCustomValue:@(100) forKey:@"int_key"];

// Set int_key to 50 from 100.
[[FIRCrashlytics crashlytics] setCustomValue:@(50) forKey:@"int_key"];

Adicione pares chave/valor em massa usando o método setCustomKeysAndValues ​​com um NSDictionary como único parâmetro:

Rápido

let keysAndValues = [
                 "string key" : "string value",
                 "string key 2" : "string value 2",
                 "boolean key" : true,
                 "boolean key 2" : false,
                 "float key" : 1.01,
                 "float key 2" : 2.02
                ] as [String : Any]

Crashlytics.crashlytics().setCustomKeysAndValues(keysAndValues)

Objetivo-C

NSDictionary *keysAndValues =
    @{@"string key" : @"string value",
      @"string key 2" : @"string value 2",
      @"boolean key" : @(YES),
      @"boolean key 2" : @(NO),
      @"float key" : @(1.01),
      @"float key 2" : @(2.02)};

[[FIRCrashlytics crashlytics] setCustomKeysAndValues: keysAndValues];

Adicione mensagens de log personalizadas

Para ter mais contexto sobre os eventos que levaram a uma falha, você pode adicionar registros personalizados do Crashlytics ao seu aplicativo. O Crashlytics associa os registros aos dados de falhas e os exibe na página Crashlytics do console do Firebase , na guia Logs .

Rápido

Use log() ou log(format:, arguments:) para ajudar a identificar problemas. Se você deseja obter uma saída de log útil com mensagens, o objeto que você passa para log() deve estar em conformidade com a propriedade CustomStringConvertible . log() retorna a propriedade de descrição que você define para o objeto. Por exemplo:

Crashlytics.crashlytics().log("Higgs-Boson detected! Bailing out…, \(attributesDict)")

.log(format:, arguments:) formata os valores retornados da chamada getVaList() . Por exemplo:

Crashlytics.crashlytics().log(format: "%@, %@", arguments: getVaList(["Higgs-Boson detected! Bailing out…", attributesDict]))

Para obter mais detalhes sobre como usar log() ou log(format:, arguments:) , consulte a documentação de referência do Crashlytics.

Objetivo-C

Use log ou logWithFormat para ajudar a identificar problemas. Observe que se você deseja obter uma saída de log útil com mensagens, o objeto que você passa para qualquer um dos métodos deve substituir a propriedade da instância de description . Por exemplo:

[[FIRCrashlytics crashlytics] log:@"Simple string message"];

[[FIRCrashlytics crashlytics] logWithFormat:@"Higgs-Boson detected! Bailing out... %@", attributesDict];

[[FIRCrashlytics crashlytics] logWithFormat:@"Logging a variable argument list %@" arguments:va_list_arg];

Para obter mais detalhes sobre como usar log e logWithFormat , consulte a documentação de referência do Crashlytics.

Definir identificadores de usuário

Para diagnosticar um problema, muitas vezes é útil saber quais dos seus usuários sofreram uma determinada falha. O Crashlytics inclui uma maneira de identificar usuários anonimamente em seus relatórios de falhas.

Para adicionar IDs de usuário aos seus relatórios, atribua a cada usuário um identificador exclusivo na forma de um número de ID, token ou valor com hash:

Rápido

Crashlytics.crashlytics().setUserID("123456789")

Objetivo-C

[[FIRCrashlytics crashlytics] setUserID:@"123456789"];

Se você precisar limpar um identificador de usuário depois de defini-lo, redefina o valor para uma sequência em branco. Limpar um identificador de usuário não remove os registros existentes do Crashlytics. Se você precisar excluir registros associados a um ID de usuário, entre em contato com o suporte do Firebase .

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. Para dar aos usuários mais controle sobre os dados que enviam, você pode ativar os relatórios de aceitação desativando os relatórios automáticos e enviando dados ao Crashlytics apenas quando desejar em seu código:

  1. Desative a coleta automática adicionando uma nova chave ao seu arquivo Info.plist :

    • Chave: FirebaseCrashlyticsCollectionEnabled
    • Valor: false
  2. Habilite a coleta para usuários selecionados chamando 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.

    Rápido

    Crashlytics.crashlytics().setCrashlyticsCollectionEnabled(true)

    Objetivo-C

    [[FIRCrashlytics crashlytics] setCrashlyticsCollectionEnabled:YES];

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 .