Anzeigenantwort-ID mit Firebase Crashlytics protokollieren

Firebase Crashlytics ist ein schlanker Echtzeit-Absturzbericht, mit dem Sie Stabilitätsprobleme in Ihrer App ganz einfach verwalten können. Sie sparen Zeit, indem Sie Abstürze effizient gruppieren und die Umstände angeben, die bis dahin auftreten.

In diesem Leitfaden wird beschrieben, wie Sie Crashlytics in Ihr Android Studio-Projekt einbinden, damit Sie Anzeigen-Antwort-IDs protokollieren können. Wenn Sie Probleme mit Abstürzen in Ihrer App beheben, können Sie die Anzeigenantwort-ID aufrufen und das Überprüfungszentrum für Anzeigen in Ad Manager finden, um die Anzeigen zu finden und zu blockieren.

Schritt 1:Firebase zu einer Android-App hinzufügen

  1. Wenn Sie versuchen möchten, Firebase mit einer sauberen App zu verwenden, können Sie die Beispiele für das Google Mobile Ads SDK für Android auf GitHub herunterladen oder klonen. In dieser Anleitung wird insbesondere das Bannerbeispiel Beispiel für ein Banner

    Wenn Sie bereits eine App haben, sollten Sie mit den Paketnamen der App fortfahren können. Die gleichen Schritte können auch mit anderen Anpassungen auf das andere Repository im Repository angewendet werden.

  2. Wenn Sie Firebase Crashlytics verwenden möchten, müssen Sie ein Firebase-Projekt erstellen und diesem Ihre App hinzufügen. Erstellen Sie ein Firebase-Projekt, falls Sie das noch nicht getan haben. Registrieren Sie Ihre Anwendung dabei.

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

    2. Klicken Sie im eingeblendeten Bildschirm auf Nein > Neue Firebase-App einrichten.

  3. Fügen Sie in „build.gradle“ die Abhängigkeiten für Google Analytics, Fabric und Craashlytics 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:22.4.0'
    
        // Add the Firebase Crashlytics dependency.
        implementation 'com.google.firebase:firebase-crashlytics:18.4.1'
    }
    

    Projekt/build.gradle

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

Optional: Einrichtung testen

Durch Hinzufügen einer Absturzschaltfläche können Sie einen Absturz erzwingen, der bei jedem Drücken der Schaltfläche zu einem App-Absturz führt.

Das folgende Beispiel zeigt, wie Sie in der Methode onCreate() einer Activity eine Absturzschaltfläche hinzufügen:

Hauptaktivität (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 AdManagerAdRequest.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(AdManagerAdRequest.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 in Android Studio Ihre App 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 über das Gerät oder Android Studio neu, damit das Absturzprotokoll in Crashlyics hochgeladen wird.

Schritt 2:Anzeigenantwort-ID erfassen

Wenn Sie mehrere Anzeigen zu unterschiedlichen Zeiten laden, empfiehlt es sich, jede Anzeigenantwort-ID mit einem separaten Schlüssel zu erfassen. In diesem Leitfaden wird beispielsweise ein Beispiel mit nur einer Banneranzeige verwendet. Daher wird die Anzeigenantwort-ID im folgenden Snippet als banner_ad_response_id-Schlüssel protokolliert. Sie können in Firebase Crashlytics mehrere benutzerdefinierte Schlüssel / Wert-Paare für verschiedene Anzeigentypen und Anzeigenereignisse erstellen (siehe AdListener für den Lebenszyklus der Anzeige). Weitere Informationen zum benutzerdefinierten Logging finden Sie unter Firebase Crashlytics-Absturzberichte anpassen.

Fügen Sie den folgenden Code in Ihr MyActivity.java ein: Damit wird im Grunde die FirebaseCrashlytics.setCustomKey()-Funktion in der Callback-Funktion onAdLoaded() verwendet, um zu prüfen, ob 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 AdManagerAdRequest.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(AdManagerAdRequest.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! Im Schlüsselbereich der Absturzsitzungen in Ihrem Crashlytics-Dashboard wird jetzt die neueste banner_ad_response_id angezeigt. Bei einigen Schlüsseln kann es bis zu einer Stunde dauern, bis sie in Ihrem Dashboard angezeigt werden.