Ir para o console

Relatar falhas no iOS

O Firebase Crash Reporting cria relatórios detalhados dos erros no seu app. Os erros são agrupados em problemas baseados em rastreamentos de pilhas semelhantes e a triagem é feita de acordo com a gravidade do impacto nos usuários. Além de receber os relatórios automáticos, registre eventos personalizados para ajudar a detectar as etapas que deram origem à falha.

Configurar o Crash reporting

Para configurar o Crash reporting no app, faça o seguinte:

  1. Instale o SDK do Firebase.
  2. No Firebase console, adicione seu app ao projeto do Firebase.
  3. Adicione a dependência do Firebase Crash Reporting ao seu Podfile:
    pod 'Firebase/Crash'
  4. Importe o módulo do Firebase no UIApplicationDelegate:

    Swift

    import Firebase

    Objective-C

    @import Firebase;
  5. Configure uma instância compartilhada do FirebaseApp, que é normalmente encontrada no método application:didFinishLaunchingWithOptions::

    Swift

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];

Fazer o upload dos arquivos de símbolo

Para visualizar relatórios de falha legíveis, você precisa fazer o upload dos arquivos de símbolos após cada criação. Isso pode ser feito automaticamente. Basta seguir as etapas abaixo para adicionar um script de execução ao Xcode:

  1. Faça o download da chave da conta de serviço para autenticar os uploads. No Console do Firebase, selecione o projeto e clique em Gerar nova chave privada.
  2. No Xcode, clique no aplicativo desejado, selecione Build Phases e clique em "+" para adicionar uma fase.
  3. Selecione Run Script e adicione o seguinte conteúdo, definindo valores adequados para o caminho da conta de serviço e o GOOGLE_APP_ID:
    # Replace this with the GOOGLE_APP_ID from your GoogleService-Info.plist file
    GOOGLE_APP_ID=1:my:app:id
    
    # Replace the /Path/To/ServiceAccount.json with the path to the key you just downloaded
    "${PODS_ROOT}"/FirebaseCrash/upload-sym "/Path/To/ServiceAccount.json"
        

Criar seu primeiro erro

Para criar o primeiro erro, adicione uma declaração ao método didFinishLaunchingWithOptions do AppDelegate para causar uma falha ao iniciar o aplicativo, logo após a chamada de inicialização do Firebase:

Swift

fatalError()

Objective-C

assert(false);

Agora que a declaração foi adicionada, siga estas etapas para criar um erro:

  1. Inicialize o app a partir do Xcode.
  2. Clique em Stop no Xcode para separar do depurador.
  3. Inicialize o app diretamente da tela inicial no dispositivo ou do emulador.
  4. Aguarde até o app falhar.
  5. Remova a linha de falha para que o app possa iniciar corretamente.
  6. Acione o guia de início rápido no Xcode novamente. Dentro de 15 segundos, você verá uma mensagem de registro indicando que o relatório foi enviado com sucesso.
  7. Verifique se o erro aparece na seção "Crash reporting" no Firebase console. Pode levar de um a dois minutos para que os erros sejam exibidos lá.

Criar registros personalizados

Você pode usar FIRCrashLog() para criar mensagens de registro personalizadas que são incluídas em seus relatórios de falhas. O exemplo a seguir mostra a criação de uma mensagem de registro:

Swift

FirebaseCrashMessage("Cause Crash button clicked")
fatalError()

Objective-C

FIRCrashLog(@"Cause Crash button clicked");
assert(NO);

Suporte a bitcode

Com o bitcode ativado, siga essas etapas para simbolizar o app. Desse modo, você consegue ler os rastreamentos de pilhas coletados pelo Crash reporting:

  1. Faça o download dos arquivos (.dSYM) de símbolos de depuração do app. Para saber como fazer isso, consulte Como visualizar e importar falhas na janela de dispositivos.

  2. Depois de fazer o download de todos os arquivos .dSYM como um .xcarchive, extraia os arquivos .dSYM para um local conveniente.

  3. Usando o script de upload em lote, faça o upload do arquivo .dSYM para a versão do app que você precisa simbolizar. Pode levar um minuto para que o índice seja atualizado no Spotlight com a inclusão desse arquivo.

    ./Pods/FirebaseCrash/batch-upload -i "Path/To/Info.plist" -p "Path/To/GoogleService-Info.plist" "Path/To/ServiceAccount.json" "UUID-OF-DSYM"
    

Problemas conhecidos

  • No momento, o SDK do Firebase não é compatível com o uso da classe NSException no simulador do Xcode. Quando essa classe é usada, o resultado são rastreamentos de pilhas malformados no Firebase console. Como solução alternativa, utilize um dispositivo físico ou teste com um tipo diferente de exceção, como um assert.

  • O Crash reporting usa um código exclusivo para identificar cada usuário. Devido a um bug conhecido no Xcode 8.1, ocorre uma falha na criação desse código nos simuladores de iOS 10, o que impede o upload dos relatórios de erro. Para contornar isso no Xcode 8.1, execute os testes em um dispositivo ou ative o Keychain Sharing na seção Capabilities das configurações do aplicativo. Esse bug foi resolvido na versão beta do Xcode 8.2.

Próximas etapas