Firebase Crashlytics की मदद से विज्ञापन रिस्पॉन्स आईडी को लॉग करना

प्लैटफ़ॉर्म चुनें: Android iOS Unity

Firebase Crashlytics एक हल्का और रीयलटाइम में ऐप्लिकेशन बंद होने की रिपोर्ट देने वाला टूल है. इससे आपको अपने ऐप्लिकेशन में स्थिरता की समस्याओं को मैनेज करने में आसानी होती है. Crashlytics, ऐप्लिकेशन बंद होने के मामलों को स्मार्ट तरीके से ग्रुप में बाँटता है और उन परिस्थितियों को हाइलाइट करता है जिनकी वजह से ऐप्लिकेशन बंद होता है. इससे आपको समस्याओं को हल करने में कम समय लगता है.

इस गाइड में, Crashlytics को अपने Xcode प्रोजेक्ट में इंटिग्रेट करने का तरीका बताया गया है, ताकि विज्ञापन रिस्पॉन्स आईडी लॉग किए जा सकें. बाद में, अपने ऐप्लिकेशन में क्रैश की समस्या हल करते समय, विज्ञापन रिस्पॉन्स आईडी देखा जा सकता है. साथ ही, AdMob में विज्ञापन समीक्षा केंद्र का इस्तेमाल करके, विज्ञापनों को ढूंढा और ब्लॉक किया जा सकता है.

पहला चरण: किसी iOS ऐप्लिकेशन में Firebase जोड़ना

  1. अगर आपको किसी नए ऐप्लिकेशन से Firebase की मदद से लॉग इन करने की सुविधा आज़मानी है, तो GitHub पर iOS के लिए Google Mobile Ads SDK के उदाहरणों वाली रिपॉज़िटरी को डाउनलोड या क्लोन करें. इस गाइड में खास तौर पर, बैनर का उदाहरण का इस्तेमाल किया गया है.

    अगर आपके पास पहले से ही कोई ऐप्लिकेशन है, तो आपको अपने ऐप्लिकेशन के बंडल आईडी के साथ अन्य चरणों पर आगे बढ़ना चाहिए. इन चरणों को, रिपॉज़िटरी में मौजूद अन्य उदाहरणों पर भी लागू किया जा सकता है. हालांकि, इसके लिए आपको कुछ बदलाव करने पड़ सकते हैं.

  2. Firebase Crashlytics का इस्तेमाल करने के लिए, आपको एक Firebase प्रोजेक्ट बनाना होगा. साथ ही, उसमें अपना ऐप्लिकेशन जोड़ना होगा. अगर आपने पहले से ही Firebase प्रोजेक्ट नहीं बनाया है, तो उसे बनाएं. पक्का करें कि आपने अपने ऐप्लिकेशन को इससे रजिस्टर किया हो.

    1. Firebase कंसोल के Crashlytics पेज पर, Crashlytics सेट अप करें पर क्लिक करें.

    2. इसके बाद, आपको एक स्क्रीन दिखेगी. इस पर, नहीं > नया Firebase ऐप्लिकेशन सेट अप करें पर क्लिक करें.

  3. Podfile में, Google Analytics और 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
  4. टर्मिनल या कमांड प्रॉम्प्ट में, अपने पॉड इंस्टॉल और अपडेट करें:

    pod install --repo-update
    
  5. प्रोजेक्ट लोड करने के लिए, Xcode में BannerExample.xcworkspace फ़ाइल खोलें.

दूसरा चरण: अपने ऐप्लिकेशन के लिए Firebase को कॉन्फ़िगर करना

Swift

अपनी 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
  }
}

Objective-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 में, Build Settings खोलें. इसके बाद, Build Phases टैब पर क्लिक करें. Fabric की रन स्क्रिप्ट जोड़ें:

अपने बिल्ड फ़ोल्डर को साफ़ करें. इसके बाद, अपना ऐप्लिकेशन बनाएं और चलाएं. अब Firebase वेब कंसोल में लॉग इन करके, Crashlytics डैशबोर्ड को ऐक्सेस किया जा सकता है.

(ज़रूरी नहीं): सेटअप की जांच करना

क्रैश बटन जोड़कर, हर बार बटन दबाने पर ऐप्लिकेशन को क्रैश किया जा सकता है. इस टेस्ट सेटअप से, तीसरे चरण में मौजूद कोड ट्रिगर होगा. इससे कस्टम लॉग, Firebase Crashlytics डैशबोर्ड पर भेजे जा सकेंगे.

Swift

अपनी ViewController.swift फ़ाइल में, viewDidLoad() फ़ंक्शन में ये लाइनें जोड़ें:

    override func viewDidLoad() {
        super.viewDidLoad()
        bannerView.delegate = self
        bannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716"
        bannerView.rootViewController = self
        bannerView.load(Request)
        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")
    }

Objective-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 टूलबार में, Stop बटन दबाएं. इसके बाद, सिम्युलेटर के ज़रिए ऐप्लिकेशन को फिर से लॉन्च करें. ऐप्लिकेशन लोड होने के बाद, क्रैश बटन पर क्लिक करें. Xcode पर वापस जाएं और क्रैश लॉग को Crashlytics पर अपलोड करने के लिए, Play बटन पर क्लिक करें.

तीसरा चरण: विज्ञापन रिस्पॉन्स आईडी को लॉग करना

अगर आपको एक से ज़्यादा विज्ञापन लोड करने हैं और उन्हें अलग-अलग समय पर दिखाना है, तो हर विज्ञापन रिस्पॉन्स आईडी को अलग कुंजी के साथ लॉग करना बेहतर होता है. उदाहरण के लिए, इस गाइड में सिर्फ़ एक बैनर विज्ञापन वाला उदाहरण दिया गया है. इसलिए, हम विज्ञापन रिस्पॉन्स आईडी को इस स्निपेट में banner_ad_response_id कुंजी के तौर पर लॉग करते हैं.

आपके पास अलग-अलग तरह के विज्ञापनों और विज्ञापन इवेंट के लिए, Firebase Crashlytics में एक से ज़्यादा कस्टम कुंजी / वैल्यू के जोड़े बनाने का विकल्प भी होता है. विज्ञापन अनुरोध के लाइफ़साइकल से जुड़ी सूचनाओं के लिए,

कस्टम लॉगिंग के बारे में ज़्यादा जानने के लिए, Firebase Crashlytics की क्रैश रिपोर्ट को पसंद के मुताबिक बनाएं पर जाएं.

Swift

अपने ViewController.swift में यह कोड जोड़ें. असल में, यह adViewDidReceiveAd कॉलबैक फ़ंक्शन में Crashlytics.setCustomValue() फ़ंक्शन का इस्तेमाल करता है.

import GoogleMobileAds
import UIKit

class ViewController: UIViewController, BannerViewDelegate {

    /// The banner view.
    @IBOutlet weak var bannerView: BannerView!

    override func viewDidLoad() {
       super.viewDidLoad()
       ...
       bannerView.delegate = self
       ...
    }

    /// Tells the delegate an ad request loaded an ad.
    func adViewDidReceiveAd(_ bannerView: BannerView) {
        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

अपने ViewController.m में यह कोड जोड़ें. असल में, यह adViewDidReceiveAd फ़ंक्शन में [FIRCrashlytics crashlytics] setCustomValue फ़ंक्शन का इस्तेमाल करता है.

@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

बधाई हो! अब आपको Crashlytics डैशबोर्ड पर, क्रैश सेशन के मुख्य सेक्शन में सबसे नया adResponseId दिखेगा. ध्यान दें कि कुछ कुंजियों को आपके डैशबोर्ड में दिखने में एक घंटा लग सकता है.