Anzeigenantwort-ID in Crashlytics protokollieren

Plattform auswählen: Android iOS Unity

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

  1. 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.

  2. 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.

    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 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
  4. Installieren und aktualisieren Sie Ihre Pods im Terminal oder an der Eingabeaufforderung:

    pod install --repo-update
    
  5. Ö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.