Firebase Crashlytics adalah pelapor error yang ringan dan bekerja secara realtime untuk memudahkan Anda mengelola masalah stabilitas di aplikasi Anda. Crashlytics menghemat waktu pemecahan masalah Anda dengan mengelompokkan error secara cerdas dan menyoroti keadaan yang menyebabkannya.
Panduan ini menjelaskan cara mengintegrasikan Crashlytics ke dalam project Xcode sehingga Anda dapat mencatat ID respons iklan. Kemudian, saat memecahkan masalah error di aplikasi, Anda dapat mencari ID respons iklan dan menggunakan Pusat Peninjauan Iklan di AdMob untuk menemukan dan memblokir iklan.
Langkah 1: Tambahkan Firebase ke aplikasi iOS
Jika ingin mencoba logging dengan Firebase dari aplikasi bersih, Anda dapat mendownload atau meng-clone contoh Google Mobile Ads SDK untuk repositori iOS di GitHub. Panduan ini secara khusus menggunakan Contoh Banner.
Jika sudah memiliki aplikasi, Anda dapat melanjutkan ke langkah-langkah lain terkait ID paket aplikasi. Langkah yang sama juga dapat diterapkan pada contoh lain di repositori dengan adaptasi kecil.
Untuk menggunakan Firebase Crashlytics, Anda harus membuat project Firebase dan menambahkan aplikasi ke dalamnya. Jika belum melakukannya, buat project Firebase. Pastikan untuk mendaftarkan aplikasi Anda ke sana.
Di halaman Crashlytics pada Firebase console, klik Set up Crashlytics.
Di layar yang muncul, klik No > Set up a new Firebase app.
Di Podfile, tambahkan Pod untuk Google Analytics dan 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
Di Terminal atau command prompt, instal dan update Pod Anda:
pod install --repo-update
Buka file
BannerExample.xcworkspace
untuk Xcode guna memuat project.
Langkah 2: Konfigurasikan Firebase untuk aplikasi Anda
Swift
Di AppDelegate.swift
Anda, tambahkan baris berikut:
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
Di AppDelegate.m
Anda, tambahkan baris berikut:
@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; }
Di Xcode, buka Build Settings, klik tab Build Phases. Tambahkan skrip pengoperasian Fabric:
Bersihkan folder build Anda; lalu, build dan jalankan aplikasi Anda. Sekarang Anda dapat login ke konsol web Firebase dan mengakses dasbor Crashlytics.
(Opsional): Uji Penyiapan Anda
Dengan Menambahkan tombol error, Anda dapat memaksa error yang menyebabkan aplikasi mengalami error setiap kali tombol ditekan. Penyiapan pengujian ini akan memicu kode di Langkah 3 untuk mengirim log kustom ke dasbor Firebase Crashlytic.
Swift
Di ViewController.swift
, tambahkan baris berikut ke fungsi 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) }
Kemudian, tambahkan @IBAction
ini ke bagian bawah deklarasi class Anda:
@IBAction func crashButtonTapped(_ sender: AnyObject) { fatalError("Test Crash Happened") }
Objective-C
Di ViewController.m
, tambahkan baris berikut ke metode
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]; }
Kemudian, tambahkan IBAction
ini ke bagian bawah deklarasi class Anda:
‐ (IBAction)crashButtonTapped:(id)sender { assert(NO); }
Di toolbar Xcode, tekan tombol Stop, lalu luncurkan kembali aplikasi melalui simulator. Setelah aplikasi dimuat, Anda dapat mengklik tombol Crash. Kembali ke Xcode dan klik tombol Play agar log error diupload ke Crashlytics.
Langkah 3: Catat ID respons iklan
Jika Anda memuat beberapa iklan dan menampilkannya pada waktu yang berbeda, sebaiknya catat setiap ID respons iklan dengan kunci terpisah. Misalnya, panduan ini menggunakan contoh yang hanya memiliki satu iklan banner. Oleh karena itu, kami mencatat ID respons iklan sebagai
kunci banner_ad_response_id
dalam cuplikan berikut.
Anda juga dapat membuat beberapa key-value pair kustom di Firebase Crashlytics untuk berbagai jenis iklan dan peristiwa iklan. Lihat notifikasi siklus proses permintaan iklan untuk
Buka bagian Menyesuaikan laporan error Firebase Crashlytics untuk mengetahui informasi selengkapnya tentang logging kustom.
Swift
Tambahkan kode berikut ke ViewController.swift
Anda. Pada dasarnya, fungsi ini menggunakan fungsi Crashlytics.setCustomValue()
dalam fungsi 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
Tambahkan kode berikut ke ViewController.m
Anda. Pada dasarnya, kode ini menggunakan fungsi
setCustomValue
[FIRCrashlytics crashlytics]
dalam fungsi 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
Selamat! Sekarang Anda akan melihat adResponseId
terbaru di bagian utama sesi error di dasbor Crashlytics. Perlu diperhatikan bahwa beberapa kunci mungkin memerlukan waktu hingga satu jam agar terlihat di dasbor Anda.