O Firebase Crashlytics é uma ferramenta de relatório de falhas leve e em tempo real que facilita o gerenciamento de problemas de estabilidade no seu app. O Crashlytics economiza tempo de solução de problemas agrupando falhas de maneira inteligente e destacando as circunstâncias que as causam.
Este guia descreve como integrar o Crashlytics ao seu projeto do Xcode para que você possa registrar IDs de resposta de anúncios. Mais tarde, ao solucionar problemas de falhas no seu app, você poderá pesquisar o ID de resposta do anúncio e usar a Central de revisão de anúncios no Ad Manager para encontrar e bloquear os anúncios.
Etapa 1:adicionar o Firebase a um aplicativo iOS
Se você quiser tentar fazer login com o Firebase em um app limpo, você pode fazer o download ou clonar Google Mobile Ads SDK exemplos para iOS repositório no GitHub. Este guia usa especificamente o exemplo de banner.
Se você já tiver um app, poderá passar para as outras etapas com o ID do pacote do app. As mesmas etapas também podem ser aplicadas a outros exemplos no repositório com pequenas adaptações.
Para usar o Firebase Crashlytics, crie um projeto do Firebase e adicione seu app a ele. Se ainda não tiver feito isso, crie um projeto do Firebase. Certifique-se de registrar seu app nele.
Na página do Crashlytics do console do Firebase, clique em Configurar o Crashlytics.
Na tela que aparece, clique em Não > Configurar um novo app do Firebase.

No Podfile, adicione os pods do Google Analytics e do Firebase Crashlytics.
source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' target 'AdManagerBannerExample' do use_frameworks! pod 'Google-Mobile-Ads-SDK' pod 'Firebase/Crashlytics' pod 'Firebase/Analytics' end
No terminal ou em um prompt de comando, instale e atualize seus pods:
pod install --repo-update
Abra o arquivo
AdManagerBannerExample.xcworkspacepara que o Xcode carregue o projeto.
Etapa 2:configurar o Firebase para seu app
Swift
No seu AppDelegate.swift, adicione as seguintes linhas:
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
No seu AppDelegate.m, adicione as seguintes linhas:
@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; }
No Xcode, abra Build Settings e clique na guia Build Phases. Adicione o script de execução do Fabric:

Limpe a pasta de build e, em seguida, crie e execute o app. Agora você pode fazer login no Firebase console da Web e acessar o painel do Crashlytics.
(Opcional) Testar a configuração
Ao adicionar um botão de falha , você pode forçar uma falha para causar uma falha de app com cada pressionamento de botão. Essa configuração de teste vai acionar o código na etapa 3 para enviar registros personalizados aos painéis do Firebase Crashlytics.
Swift
No seu ViewController.swift, adicione as seguintes linhas à função viewDidLoad():
override func viewDidLoad() { super.viewDidLoad() bannerView.delegate = self bannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716" bannerView.rootViewController = self bannerView.load(AdManagerRequest()) 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) }
Em seguida, adicione @IBAction à parte de baixo da declaração de classe:
@IBAction func crashButtonTapped(_ sender: AnyObject) { fatalError("Test Crash Happened") }
Objective-C
No seu ViewController.m, adicione as seguintes linhas ao método 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]; }
Em seguida, adicione IBAction à parte de baixo da declaração de classe:
‐ (IBAction)crashButtonTapped:(id)sender { assert(NO); }
Na barra de ferramentas do Xcode, pressione o botão Stop e reinicie o app em um simulador. Depois que o app for carregado, clique no botão Crash. Volte ao Xcode e clique no botão Play para que o registro de falhas seja enviado ao Crashlytics.
Etapa 3:registrar o ID de resposta do anúncio
Se você carregar vários anúncios e mostrá-los em momentos diferentes, é recomendável registrar cada ID de resposta do anúncio com uma chave separada. Por exemplo, este guia usa um exemplo que tem apenas um anúncio de banner. Portanto, registramos o ID de resposta do anúncio como a chave banner_ad_response_id no snippet a seguir.
Você também pode criar vários pares de chave-valor personalizados no Firebase Crashlytics para diferentes tipos de anúncios e eventos de anúncios. Consulte as notificações do ciclo de vida da solicitação de anúncio para
Swift
Adicione o código a seguir ao seu ViewController.swift. Basicamente, ele usa a
Crashlytics.setCustomValue()
função na adViewDidReceiveAd função de callback.
import GoogleMobileAds import UIKit class ViewController: UIViewController, BannerViewDelegate { /// The banner view. @IBOutlet weak var bannerView: AdManagerBannerView! override func viewDidLoad() { super.viewDidLoad() ... bannerView.delegate = self ... } /// Tells the delegate an ad request loaded an ad. func adViewDidReceiveAd(_ bannerView: AdManagerBannerView) { 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
Adicione o código a seguir ao seu ViewController.m. Basicamente, ele usa a
[FIRCrashlytics crashlytics]
setCustomValue
função na adViewDidReceiveAd função.
@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
Parabéns! Agora você verá o adResponseId mais recente na seção de chaves das sessões de falhas no painel do Crashlytics. Algumas chaves podem levar até uma hora para ficarem visíveis no painel.
