Firebase Crashlytics ile Reklam İsteği Kimliği Kaydetme

Firebase Crashlytics verilerinizi yönetmenizi kolaylaştıran hafif, gerçek zamanlı bir kilitlenme raporudur istikrarla ilgili sorunlarınız olabilir. Crashlytics, Google Cloud'un sunduğu özellikleri kullanarak kilitlenmeleri akıllı bir şekilde gruplandırmak ve bu kilitlenmelere yol açan koşulları kabul eder.

Bu kılavuzda, Crashlytics'i Xcode projenize nasıl entegre edeceğiniz açıklanmaktadır. reklam yanıtı kimliklerini günlüğe kaydedebileceğinizden emin olun. Daha sonra uygulamasında reklam yanıtı kimliğini arayabilir ve Reklam İnceleme Merkezi'ni Ad Manager reklamları engelleyebilir ve engelleyebilirsiniz.

1. Adım: Firebase'i bir iOS uygulamasına ekleyin

  1. Temiz bir uygulama üzerinden Firebase ile giriş yapmayı denemek isterseniz iOS için Google Mobile Ads SDK'sı örneklerini indirin veya klonlayın repository: GitHub. Bu kılavuzda özellikle . Banner Örneği.

    Zaten uygulamanız varsa diğer adımlara geçebilirsiniz. uygulamanızın paket kimliği ile değiştirin. Aynı adımlar, küçük uyarlamalara sahip örnekler oluşturacağız.

  2. Firebase Crashlytics'i kullanmak için Firebase projesi oluşturmanız ve uygulamanızı ona ekleyin. Henüz oluşturmadıysanız bir Firebase projesi oluşturun. Marka kaydattırmayı unutmayın. ekleyebilirsiniz.

    1. Firebase konsolunun Crashlytics sayfasında Ayarla'yı tıklayın. Crashlytics'i seçin.

    2. Görüntülenen ekranda Hayır > Yeni bir Firebase oluşturun uygulamasında gösterilir.

  3. Podfile'a, Google Analytics ve Firebase Crashlytics için Kapsüller ekleyin.

    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
  4. Terminal'de veya bir komut isteminde kapsüllerinizi yükleyin ve güncelleyin:

    pod install --repo-update
    
  5. Şu öğe için AdManagerBannerExample.xcworkspace dosyasını aç: Xcode kullanarak projeyi yükleyin.

2. Adım: Uygulamanız için Firebase'i yapılandırın

Swift

AppDelegate.swift bölümüne aşağıdaki satırları ekleyin:

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

AppDelegate.m bölümüne aşağıdaki satırları ekleyin:

@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'da Build Settings (Derleme Ayarları) bölümünü açın, Build Phases (Derleme Aşamaları) sekmesini tıklayın. URL'yi Fabric çalıştırma komut dosyası:

Derleme klasörünüzü temizleyin; sonra uygulamanızı derleyip çalıştırın. Şimdi giriş yapabilirsiniz: Firebase web konsoluna gidip Crashlytics kontrol paneli.

(İsteğe bağlı): Kurulumunuzu test edin

Kilitlenme ekleyerek düğme her düğmeye her basıldığında uygulamanın kilitlenmesine neden olacak şekilde kilitlenmeyi zorlayabilirsiniz. Bu test kurulumu, özel günlükleri Firebase Crashlytic'e göndermek için 3. adımdaki kodu tetikler. kontrol panelleridir.

Swift

ViewController.swift içinde aşağıdaki satırları viewDidLoad() işlevi:

    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)
    }

Ardından, sınıf beyanınızın alt kısmına @IBAction ifadesini ekleyin:

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

Objective-C

ViewController.m bölümünde aşağıdaki satırları viewDidLoad bölümüne ekleyin yöntem:

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

Ardından, sınıf beyanınızın alt kısmına IBAction ifadesini ekleyin:

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

Xcode araç çubuğunda Durdur düğmesine basın ve uygulamayı yeniden başlatın simülatörle oynanabilir. Uygulama yüklendikten sonra, sağ taraftaki Kilitlenme düğmesini tıklayın. Xcode'a geri dönün ve kilitlenme günlüğünün şu şekilde olması için Oynat düğmesini tıklayın: Crashlytics'e yüklendi.

3. Adım: Reklam yanıtı kimliğini günlüğe kaydedin

Birden çok reklam yükleyip farklı zamanlarda gösteriyorsanız Her reklam yanıtı kimliğini ayrı bir anahtarla günlüğe kaydeder. Örneğin, bu kılavuzda yalnızca bir banner reklam içeren bir örnek görebilirsiniz. Bu nedenle, reklam yanıtı kimliği banner_ad_response_id anahtarını ekleyin.

Firebase Crashlytics'te birden fazla özel anahtar / değer çifti de oluşturabilirsiniz farklı reklam türlerini ve reklam etkinliklerini görebilirsiniz. Reklam isteği yaşam döngüsünü inceleyin bildirimler

Firebase Crashlytics kilitlenmenizi özelleştirin raporlar konusuna bakın.

Swift

Aşağıdaki kodu ViewController.swift cihazınıza ekleyin. Özetlemek gerekirse Crashlytics.setCustomValue() işlevini adViewDidReceiveAd geri çağırma işlevinde bulabilirsiniz.

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

Aşağıdaki kodu ViewController.m cihazınıza ekleyin. Özetlemek gerekirse [FIRCrashlytics crashlytics]. setCustomValue işlevini adViewDidReceiveAd işlevinde kullanabilirsiniz.

@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

Tebrikler! Artık anahtardaki en son adResponseId öğesini göreceksiniz kilitlenme oturumlarının olduğu bir bölümde görebilirsiniz. Bazı anahtarların kontrol panelinizde görünmesi bir saat kadar sürebilir.