Firebase Crashlytics এর সাথে বিজ্ঞাপন প্রতিক্রিয়া আইডি লগিং করা

প্ল্যাটফর্ম নির্বাচন করুন: অ্যান্ড্রয়েড আইওএস ইউনিটি

ফায়ারবেস ক্র্যাশলিটিক্স একটি হালকা, রিয়েলটাইম ক্র্যাশ রিপোর্টার যা আপনার অ্যাপের স্থিতিশীলতার সমস্যাগুলি পরিচালনা করা সহজ করে তোলে। ক্র্যাশলিটিক্স বুদ্ধিমত্তার সাথে ক্র্যাশগুলিকে গ্রুপ করে এবং এর ফলে সৃষ্ট পরিস্থিতিগুলি হাইলাইট করে আপনার সমস্যা সমাধানের সময় সাশ্রয় করে।

এই নির্দেশিকাটি বর্ণনা করে কিভাবে আপনার Xcode প্রোজেক্টে Crashlytics ইন্টিগ্রেট করবেন যাতে আপনি বিজ্ঞাপন প্রতিক্রিয়া আইডি লগ করতে পারেন। পরে, যখন আপনি আপনার অ্যাপে ক্র্যাশ সমস্যা সমাধান করবেন, তখন আপনি বিজ্ঞাপন প্রতিক্রিয়া আইডিটি দেখতে পারেন এবং AdMob- এর বিজ্ঞাপন পর্যালোচনা কেন্দ্র ব্যবহার করে বিজ্ঞাপনগুলি খুঁজে বের করতে এবং ব্লক করতে পারেন।

ধাপ ১: একটি iOS অ্যাপ্লিকেশনে Firebase যোগ করুন

  1. যদি আপনি একটি পরিষ্কার অ্যাপ থেকে Firebase দিয়ে লগিং করার চেষ্টা করতে চান, তাহলে আপনি GitHub থেকে iOS রিপোজিটরির জন্য Google Mobile Ads SDK উদাহরণ ডাউনলোড বা ক্লোন করতে পারেন। এই নির্দেশিকাটি বিশেষভাবে ব্যানার উদাহরণ ব্যবহার করে।

    যদি আপনার ইতিমধ্যেই একটি অ্যাপ থাকে, তাহলে আপনার অ্যাপের বান্ডেল আইডি ব্যবহার করে অন্যান্য ধাপে এগিয়ে যেতে পারবেন। একই ধাপগুলি ছোটখাটো অভিযোজন সহ রিপোজিটরির অন্যান্য উদাহরণেও প্রয়োগ করা যেতে পারে।

  2. Firebase Crashlytics ব্যবহার করার জন্য, আপনাকে একটি Firebase প্রকল্প তৈরি করতে হবে এবং এতে আপনার অ্যাপ যুক্ত করতে হবে। যদি আপনি ইতিমধ্যে এটি না করে থাকেন, তাহলে একটি Firebase প্রকল্প তৈরি করুন। আপনার অ্যাপটি অবশ্যই এতে নিবন্ধিত করুন।

    1. Firebase কনসোলের Crashlytics পৃষ্ঠায়, Crashlytics সেট আপ করুন এ ক্লিক করুন।

    2. প্রদর্শিত স্ক্রিনে, না > একটি নতুন Firebase অ্যাপ সেট আপ করুন এ ক্লিক করুন।

  3. পডফাইলে, গুগল অ্যানালিটিক্স এবং ফায়ারবেস ক্র্যাশলিটিক্সের জন্য পড যোগ করুন।

    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 কনফিগার করুন

সুইফট

আপনার 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
  }
}

অবজেক্টিভ-সি

তোমার 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 run স্ক্রিপ্ট যোগ করুন:

আপনার বিল্ড ফোল্ডারটি পরিষ্কার করুন; তারপর, আপনার অ্যাপটি তৈরি করুন এবং চালান। এখন আপনি Firebase ওয়েব কনসোলে লগইন করতে পারেন এবং Crashlytics ড্যাশবোর্ড অ্যাক্সেস করতে পারেন।

(ঐচ্ছিক): আপনার সেটআপ পরীক্ষা করুন

একটি ক্র্যাশ বোতাম যোগ করে আপনি প্রতিটি বোতাম টিপে একটি অ্যাপ ক্র্যাশ করার জন্য জোর করে ক্র্যাশ করতে পারেন। এই পরীক্ষামূলক সেটআপটি ধাপ 3-এ কোডটি ট্রিগার করবে যাতে ফায়ারবেস ক্র্যাশলাইটিক ড্যাশবোর্ডে কাস্টম লগ পাঠানো যায়।

সুইফট

তোমার ViewController.swiftviewDidLoad() ফাংশনে নিম্নলিখিত লাইনগুলি যোগ করো:

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

অবজেক্টিভ-সি

আপনার ViewController.mviewDidLoad পদ্ধতিতে নিম্নলিখিত লাইনগুলি যোগ করুন:

 (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 " বোতাম টিপুন, এবং তারপর একটি সিমুলেটরের মাধ্যমে অ্যাপটি পুনরায় চালু করুন। অ্যাপটি লোড হওয়ার পরে, আপনি " Crash " বোতামে ক্লিক করতে পারেন। Xcode-এ ফিরে আসুন এবং "Play" বোতামে ক্লিক করুন যাতে ক্র্যাশ লগটি Crashlytics-এ আপলোড করা যায়।

ধাপ ৩: বিজ্ঞাপনের প্রতিক্রিয়া আইডি লগ করুন

যদি আপনি একাধিক বিজ্ঞাপন লোড করেন এবং বিভিন্ন সময়ে সেগুলি দেখান, তাহলে প্রতিটি বিজ্ঞাপন প্রতিক্রিয়া আইডি একটি পৃথক কী দিয়ে লগ করা একটি ভাল ধারণা। উদাহরণস্বরূপ, এই নির্দেশিকাটি এমন একটি উদাহরণ ব্যবহার করে যেখানে কেবল একটি ব্যানার বিজ্ঞাপন রয়েছে। অতএব, আমরা নিম্নলিখিত স্নিপেটে বিজ্ঞাপন প্রতিক্রিয়া আইডিটিকে banner_ad_response_id কী হিসাবে লগ করি।

আপনি বিভিন্ন বিজ্ঞাপনের ধরণ এবং বিজ্ঞাপন ইভেন্টের জন্য Firebase Crashlytics-এ একাধিক কাস্টম কী / মান জোড়া তৈরি করতে পারেন। বিজ্ঞাপন অনুরোধের জীবনচক্র বিজ্ঞপ্তিগুলি দেখুন

কাস্টম লগিং সম্পর্কে আরও তথ্যের জন্য আপনার Firebase Crashlytics ক্র্যাশ রিপোর্টগুলি কাস্টমাইজ করুন দেখুন।

সুইফট

আপনার 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")
        }
    }
}

অবজেক্টিভ-সি

আপনার 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 দেখতে পাবেন। মনে রাখবেন যে কিছু কী আপনার ড্যাশবোর্ডে দৃশ্যমান হতে এক ঘন্টা পর্যন্ত সময় লাগতে পারে।