Firebase Crashlytics — это легкий инструмент для создания отчетов о сбоях в реальном времени, который позволяет легко управлять проблемами стабильности в вашем приложении. Crashlytics экономит ваше время на устранение неполадок, интеллектуально группируя сбои и выделяя обстоятельства, которые к ним привели.
В этом руководстве описывается, как интегрировать Crashlytics в ваш проект Xcode, чтобы вы могли регистрировать идентификаторы ответов на объявления. Позже, когда вы будете устранять сбои в своем приложении, вы сможете найти идентификатор ответа на объявление и использовать Центр просмотра объявлений вМенеджер рекламынайти и заблокировать рекламу.
Шаг 1. Добавьте Firebase в приложение iOS
Если вы хотите попробовать войти в систему с помощью Firebase из чистого приложения, вы можете загрузить или клонировать примеры Google Mobile Ads SDK для репозитория iOS на GitHub. В этом руководстве специально используетсяПример баннера .
Если у вас уже есть приложение, вы сможете перейти к другим шагам, используя идентификатор пакета вашего приложения. Те же шаги можно применить и к другим примерам в репозитории с небольшими изменениями.
Чтобы использовать Firebase Crashlytics, вам необходимо создать проект Firebase и добавить в него свое приложение. Если вы еще этого не сделали, создайте проект Firebase. Обязательно зарегистрируйте в нем свое приложение .
На странице Crashlytics консоли Firebase нажмите «Настроить Crashlytics» .
На появившемся экране нажмите Нет > Настроить новое приложение Firebase .
В подфайл добавьте модули для Google Analytics и 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
В терминале или командной строке установите и обновите модули:
pod install --repo-update
Откройте
AdManagerBannerExample.xcworkspace
ФайлAdManagerBannerExample.xcworkspace
для Xcode для загрузки проекта.
Шаг 2. Настройте Firebase для вашего приложения
Быстрый
В свой AppDelegate.swift
добавьте следующие строки:
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 } }
Цель-C
В вашем AppDelegate.m
добавьте следующие строки:
@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; }
В Xcode откройте «Настройки сборки» , перейдите на вкладку «Фазы сборки» . Добавьте скрипт запуска Fabric:
Очистите папку сборки; затем создайте и запустите свое приложение. Теперь вы можете войти в веб-консоль Firebase и получить доступ к панели управления Crashlytics.
(Необязательно): проверьте свою настройку.
Добавив кнопку сбоя, вы можете вызвать сбой, вызывающий сбой приложения при каждом нажатии кнопки. Эта тестовая настройка запустит код на шаге 3 для отправки пользовательских журналов на информационные панели Firebase Crashlytic.
Быстрый
В вашем ViewController.swift
добавьте следующие строки в функцию 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) }
Затем добавьте этот @IBAction
в конец объявления класса:
@IBAction func crashButtonTapped(_ sender: AnyObject) { fatalError("Test Crash Happened") }
Цель-C
В вашем ViewController.m
добавьте следующие строки в метод 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]; }
Затем добавьте этот IBAction
в конец объявления класса:
‐ (IBAction)crashButtonTapped:(id)sender { assert(NO); }
На панели инструментов Xcode нажмите кнопку «Стоп» , а затем перезапустите приложение через симулятор. После загрузки приложения вы можете нажать кнопку «Сбой» . Вернитесь в Xcode и нажмите кнопку «Воспроизвести» , чтобы журнал сбоев был загружен в Crashlytics.
Шаг 3. Зарегистрируйте идентификатор ответа на объявление.
Если вы загружаете несколько объявлений и показываете их в разное время, рекомендуется регистрировать каждый идентификатор ответа на объявление с помощью отдельного ключа. Например, в этом руководстве используется пример, в котором есть только один рекламный баннер. Следовательно, мы регистрируем идентификатор ответа на объявление как ключ banner_ad_response_id
в следующем фрагменте.
Вы также можете создать несколько пользовательских пар ключ/значение в Firebase Crashlytics для разных типов объявлений и рекламных событий. Обратитесь к уведомлениям о жизненном цикле запроса объявления, чтобы
Посетите раздел «Настройка отчетов о сбоях Firebase Crashlytics», чтобы получить дополнительную информацию о пользовательском ведении журналов.
Быстрый
Добавьте следующий код в свой ViewController.swift
. По сути, он использует функцию Crashlytics.setCustomValue()
в функции обратного вызова 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") } } }
Цель-C
Добавьте следующий код в свой ViewController.m
. По сути, он использует функцию [FIRCrashlytics crashlytics]
setCustomValue
в функции 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
Поздравляем! Теперь вы увидите самый последний adResponseId
в ключевом разделе сеансов сбоя на панели управления Crashlytics. Обратите внимание, что некоторым клавишам может потребоваться до часа, чтобы они стали видны на вашей панели управления.