ID risposta annuncio di logging con Firebase Crashlytics

Firebase Crashlytics è uno strumento di reporting degli arresti anomali in tempo reale e leggero che ti consente di gestire facilmente i problemi di stabilità della tua app. Crashlytics ti fa risparmiare tempo per la risoluzione dei problemi agrupando in modo intelligente gli arresti anomali ed evidenziando le circostanze che li hanno causati.

Questa guida descrive come integrare Crashlytics nel progetto Xcode in modo da poter registrare gli ID risposta agli annunci. In un secondo momento, quando risolvi i problemi di arresto anomalo della tua app, puoi cercare l'ID risposta annuncio e utilizzare il Centro revisione annunci in AdMob per trovare e bloccare gli annunci.

Passaggio 1: aggiungi Firebase a un'applicazione per iOS

  1. Se vuoi provare a eseguire l'accesso con Firebase da un'app pulita, puoi scaricare o clonare il repository degli esempi dell'SDK Google Mobile Ads per iOS su GitHub. Questa guida utilizza nello specifico il esempio di banner.

    Se hai già un'app, dovresti essere in grado di procedere con gli altri passaggi usando l'ID pacchetto dell'app. Gli stessi passaggi possono essere applicati anche ad altri esempi nel repository con adattamenti minori.

  2. Per utilizzare Firebase Crashlytics, devi creare un progetto Firebase e aggiungere la tua app. Se non l'hai ancora fatto, crea un progetto Firebase. Assicurati di registrare la tua app.

    1. Nella pagina Crashlytics della console Firebase, fai clic su Configura Crashlytics.

    2. Nella schermata visualizzata, fai clic su No > Configura una nuova app Firebase.

  3. Nel podfile, aggiungi i pod per Google Analytics e Firebase Crashlytics.

    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. Nel terminale o in un prompt dei comandi, installa e aggiorna i pod:

    pod install --repo-update
    
  5. Apri il file BannerExample.xcworkspace per Xcode per caricare il progetto.

Passaggio 2: configura Firebase per la tua app

Swift

In AppDelegate.swift, aggiungi le seguenti righe:

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

In AppDelegate.m, aggiungi le seguenti righe:

@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;
}

In Xcode, apri Build Settings (Impostazioni di compilazione), fai clic sulla scheda Build Phases (Fasi di compilazione). Aggiungi lo script di esecuzione di Fabric:

Ripulisci la cartella di compilazione, quindi compila ed esegui l'app. Ora puoi accedere alla console web di Firebase e alla dashboard di Crashlytics.

(Facoltativo) Testare la configurazione

Se aggiungi un pulsante di arresto anomalo puoi forzare l'arresto anomalo che causa un arresto anomalo dell'app a ogni pressione del pulsante. Questa configurazione del test attiverà il codice nel passaggio 3 per inviare log personalizzati alle dashboard di Firebase Crashlytics.

Swift

In ViewController.swift, aggiungi le seguenti righe alla funzione viewDidLoad():

    override func viewDidLoad() {
        super.viewDidLoad()
        print("Google Mobile Ads SDK version: \(GADRequest.sdkVersion())")
        bannerView.delegate = self
        bannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716"
        bannerView.rootViewController = self
        bannerView.load(GADRequest())
        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)
    }

Poi, aggiungi questo @IBAction alla fine della dichiarazione della classe:

    @IBAction func crashButtonTapped(_ sender: AnyObject) {
        fatalError("Test Crash Happened")
    }

Objective-C

In ViewController.m, aggiungi le seguenti righe al metodo viewDidLoad:

‐ (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];
}

Poi, aggiungi questo IBAction alla fine della dichiarazione della classe:

‐ (IBAction)crashButtonTapped:(id)sender {
    assert(NO);
}

Nella barra degli strumenti di Xcode, premi il pulsante Interrompi e poi riavvia l'app tramite un simulatore. Dopo aver caricato l'app, puoi fare clic sul pulsante Incidente. Torna a Xcode e fai clic sul pulsante Riproduci per caricare il log degli arresti anomali su Crashlytics.

Passaggio 3: registra l'ID risposta annuncio

Se carichi più annunci e li mostri in momenti diversi, ti consigliamo di registrare ogni ID risposta all'annuncio con una chiave separata. Ad esempio, questa guida utilizza un esempio che contiene un solo annuncio banner. Di conseguenza, nel seguente snippet registriamo l'ID risposta annuncio come chiave banner_ad_response_id.

Puoi anche creare più coppie chiave / valore personalizzate in Firebase Crashlytics per diversi tipi di annunci ed eventi di annunci. Fai riferimento alle notifiche del ciclo di vita delle richieste di annunci

Per ulteriori informazioni sul logging personalizzato, consulta Personalizzare i report sugli arresti anomali di Firebase Crashlytics.

Swift

Aggiungi il seguente codice a ViewController.swift. In sostanza, utilizza la funzione Crashlytics.setCustomValue() nella funzione di callback adViewDidReceiveAd.

import GoogleMobileAds
import UIKit

class ViewController: UIViewController, GADBannerViewDelegate {

    /// The banner view.
    @IBOutlet weak var bannerView: GADBannerView!

    override func viewDidLoad() {
       super.viewDidLoad()
       ...
       bannerView.delegate = self
       ...
    }

    /// Tells the delegate an ad request loaded an ad.
    func adViewDidReceiveAd(_ bannerView: GADBannerView) {
        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

Aggiungi il seguente codice a ViewController.m. In sostanza, utilizza la funzione [FIRCrashlytics crashlytics] setCustomValue nella funzione adViewDidReceiveAd.

@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

Complimenti! Ora vedrai il adResponseId più recente nella sezione delle chiavi delle sessioni di arresto anomalo nella dashboard di Crashlytics. Tieni presente che la visualizzazione nella dashboard di alcune chiavi può richiedere fino a un'ora.