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 geralmente está no método application:didFinishLaunchingWithOptions: do aplicativo

    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

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.