Firebase Crashlytics ist ein schlanker Absturzreporter, der Abstürze in Echtzeit meldet und Ihnen die Verwaltung von Stabilitätsproblemen in Ihrer App erleichtert. Crashlytics spart Ihnen Zeit bei der Fehlerbehebung, indem Abstürze intelligent gruppiert und die Umstände hervorgehoben werden, die zu ihnen führen.
In dieser Anleitung wird beschrieben, wie Sie Crashlytics in Ihr Xcode-Projekt einbinden, damit Sie Anzeigenantwort-IDs protokollieren können. Wenn Sie später Abstürze in Ihrer App beheben, können Sie die Anzeigenantwort-ID nachschlagen und im Überprüfungszentrum für Anzeigen in AdMob die Anzeigen finden und blockieren.
Schritt 1:Firebase zu einer iOS-Anwendung hinzufügen
Wenn Sie die Protokollierung mit Firebase in einer neuen App testen möchten, können Sie die Beispiele für iOS auf GitHub herunterladen oder klonenGoogle Mobile Ads SDK Repository auf. In dieser Anleitung wird das Bannerbeispiel verwendet.
Wenn Sie bereits eine App haben, können Sie mit der Paket-ID Ihrer App mit den anderen Schritten fortfahren. Die gleichen Schritte können mit geringfügigen Anpassungen auch auf andere Beispiele im Repository angewendet werden.
Um Firebase Crashlytics zu verwenden, müssen Sie ein Firebase-Projekt erstellen und Ihre App hinzufügen. Erstellen Sie ein Firebase-Projekt, falls noch nicht geschehen. Stellen Sie sicher, dass Sie Ihre App darin registrieren.
Klicken Sie auf der Crashlytics-Seite der Firebase Console auf Crashlytics einrichten.
Klicken Sie auf dem angezeigten Bildschirm auf Nein > Neue Firebase-App einrichten.

Fügen Sie in der Podfile die Pods für Google Analytics und Firebase Crashlytics hinzu.
source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' target 'BannerExample' do use_frameworks! pod 'Google-Mobile-Ads-SDK' pod 'Firebase/Crashlytics' pod 'Firebase/Analytics' end
Installieren und aktualisieren Sie Ihre Pods im Terminal oder an der Eingabeaufforderung:
pod install --repo-update
Öffnen Sie die Datei
BannerExample.xcworkspace, damit Xcode das Projekt laden kann.
Schritt 2:Firebase für Ihre App konfigurieren
Swift
Fügen Sie in AppDelegate.swift die folgenden Zeilen hinzu:
import UIKit // Import the Firebase library import FirebaseCore @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Configure an instance of Firebase FirebaseApp.configure() return true } }
Objective-C
Fügen Sie in AppDelegate.m die folgenden Zeilen hinzu:
@import AppDelegate.h; // Import the Firebase library @import FirebaseCore; @interface AppDelegate () @end @implementation AppDelegate ‐ (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. // Initialize Firebase [FIRApp configure]; return YES; }
Öffnen Sie in Xcode die Build-Einstellungen und klicken Sie auf den Tab Build-Phasen. Fügen Sie das Fabric-Ausführungsskript hinzu:

Leeren Sie den Build-Ordner und erstellen und führen Sie dann Ihre App aus. Jetzt können Sie sich in der Firebase Console anmelden und auf das Crashlytics-Dashboard zugreifen.
(Optional) Einrichtung testen
Wenn Sie einen Absturz- Button hinzufügen, können Sie einen Absturz erzwingen, indem Sie bei jedem Drücken des Buttons einen App-Absturz verursachen. Bei dieser Testeinrichtung wird der Code in Schritt 3 ausgelöst, um benutzerdefinierte Logs an die Firebase Crashlytics-Dashboards zu senden.
Swift
Fügen Sie in ViewController.swift der Funktion viewDidLoad() die folgenden Zeilen hinzu:
override func viewDidLoad() { super.viewDidLoad() bannerView.delegate = self bannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716" bannerView.rootViewController = self bannerView.load(Request()) let button = UIButton(type: .roundedRect) button.frame = CGRect(x: 20, y: 50, width: 100, height: 30) button.setTitle("Crash", for: []) button.addTarget(self, action: #selector(self.crashButtonTapped(_:)), for: .touchUpInside) view.addSubview(button) }
Fügen Sie dann unten in der Klassendeklaration dieses @IBAction hinzu:
@IBAction func crashButtonTapped(_ sender: AnyObject) { fatalError("Test Crash Happened") }
Objective-C
Fügen Sie in ViewController.m der Methode viewDidLoad die folgenden Zeilen hinzu:
‐ (void)viewDidLoad { [super viewDidLoad]; /// ... UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; button.frame = CGRectMake(20, 50, 100, 30); [button setTitle:@"Crash" forState:UIControlStateNormal]; [button addTarget:self action:@selector(crashButtonTapped:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button]; }
Fügen Sie dann unten in der Klassendeklaration dieses IBAction hinzu:
‐ (IBAction)crashButtonTapped:(id)sender { assert(NO); }
Drücken Sie in der Xcode-Symbolleiste auf die Schaltfläche Beenden und starten Sie die App dann über einen Simulator neu. Nachdem die App geladen wurde, können Sie auf die Schaltfläche Absturz klicken. Kehren Sie zu Xcode zurück und klicken Sie auf die Schaltfläche Wiedergabe , damit das Absturzprotokoll in Crashlytics hochgeladen wird.
Schritt 3:Anzeigenantwort-ID protokollieren
Wenn Sie mehrere Anzeigen laden und sie zu unterschiedlichen Zeiten präsentieren, empfiehlt es sich, jede Anzeigenantwort-ID mit einem separaten Schlüssel zu protokollieren. In dieser Anleitung wird beispielsweise eine einzelne Banneranzeige verwendet. Daher protokollieren wir die Anzeigenantwort-ID im folgenden Snippet als Schlüssel banner_ad_response_id.
Sie können in Firebase Crashlytics auch mehrere benutzerdefinierte Schlüssel / Wert-Paare für verschiedene Anzeigentypen und Anzeigenereignisse erstellen. Weitere Informationen finden Sie unter Benachrichtigungen zum Lebenszyklus von Anzeigenanfragen für
Weitere Informationen zur benutzerdefinierten Protokollierung finden Sie unter Benutzerdefinierte Absturzberichte in Firebase Crashlytics.
Swift
Fügen Sie ViewController.swift den folgenden Code hinzu. Dabei wird die
Crashlytics.setCustomValue()
Funktion in der adViewDidReceiveAd Callback-Funktion verwendet.
import GoogleMobileAds import UIKit class ViewController: UIViewController, BannerViewDelegate { /// The banner view. @IBOutlet weak var bannerView: BannerView! override func viewDidLoad() { super.viewDidLoad() ... bannerView.delegate = self ... } /// Tells the delegate an ad request loaded an ad. func adViewDidReceiveAd(_ bannerView: BannerView) { if let responseInfo = bannerView.responseInfo, responseId = responseInfo.responseId { print("adViewDidReceiveAd from network: \(responseInfo.adNetworkClassName), response Id='\(responseId)'") Crashlytics.sharedInstance().setCustomValue(responseId, forKey: "banner_ad_response_id") } } }
Objective-C
Fügen Sie ViewController.m den folgenden Code hinzu. Dabei wird die
[FIRCrashlytics crashlytics]
setCustomValue
Funktion in der adViewDidReceiveAd Funktion verwendet.
@import GoogleMobileAds; @interface ViewController () @property(nonatomic, strong) GADBannerView *bannerView; @end @implementation ViewController ‐ (void)viewDidLoad { [super viewDidLoad]; // In this case, we instantiate the banner with desired ad size. self.bannerView = [[GADBannerView alloc] initWithAdSize:GADAdSizeBanner]; [self addBannerViewToView:self.bannerView]; } ‐ (void)addBannerViewToView:(UIView *)bannerView { bannerView.translatesAutoresizingMaskIntoConstraints = NO; [self.view addSubview:bannerView]; [self.view addConstraints:@[ [NSLayoutConstraint constraintWithItem:bannerView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.bottomLayoutGuide attribute:NSLayoutAttributeTop multiplier:1 constant:0], [NSLayoutConstraint constraintWithItem:bannerView attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view kattribute:NSLayoutAttributeCenterX multiplier:1 constant:0] ]]; } - (void)adViewDidReceiveAd:(GADBannerView *)bannerView { NSString *adResponseId = bannerView.responseInfo.responseId; if (adResponseId) { NSLog(@"adViewDidReceiveAd from network: %@ with response Id: %@", bannerView.responseInfo.adNetworkClassName, adResponseId); [[FIRCrashlytics crashlytics] setCustomValue:adResponseId forKey:@"banner_ad_response_id"]; } } @end
Glückwunsch! Die aktuelle adResponseId wird jetzt im Schlüsselbereich der Absturzsitzungen auf Ihrem Crashlytics-Dashboard angezeigt. Es kann bis zu einer Stunde dauern, bis einige Schlüssel in Ihrem Dashboard sichtbar sind.
