Anzeigenantwort-ID mit Firebase Crashlytics protokollieren

Firebase Crashlytics ist ein leistungsstarkes Echtzeit-Tool zur Erfassung von Abstürzen, mit dem Sie Stabilitätsprobleme in Ihrer App ganz einfach beheben können. Crashlytics spart Ihnen Zeit bei der Fehlerbehebung, da Abstürze intelligent gruppiert und die Umstände, die zu ihnen geführt haben, hervorgehoben werden.

In dieser Anleitung wird beschrieben, wie Sie Crashlytics in Ihr Android Studio-Projekt einbinden, damit Sie Anzeigenantwort-IDs erfassen können. Wenn Sie später Probleme mit Abstürzen in Ihrer App beheben, können Sie die Anzeigenantwort-ID in AdMob im Überprüfungszentrum für Anzeigen suchen und die Anzeigen blockieren.

Schritt 1:Firebase einer Android-Anwendung hinzufügen

  1. Wenn Sie die Protokollierung mit Firebase in einer leeren App ausprobieren möchten, können Sie die Beispiele für das Google Mobile Ads SDK für Android aus dem Repository auf GitHub herunterladen oder klonen. In diesem Leitfaden wird das-Bannerbeispiel verwendet.

    Wenn Sie bereits eine App haben, sollten Sie mit dem Paketnamen Ihrer App mit den nächsten Schritten fortfahren können. Dieselben Schritte können mit geringfügigen Anpassungen auch auf andere Beispiele im Repository angewendet werden.

  2. Wenn Sie Firebase Crashlytics verwenden möchten, müssen Sie ein Firebase-Projekt erstellen und Ihre App hinzufügen. Erstellen Sie ein Firebase-Projekt, falls noch nicht geschehen. Registrieren Sie Ihre App.

    1. Klicken Sie auf der Crashlytics-Seite der Firebase Console auf Crashlytics einrichten.

    2. Klicken Sie auf dem angezeigten Bildschirm auf Nein > Neue Firebase App einrichten.

  3. Fügen Sie in „build.gradle“ die Abhängigkeiten für Google Analytics, Fabric und Crashlytics hinzu.

    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 the Google Mobile Ads SDK
        implementation 'com.google.android.gms:play-services-ads:23.5.0'
    
        // Add the Firebase Crashlytics dependency.
        implementation 'com.google.firebase:firebase-crashlytics:19.2.1'
    }
    

    project/build.gradle

    buildscript {
        repositories {
            // ...
            // Add Google's Maven repository.
            google()
        }
    
        dependencies {
            // ...
    
            classpath 'com.google.gms:google-services:4.4.2'
    
            // Add the Fabric Crashlytics plugin.
            classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.2'
        }
    }
    
    allprojects {
        // ...
        repositories {
           // Check that Google's Maven repository is included (if not, add it).
           google()
    
           // ...
        }
    }
    
  4. Erstellen und führen Sie Ihre App aus, um sicherzustellen, dass Crashlytics richtig konfiguriert ist. Danach können Sie auf das Crashlytics-Dashboard zugreifen.

Optional: Einrichtung testen

Wenn Sie eine Schaltfläche zum Erzwingen eines Absturzes hinzufügen, können Sie einen Absturz erzwingen, der bei jeder Betätigung der Schaltfläche einen App-Absturz verursacht.

Hier ein Beispiel, wie Sie eine Schaltfläche für Abstürze in der onCreate()-Methode einer Activity hinzufügen:

MainActivity (Auszug)

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

Erstellen Sie Ihre App in Android Studio und führen Sie sie auf einem Emulator oder einem verbundenen Gerät aus. Nachdem die App geladen wurde, können Sie auf die Schaltfläche Absturz klicken. Starten Sie die App noch einmal über das Gerät oder Android Studio, damit das Absturzprotokoll in Crashlytics hochgeladen werden kann.

Schritt 2:Anzeigenantwort-ID erfassen

Wenn Sie mehrere Anzeigen laden und zu unterschiedlichen Zeiten ausliefern, sollten Sie für jede Anzeigenantwort-ID einen separaten Schlüssel erfassen. In diesem Leitfaden wird beispielsweise ein Beispiel mit nur einer Banneranzeige verwendet. Daher loggen wir die Anzeigenantwort-ID im folgenden Snippet als Schlüssel banner_ad_response_id. In Firebase Crashlytics können Sie mehrere benutzerdefinierte Schlüssel / Wert-Paare für verschiedene Anzeigentypen und Anzeigenereignisse erstellen. Weitere Informationen zum Lebenszyklus von Anzeigen finden Sie unter AdListener. Weitere Informationen zur benutzerdefinierten Protokollierung finden Sie unter Firebase Crashlytics-Absturzberichte anpassen.

Fügen Sie MyActivity.java den folgenden Code hinzu. Im Wesentlichen wird die Funktion FirebaseCrashlytics.setCustomKey() in der onAdLoaded()-Callback-Funktion verwendet, um sicherzustellen, dass die Anzeige geladen wurde, bevor versucht wird, getResponseInfo() aufzurufen.

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

Glückwunsch! Die neueste banner_ad_response_id wird jetzt im Bereich „Schlüssel“ der Absturzsitzungen auf Ihrem Crashlytics-Dashboard angezeigt. Es kann bis zu einer Stunde dauern, bis einige Schlüssel im Dashboard angezeigt werden.