ফায়ারবেস ক্র্যাশলিটিক্স হলো একটি হালকা ও রিয়েল-টাইম ক্র্যাশ রিপোর্টার, যা আপনার অ্যাপের স্থিতিশীলতাজনিত সমস্যাগুলো পরিচালনা করা সহজ করে তোলে। ক্র্যাশলিটিক্স বুদ্ধিমত্তার সাথে ক্র্যাশগুলোকে শ্রেণিবদ্ধ করে এবং সেগুলোর পেছনের পরিস্থিতিগুলো তুলে ধরে আপনার সমস্যা সমাধানের সময় বাঁচায়।
এই নির্দেশিকায় বর্ণনা করা হয়েছে কীভাবে আপনার Xcode প্রোজেক্টে Crashlytics যুক্ত করবেন, যাতে আপনি বিজ্ঞাপনের প্রতিক্রিয়া আইডিগুলো লগ করতে পারেন। পরবর্তীতে, যখন আপনি আপনার অ্যাপের ক্র্যাশ সমস্যা সমাধান করবেন, তখন আপনি বিজ্ঞাপনের প্রতিক্রিয়া আইডিটি খুঁজে বের করতে পারবেন এবং AdMob- এর Ad Review Center ব্যবহার করে বিজ্ঞাপনগুলো খুঁজে বের করে ব্লক করতে পারবেন।
ধাপ ১: একটি iOS অ্যাপ্লিকেশনে Firebase যোগ করুন
আপনি যদি একটি নতুন অ্যাপ থেকে Firebase দিয়ে লগিং চেষ্টা করতে চান, তাহলে GitHub-এ থাকা iOS রিপোজিটরির জন্য Google Mobile Ads SDK উদাহরণগুলো ডাউনলোড বা ক্লোন করতে পারেন। এই নির্দেশিকাটিতে বিশেষভাবে ব্যানার উদাহরণটি ব্যবহার করা হয়েছে।
আপনার যদি আগে থেকেই একটি অ্যাপ থাকে, তাহলে আপনি আপনার অ্যাপের বান্ডেল আইডি ব্যবহার করে পরবর্তী ধাপে যেতে পারবেন। সামান্য কিছু পরিবর্তন করে রিপোজিটরিতে থাকা অন্যান্য উদাহরণের ক্ষেত্রেও একই ধাপগুলো প্রয়োগ করা যেতে পারে।
Firebase Crashlytics ব্যবহার করার জন্য, আপনাকে একটি Firebase প্রজেক্ট তৈরি করতে হবে এবং তাতে আপনার অ্যাপটি যুক্ত করতে হবে। যদি আগে থেকে না করে থাকেন, তাহলে একটি Firebase প্রজেক্ট তৈরি করুন। আপনার অ্যাপটি এতে রেজিস্টার করা নিশ্চিত করুন।
Firebase কনসোলের Crashlytics পৃষ্ঠায়, ‘Set up Crashlytics’-এ ক্লিক করুন।
যে স্ক্রিনটি আসবে, সেখানে No > Set up a new Firebase app -এ ক্লিক করুন।

Podfile-এ Google Analytics এবং Firebase Crashlytics-এর জন্য Pod-গুলো যোগ করুন।
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
টার্মিনাল বা কমান্ড প্রম্পটে আপনার পডগুলো ইনস্টল ও আপডেট করুন:
pod install --repo-update
প্রজেক্টটি লোড করার জন্য Xcode-এ
BannerExample.xcworkspaceফাইলটি খুলুন।
ধাপ ২: আপনার অ্যাপের জন্য ফায়ারবেস কনফিগার করুন
সুইফট
আপনার 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 রান স্ক্রিপ্টটি যোগ করুন:

আপনার বিল্ড ফোল্ডারটি পরিষ্কার করুন; তারপর, আপনার অ্যাপটি বিল্ড ও রান করুন। এখন আপনি ফায়ারবেস ওয়েব কনসোলে লগইন করে ক্র্যাশলিটিক্স ড্যাশবোর্ড অ্যাক্সেস করতে পারবেন।
(ঐচ্ছিক): আপনার সেটআপ পরীক্ষা করুন
একটি ক্র্যাশ বাটন যোগ করার মাধ্যমে আপনি প্রতিটি বাটন চাপার সাথে সাথে অ্যাপটিকে জোরপূর্বক ক্র্যাশ করাতে পারেন। এই টেস্ট সেটআপটি ফায়ারবেস ক্র্যাশলিটিক ড্যাশবোর্ডে কাস্টম লগ পাঠানোর জন্য ধাপ ৩-এর কোডটিকে ট্রিগার করবে।
সুইফট
আপনার 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") }
উদ্দেশ্য-সি
আপনার 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 বোতামটি চাপুন এবং তারপর একটি সিমুলেটরের মাধ্যমে অ্যাপটি পুনরায় চালু করুন। অ্যাপটি লোড হয়ে গেলে, আপনি Crash বোতামটি ক্লিক করতে পারেন। Xcode-এ ফিরে এসে Play বোতামটি ক্লিক করুন, যাতে ক্র্যাশ লগটি Crashlytics-এ আপলোড হয়।
ধাপ ৩: বিজ্ঞাপনের প্রতিক্রিয়া আইডিটি লগ করুন।
আপনি যদি একাধিক বিজ্ঞাপন লোড করেন এবং সেগুলি বিভিন্ন সময়ে দেখান, তাহলে প্রতিটি বিজ্ঞাপন প্রতিক্রিয়া আইডি একটি আলাদা কী দিয়ে লগ করা ভালো। উদাহরণস্বরূপ, এই নির্দেশিকায় এমন একটি উদাহরণ ব্যবহার করা হয়েছে যেখানে কেবল একটি ব্যানার বিজ্ঞাপন রয়েছে। তাই, আমরা নিম্নলিখিত কোড অংশে বিজ্ঞাপন প্রতিক্রিয়া আইডিটিকে banner_ad_response_id কী হিসাবে লগ করেছি।
আপনি Firebase Crashlytics-এ বিভিন্ন বিজ্ঞাপনের ধরন এবং বিজ্ঞাপনের ইভেন্টের জন্য একাধিক কাস্টম কী/ভ্যালু পেয়ারও তৈরি করতে পারেন। এর জন্য বিজ্ঞাপন অনুরোধের জীবনচক্রের বিজ্ঞপ্তিগুলো দেখুন।
কাস্টম লগিং সম্পর্কে আরও তথ্যের জন্য আপনার Firebase Crashlytics ক্র্যাশ রিপোর্ট কাস্টমাইজ করুন (Customize your Firebase Crashlytics crash reports) দেখুন।
সুইফট
আপনার 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 ড্যাশবোর্ডের ক্র্যাশ সেশনের 'key' বিভাগে সর্বশেষ adResponseId দেখতে পাবেন। উল্লেখ্য যে, কিছু 'key' আপনার ড্যাশবোর্ডে দৃশ্যমান হতে এক ঘণ্টা পর্যন্ত সময় লাগতে পারে।
