Registrar ID de resposta do anúncio no Crashlytics

Selecionar plataforma: Android iOS Unity

O Firebase Crashlytics é uma ferramenta de relatório de falhas leve e em tempo real que facilita o gerenciamento de problemas de estabilidade no seu app. O Crashlytics economiza tempo de solução de problemas agrupando falhas de maneira inteligente e destacando as circunstâncias que as causam.

Este guia descreve como integrar o Crashlytics ao seu projeto do Android Studio para que você possa registrar IDs de resposta de anúncios. Mais tarde, ao solucionar problemas de falhas no seu app, você poderá pesquisar o ID de resposta do anúncio e usar a Central de revisão de anúncios na AdMob para encontrar e bloquear os anúncios.

Etapa 1:adicionar o Firebase a um app Android

  1. Se você quiser tentar fazer login com o Firebase em um app limpo, pode fazer o download ou clonar os exemplos para Android repositório no GitHub.Google Mobile Ads SDK Este guia usa especificamente o exemplo de banner.

    Se você já tiver um app, poderá seguir para outras etapas com o nome do pacote do app. As mesmas etapas também podem ser aplicadas a outros exemplos no repositório com pequenas adaptações.

  2. Para usar o Firebase Crashlytics, crie um projeto do Firebase e adicione seu app a ele. Se ainda não fez isso, crie um projeto do Firebase. Certifique-se de registrar seu app nele.

    1. Na página do Crashlytics no console do Firebase, clique em Configurar o Crashlytics.

    2. Na tela que aparece, clique em Não > Configurar um novo app do Firebase.

  3. No build.gradle, adicione as dependências do Google Analytics, do Fabric e do Crashlytics.

    app/build.gradle

    apply plugin: 'com.android.application'
    apply plugin: 'com.google.gms.google-services'
    
    // Add the Fabric plugin
    apply plugin: 'io.fabric'
    
    dependencies {
        // ...
    
        // Add Google Mobile Ads SDK
        implementation 'com.google.android.gms:play-services-ads:25.1.0'
    
        // Add the Firebase Crashlytics dependency.
        implementation 'com.google.firebase:firebase-crashlytics:20.0.4'
    }

    project/build.gradle

    buildscript {
        repositories {
            // ...
            // Add Google's Maven repository.
            google()
        }
    
        dependencies {
            // ...
    
            classpath 'com.google.gms:google-services:4.4.4'
    
            // Add the Fabric Crashlytics plugin.
            classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.6'
        }
    }
    
    allprojects {
        // ...
        repositories {
           // Check that Google's Maven repository is included (if not, add it).
           google()
    
           // ...
        }
    }
  4. Crie e execute seu app para garantir que o Crashlytics esteja configurado corretamente. Depois de concluído, você poderá acessar o painel do Crashlytics.

(Opcional) : testar a configuração

Ao adicionar um botão de falha , você pode forçar uma falha para causar uma falha de app com cada pressionamento de botão.

Confira um exemplo de como adicionar um botão de falha no método onCreate() de uma Activity:

MainActivity (trecho)

Java

protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_my);

  // Gets the ad view defined in layout/ad_fragment.xml with ad unit ID set in
  // values/strings.xml.
  adView = findViewById(R.id.ad_view);

  // Start loading the ad in the background.
  adView.loadAd(new AdRequest.Builder().build());

  // Add a crash button.
  Button crashButton = new Button(this);
  crashButton.setText("Crash!");
  crashButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {
      throw new RuntimeException("Test Crash"); // Force a crash
    }
  });

  addContentView(crashButton, new ViewGroup.LayoutParams(
      ViewGroup.LayoutParams.MATCH_PARENT,
      ViewGroup.LayoutParams.WRAP_CONTENT));
}

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  setContentView(R.layout.activity_my)

  // Gets the ad view defined in layout/ad_fragment.xml with ad unit ID set in
  // values/strings.xml.
  adView = findViewById(R.id.ad_view)

  // Start loading the ad in the background.
  adView.loadAd(AdRequest.Builder().build())

  // Add a crash button.
  val crashButton = Button(this)
  crashButton.text = "Crash!"
  crashButton.setOnClickListener {
    throw RuntimeException("Test Crash") // Force a crash
  }

  addContentView(crashButton, ViewGroup.LayoutParams(
      ViewGroup.LayoutParams.MATCH_PARENT,
      ViewGroup.LayoutParams.WRAP_CONTENT))
}

No Android Studio, crie e execute seu app em um emulador ou dispositivo conectado. Depois que o app for carregado, clique no botão Falha. Reinicie o app no dispositivo ou no Android Studio para que o registro de falhas seja enviado ao Crashlytics.

Etapa 2:registrar o ID de resposta do anúncio

Se você carregar vários anúncios e mostrá-los em momentos diferentes, é recomendável registrar cada ID de resposta do anúncio com uma chave separada. Por exemplo, este guia usa um exemplo que tem apenas um anúncio de banner. Portanto, registramos o ID de resposta do anúncio como a chave banner_ad_response_id no snippet a seguir. Você pode criar vários pares de chave-valor personalizados no Firebase Crashlytics para diferentes tipos de anúncios e eventos de anúncios (consulte AdListener para o ciclo de vida do anúncio). Acesse Personalizar relatórios de erros do Firebase Crashlytics para mais informações sobre o registro personalizado.

Adicione o código a seguir ao seu MyActivity.java. Essencialmente, ele usa a FirebaseCrashlytics.setCustomKey() função na onAdLoaded() função de callback para garantir que o anúncio tenha sido carregado antes de tentar chamar getResponseInfo().

Java

protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_my);

  // Gets the ad view defined in layout/ad_fragment.xml with ad unit ID set in
  // values/strings.xml.
  adView = findViewById(R.id.ad_view);

  adView.setAdListener(new AdListener() {
    @Override
    public void onAdLoaded() {
      String adResponseId = adView.getResponseInfo().getResponseId();
      FirebaseCrashlytics.getInstance().setCustomKey(
          "banner_ad_response_id", adResponseId);
    }
  });

  // Start loading the ad in the background.
  adView.loadAd(new AdRequest.Builder().build());

  // Add a crash button.
  Button crashButton = new Button(this);
  crashButton.setText("Crash!");
  crashButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {
      throw new RuntimeException("Test Crash"); // Force a crash
    }
  });

  addContentView(crashButton, new ViewGroup.LayoutParams(
      ViewGroup.LayoutParams.MATCH_PARENT,
      ViewGroup.LayoutParams.WRAP_CONTENT));
}

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  setContentView(R.layout.activity_my)

  // Gets the ad view defined in layout/ad_fragment.xml with ad unit ID set in
  // values/strings.xml.
  adView = findViewById(R.id.ad_view)

  adView.adListener = object : AdListener() {
    override fun onAdLoaded() {
      mAdView.responseInfo?.responseId?.let { adResponseId ->
          FirebaseCrashlytics.getInstance().setCustomKey(
              "banner_ad_response_id", adResponseId)
      }
    }
  }

  // Start loading the ad in the background.
  adView.loadAd(AdRequest.Builder().build())

  // Add a crash button.
  val crashButton = Button(this)
  crashButton.text = "Crash!"
  crashButton.setOnClickListener {
    throw RuntimeException("Test Crash") // Force a crash
  }

  addContentView(crashButton, ViewGroup.LayoutParams(
      ViewGroup.LayoutParams.MATCH_PARENT,
      ViewGroup.LayoutParams.WRAP_CONTENT))
}

Parabéns! Agora você verá o banner_ad_response_id mais recente na seção de chaves das sessões de falhas no painel do Crashlytics. Algumas chaves podem levar até uma hora para ficarem visíveis no painel.