Firebase Crashlytics est un outil de création de rapports de plantages léger et en temps réel qui vous permet de gérer facilement les problèmes de stabilité de votre application. Crashlytics vous fait gagner du temps en regroupant intelligemment les plantages et en mettant en évidence les circonstances qui les ont provoqués.
Ce guide explique comment intégrer Crashlytics à votre projet Xcode afin de pouvoir enregistrer les ID de réponse d'annonce. Plus tard, lorsque vous résolvez des plantages dans votre application, vous pouvez rechercher l'ID de réponse d'annonce et utiliser le Centre de vérification des annonces dans Ad Manager pour trouver et bloquer les annonces.
Étape 1 : Ajouter Firebase à une application iOS
Si vous souhaitez essayer de vous connecter avec Firebase à partir d'une application propre, vous pouvez télécharger ou cloner Google Mobile Ads SDK exemples pour iOS dépôt sur GitHub. Ce guide utilise spécifiquement l' exemple de bannière.
Si vous possédez déjà une application, vous devriez pouvoir passer aux autres étapes avec l'ID du bundle de votre application. Les mêmes étapes peuvent également être appliquées à d'autres exemples du dépôt avec des adaptations mineures.
Pour utiliser Firebase Crashlytics, vous devez créer un projet Firebase et y ajouter votre application. Si ce n'est pas déjà fait, créez un projet Firebase. Veillez à y enregistrer votre application.
Sur la page Crashlytics de la console Firebase, cliquez sur Configurer Crashlytics.
Sur l'écran qui s'affiche, cliquez sur Non > Configurer une application Firebase.

Dans le Podfile, ajoutez les pods pour Google Analytics et 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
Dans le terminal ou une invite de commande, installez et mettez à jour vos pods :
pod install --repo-update
Ouvrez le fichier
AdManagerBannerExample.xcworkspacepour qu'Xcode charge le projet.
Étape 2 : Configurer Firebase pour votre application
Swift
Dans votre AppDelegate.swift, ajoutez les lignes suivantes :
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
Dans votre AppDelegate.m, ajoutez les lignes suivantes :
@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; }
Dans Xcode, ouvrez Build Settings (Paramètres de compilation), puis cliquez sur l'onglet Build Phases (Phases de compilation). Ajoutez le script d'exécution Fabric :

Nettoyez votre dossier de compilation, puis compilez et exécutez votre application. Vous pouvez maintenant vous connecter à Firebase console Web et accéder au tableau de bord Crashlytics.
Tester votre configuration(facultatif)
En ajoutant un bouton de plantage , vous pouvez forcer un plantage de l'application à chaque pression du bouton. Cette configuration de test déclenchera le code de l'étape 3 pour envoyer des journaux personnalisés aux tableaux de bord Firebase Crashlytic.
Swift
Dans votre ViewController.swift, ajoutez les lignes suivantes à la fonction 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) }
Ajoutez ensuite @IBAction en bas de la déclaration de votre classe :
@IBAction func crashButtonTapped(_ sender: AnyObject) { fatalError("Test Crash Happened") }
Objective-C
Dans votre ViewController.m, ajoutez les lignes suivantes à la méthode 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]; }
Ajoutez ensuite IBAction en bas de la déclaration de votre classe :
‐ (IBAction)crashButtonTapped:(id)sender { assert(NO); }
Dans la barre d'outils Xcode, appuyez sur le bouton Stop (Arrêter), puis relancez l'application via un simulateur. Une fois l'application chargée, vous pouvez cliquer sur le bouton Crash (Plantages). Revenez à Xcode et cliquez sur le bouton Play (Lecture) pour que le journal des plantages soit importé dans Crashlytics.
Étape 3 : Enregistrer l'ID de réponse d'annonce
Si vous chargez plusieurs annonces et les diffusez à différents moments, il est conseillé d'enregistrer chaque ID de réponse d'annonce avec une clé distincte. Par exemple, ce guide utilise un exemple qui ne comporte qu'une seule bannière publicitaire. Par conséquent, nous enregistrons l'ID de réponse d'annonce en tant que clé banner_ad_response_id dans l'extrait suivant.
Vous pouvez également créer plusieurs paires clé / valeur personnalisées dans Firebase Crashlytics pour différents types d'annonces et événements publicitaires. Consultez les notifications du cycle de vie des demandes d'annonces pour les
- bannières ;
- interstitiels ;
- annonces natives unifiées ;
- annonces avec récompense ;
- annonces vidéo avec récompense.
Pour en savoir plus sur la journalisation personnalisée, consultez Personnaliser vos rapports de plantage Firebase Crashlytics.
Swift
Ajoutez le code suivant à votre ViewController.swift. Il utilise essentiellement la
Crashlytics.setCustomValue()
fonction dans la adViewDidReceiveAd fonction de rappel.
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
Ajoutez le code suivant à votre ViewController.m. Il utilise essentiellement la
[FIRCrashlytics crashlytics]
setCustomValue
fonction dans la adViewDidReceiveAd fonction.
@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
Félicitations ! Vous verrez désormais l'adResponseId le plus récent dans la section des clés des sessions de plantage de votre tableau de bord Crashlytics. Notez que certaines clés peuvent mettre jusqu'à une heure à s'afficher dans votre tableau de bord.
