Firebase Crashlytics یک گزارشگر تصادف سبک و بیدرنگ است که مدیریت مشکلات پایداری در برنامهتان را برای شما آسان میکند. Crashlytics با گروه بندی هوشمند خرابی ها و برجسته کردن شرایطی که منجر به آنها می شود، در زمان عیب یابی شما صرفه جویی می کند.
این راهنما نحوه ادغام Crashlytics را در پروژه Xcode خود توضیح می دهد تا بتوانید شناسه های پاسخ آگهی را ثبت کنید. بعداً، وقتی خرابیهای برنامه خود را عیبیابی میکنید، میتوانید شناسه پاسخ آگهی را جستجو کنید و از مرکز بررسی آگهی درAdMobبرای پیدا کردن و مسدود کردن تبلیغات
مرحله 1: Firebase را به یک برنامه iOS اضافه کنید
اگر میخواهید با Firebase از یک برنامه تمیز وارد شوید، میتوانید نمونههای Google Mobile Ads SDK را برای مخزن iOS در GitHub دانلود یا کلون کنید. این راهنما به طور خاص ازنمونه بنر
اگر قبلاً یک برنامه دارید، باید بتوانید با شناسه بسته برنامه خود به مراحل دیگر بروید. همین مراحل را می توان برای نمونه های دیگر در مخزن با انطباق های جزئی نیز اعمال کرد.
برای استفاده از Firebase Crashlytics، باید یک پروژه Firebase ایجاد کنید و برنامه خود را به آن اضافه کنید. اگر قبلاً این کار را نکرده اید، یک پروژه Firebase ایجاد کنید. مطمئن شوید که برنامه خود را در آن ثبت کنید .
در صفحه Crashlytics کنسول Firebase، روی Set up Crashlytics کلیک کنید.
در صفحه نمایش داده شده، روی No > Set up a new Firebase app کلیک کنید.
در Podfile، Pods را برای 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
در ترمینال یا خط فرمان، Pods خود را نصب و به روز کنید:
pod install --repo-update
را باز کنید
BannerExample.xcworkspace
فایلBannerExample.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، Build Settings را باز کنید، روی برگه Build Phases کلیک کنید. اسکریپت اجرای 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، دکمه Stop را فشار دهید و سپس برنامه را از طریق یک شبیه ساز دوباره راه اندازی کنید. پس از بارگیری برنامه، می توانید روی دکمه Crash کلیک کنید. به Xcode برگردید و روی دکمه Play کلیک کنید تا گزارش خرابی در Crashlytics آپلود شود.
مرحله 3: شناسه پاسخ آگهی را ثبت کنید
اگر چندین آگهی را بارگیری میکنید و آنها را در زمانهای مختلف نشان میدهید، ایده خوبی است که هر شناسه پاسخ آگهی را با یک کلید جداگانه ثبت کنید. به عنوان مثال، این راهنما از مثالی استفاده می کند که فقط یک بنر تبلیغاتی دارد. بنابراین، شناسه پاسخ آگهی را بهعنوان کلید banner_ad_response_id
در قطعه زیر ثبت میکنیم.
همچنین میتوانید چندین جفت کلید/مقدار سفارشی در Firebase Crashlytics برای انواع تبلیغات و رویدادهای تبلیغاتی مختلف ایجاد کنید. به اعلانهای چرخه عمر درخواست آگهی برای مراجعه کنید
برای اطلاعات بیشتر در مورد ثبت سفارشی ، به سفارشی کردن گزارشهای خرابی Firebase Crashlytics خود مراجعه کنید.
سویفت
کد زیر را به ViewController.swift
خود اضافه کنید. در اصل، از تابع Crashlytics.setCustomValue()
در تابع callback 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
خود اضافه کنید. در اصل، از تابع setCustomValue
[FIRCrashlytics crashlytics]
در تابع 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 خود خواهید دید. توجه داشته باشید که برخی از کلیدها ممکن است تا یک ساعت طول بکشد تا در داشبورد شما قابل مشاهده باشند.