مانیتورینگ عملکرد Firebase را غیرفعال کنید


برای اینکه به کاربران خود اجازه دهید از استفاده از Firebase Performance Monitoring انتخاب یا انصراف دهند، ممکن است بخواهید برنامه خود را طوری پیکربندی کنید که بتوانید Performance Monitoring فعال یا غیرفعال کنید. همچنین ممکن است این قابلیت در طول توسعه و آزمایش برنامه مفید باشد.

در زیر برخی از گزینه ها را در نظر بگیرید:

  • می‌توانید SDK Performance Monitoring هنگام ساخت برنامه خود غیرفعال کنید، با گزینه فعال کردن مجدد آن در زمان اجرا.

  • می‌توانید برنامه خود را با فعال کردن SDK Performance Monitoring بسازید، اما می‌توانید آن را در زمان اجرا با استفاده از Firebase Remote Config غیرفعال کنید.

  • شما می توانید SDK Performance Monitoring به طور کامل غیرفعال کنید، بدون اینکه گزینه ای برای فعال کردن آن در زمان اجرا وجود داشته باشد.

Performance Monitoring در طول فرآیند ساخت اپلیکیشن خود غیرفعال کنید

یکی از موقعیت‌هایی که غیرفعال کردن Performance Monitoring در طول فرآیند ساخت برنامه می‌تواند مفید باشد، اجتناب از گزارش داده‌های عملکرد از نسخه پیش‌انتشار برنامه خود در طول توسعه و آزمایش برنامه است.

برای غیرفعال کردن یا غیرفعال کردن Performance Monitoring ، می‌توانید یکی از دو کلید را به فایل لیست دارایی ( Info.plist ) برای برنامه Apple خود اضافه کنید:

  • برای غیرفعال کردن Performance Monitoring ، اما اجازه دهید برنامه شما آن را در زمان اجرا فعال کند، firebase_performance_collection_enabled را در فایل Info.plist برنامه خود روی false قرار دهید.

  • برای غیرفعال کردن کامل Performance Monitoring ، بدون هیچ گزینه ای برای فعال کردن آن در زمان اجرا، firebase_performance_collection_deactivated در فایل Info.plist برنامه خود روی true تنظیم کنید.

برنامه خود را در زمان اجرا با استفاده از Remote Config غیرفعال کنید

Firebase Remote Config به شما امکان می دهد تغییراتی در رفتار و ظاهر برنامه خود ایجاد کنید، بنابراین یک راه ایده آل برای غیرفعال کردن Performance Monitoring در نمونه های مستقر در برنامه خود فراهم می کند.

برای غیرفعال کردن جمع‌آوری داده‌های Performance Monitoring دفعه بعد که برنامه Apple شما شروع به کار کرد، از کد مثال زیر استفاده کنید. برای اطلاعات بیشتر در مورد استفاده از Remote Config در برنامه Apple، به استفاده از Firebase Remote Config در پلتفرم‌های Apple مراجعه کنید.

  1. مطمئن شوید که Remote Config در Podfile شما استفاده شده است:

    pod 'Firebase/RemoteConfig'
    
  2. موارد زیر را به بالای فایل AppDelegate برنامه خود اضافه کنید:

    سویفت

    توجه: این محصول Firebase در اهداف macOS، Mac Catalyst، watchOS در دسترس نیست.
    import FirebaseRemoteConfig
    

    هدف-C

    توجه: این محصول Firebase در اهداف macOS، Mac Catalyst، watchOS در دسترس نیست.
    @import FirebaseRemoteConfig;
    
  3. در فایل AppDelegate خود، کد زیر را به دستورات launchOptions در application:didFinishLaunchingWithOptions: متد instance:

    سویفت

    توجه: این محصول برای اهداف macOS، Mac Catalyst، watchOS موجود نیست.
    remoteConfig = RemoteConfig.remoteConfig()
    // You can change the "false" below to "true" to permit more fetches when validating
    // your app, but you should change it back to "false" or remove this statement before
    // distributing your app in production.
    let remoteConfigSettings = RemoteConfigSettings(developerModeEnabled: false)
    remoteConfig.configSettings = remoteConfigSettings!
    // Load in-app defaults from a plist file that sets perf_disable to false until
    // you update values in the Firebase console.
    remoteConfig.setDefaultsFromPlistFileName("RemoteConfigDefaults")
    // Important! This needs to be applied before FirebaseApp.configure()
    if !remoteConfig["perf_disable"].boolValue {
        // The following line disables all automatic (out-of-the-box) monitoring
        Performance.sharedInstance().isInstrumentationEnabled = false
        // The following line disables all custom monitoring
        Performance.sharedInstance().isDataCollectionEnabled = false
    }
    else {
        Performance.sharedInstance().isInstrumentationEnabled = true
        Performance.sharedInstance().isDataCollectionEnabled = true
    }
    // Use Firebase library to configure APIs
    FirebaseApp.configure()
    

    هدف-C

    توجه: این محصول Firebase در اهداف macOS، Mac Catalyst، watchOS در دسترس نیست.
    self.remoteConfig = [FIRRemoteConfig remoteConfig];
    // You can change the NO below to YES to permit more fetches when validating
    // your app, but you should change it back to NO or remove this statement before
    // distributing your app in production.
    FIRRemoteConfigSettings *remoteConfigSettings =
        [[FIRRemoteConfigSettings alloc] initWithDeveloperModeEnabled:NO];
    self.remoteConfig.configSettings = remoteConfigSettings;
    // Load in-app defaults from a plist file that sets perf_disable to false until
    // you update values in the Firebase console.
    [self.remoteConfig setDefaultsFromPlistFileName:@"RemoteConfigDefaults"];
    // Important! This needs to be applied before [FIRApp configure]
    if (!self.remoteConfig[@"perf_disable"].numberValue.boolValue) {
        // The following line disables all automatic (out-of-the-box) monitoring
        [FIRPerformance sharedInstance].instrumentationEnabled = NO;
        // The following line disables all custom monitoring
        [FIRPerformance sharedInstance].dataCollectionEnabled = NO;
    }
    else {
        [FIRPerformance sharedInstance].instrumentationEnabled = YES;
        [FIRPerformance sharedInstance].dataCollectionEnabled = YES;
    }
    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  4. در ViewController.m یا فایل پیاده سازی دیگری که برنامه شما استفاده می کند، کد زیر را برای واکشی و فعال کردن مقادیر Remote Config اضافه کنید:

    سویفت

    توجه: این محصول Firebase در اهداف macOS، Mac Catalyst، watchOS در دسترس نیست.
    //RemoteConfig fetch and activation in your app, shortly after startup
    remoteConfig.fetch(withExpirationDuration: TimeInterval(30.0)) { (status, error) -> Void in
      if status == .success {
        print("Config fetched!")
        self.remoteConfig.activateFetched()
      } else {
        print("Config not fetched")
        print("Error \(error!.localizedDescription)")
      }
    }
    

    هدف-C

    توجه: این محصول Firebase در اهداف macOS، Mac Catalyst، watchOS در دسترس نیست.
    //RemoteConfig fetch and activation in your app, shortly after startup
    [self.remoteConfig fetchWithExpirationDuration:30.0 completionHandler:^(FIRRemoteConfigFetchStatus status, NSError *error) {
      if (status == FIRRemoteConfigFetchStatusSuccess) {
        NSLog(@"Config fetched!");
        [self.remoteConfig activateFetched];
      } else {
        NSLog(@"Config not fetched");
        NSLog(@"Error %@", error.localizedDescription);
      }
    }];
    
  5. برای غیرفعال کردن Performance Monitoring در کنسول Firebase ، یک پارامتر perf_disable در پروژه برنامه خود ایجاد کنید، سپس مقدار آن را روی true تنظیم کنید.

    اگر مقدار perf_disable را روی false تنظیم کنید، Performance Monitoring فعال باقی می‌ماند.

جمع آوری داده های خودکار یا سفارشی را جداگانه غیرفعال کنید

می‌توانید در کد نشان‌داده‌شده در بالا و کنسول Firebase تغییراتی ایجاد کنید تا بتوانید همه نظارت‌های خودکار (خارج از جعبه) را جدا از نظارت سفارشی غیرفعال کنید.

  1. کد زیر را به دستورات launchOptions در application:didFinishLaunchingWithOptions: متد instance اضافه کنید (به جای آنچه در بالا برای روش نمونه مشابه نشان داده شده است):

    سویفت

    توجه: این محصول Firebase در اهداف macOS، Mac Catalyst، watchOS در دسترس نیست.
    remoteConfig = FIRRemoteConfig.remoteConfig()
    let remoteConfigSettings = FIRRemoteConfigSettings(developerModeEnabled: true)
    remoteConfig.configSettings = remoteConfigSettings!
    // Important! This needs to be applied before FirebaseApp.configure()
    if remoteConfig["perf_disable_auto"].boolValue {
        // The following line disables all automatic (out-of-the-box) monitoring
        Performance.sharedInstance().isInstrumentationEnabled = false
    }
    else {
        Performance.sharedInstance().isInstrumentationEnabled = true
    }
    if remoteConfig["perf_disable_manual"].boolValue {
        // The following line disables all custom monitoring
        Performance.sharedInstance().isDataCollectionEnabled = false
    }
    else {
        Performance.sharedInstance().isDataCollectionEnabled = true
    }
    // Use Firebase library to configure APIs
    FirebaseApp.configure()
    

    هدف-C

    توجه: این محصول Firebase در اهداف macOS، Mac Catalyst، watchOS در دسترس نیست.
    self.remoteConfig = [FIRRemoteConfig remoteConfig];
    FIRRemoteConfigSettings *remoteConfigSettings =
        [[FIRRemoteConfigSettings alloc] initWithDeveloperModeEnabled:YES];
    self.remoteConfig.configSettings = remoteConfigSettings;
    // Important! This needs to be applied before [FirebaseApp configure]
    if (self.remoteConfig[@"perf_disable_auto"].numberValue.boolValue) {
        // The following line disables all automatic (out-of-the-box) monitoring
        [FIRPerformance sharedInstance].instrumentationEnabled = NO;
    }
    else {
        [FIRPerformance sharedInstance].instrumentationEnabled = YES;
    }
    if (self.remoteConfig[@"perf_disable_manual"].numberValue.boolValue) {
        // The following line disables all custom monitoring
        [FIRPerformance sharedInstance].dataCollectionEnabled = NO;
    }
    else {
        [FIRPerformance sharedInstance].dataCollectionEnabled = YES;
    }
    // Use Firebase library to configure APIs
    [FirebaseApp configure];
    
  2. موارد زیر را در کنسول Firebase تکمیل کنید:

    • برای غیرفعال کردن تمام نظارت های خودکار (خارج از جعبه)، یک پارامتر perf_disable_auto در پروژه برنامه خود ایجاد کنید، سپس مقدار آن را روی true تنظیم کنید.
    • برای غیرفعال کردن تمام نظارت های سفارشی، یک پارامتر perf_disable_manual در پروژه برنامه خود ایجاد کنید، سپس مقدار آن را روی true تنظیم کنید.