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


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

موارد زیر چند گزینه برای بررسی هستند:

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

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

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

غیرفعال کردن Performance Monitoring در طول فرآیند ساخت برنامه

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

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

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

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

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

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

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

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

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

    سویفت

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

    هدف-سی

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

    سویفت

    توجه: این محصول برای 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()
    

    هدف-سی

    توجه: این محصول 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)")
      }
    }
    

    هدف-سی

    توجه: این محصول 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 method اضافه کنید (به جای آنچه در بالا برای همان متد 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()
    

    هدف-سی

    توجه: این محصول 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 تنظیم کنید.