Check out what’s new from Firebase at Google I/O 2022. Learn more

Отключить мониторинг производительности Firebase

Чтобы ваши пользователи могли соглашаться или отказываться от использования мониторинга производительности Firebase, вы можете настроить свое приложение, чтобы вы могли включать и отключать мониторинг производительности. Вы также можете найти эту возможность полезной во время разработки и тестирования приложений.

Ниже приведены некоторые варианты для рассмотрения:

  • Вы можете отключить SDK мониторинга производительности при создании приложения с возможностью повторного включения его во время выполнения.

  • Вы можете создать свое приложение с включенным SDK мониторинга производительности, но иметь возможность отключить его во время выполнения с помощью Firebase Remote Config.

  • Вы можете полностью деактивировать SDK мониторинга производительности без возможности включения его во время выполнения.

Отключите мониторинг производительности в процессе сборки приложения.

Одной из ситуаций, когда отключение мониторинга производительности в процессе сборки приложения может быть полезным, является избежание предоставления данных о производительности из предварительной версии вашего приложения во время разработки и тестирования приложения.

Чтобы отключить или деактивировать мониторинг производительности, вы можете добавить один из двух ключей в файл списка свойств ( Info.plist ) для вашего приложения Apple:

  • Чтобы отключить мониторинг производительности, но разрешить приложению включать его во время выполнения, задайте для firebase_performance_collection_enabled значение false в файле Info.plist вашего приложения.

  • Чтобы полностью деактивировать мониторинг производительности без возможности включения его во время выполнения, задайте для firebase_performance_collection_deactivated значение true в файле Info.plist вашего приложения.

Отключите приложение во время выполнения с помощью Remote Config.

Firebase Remote Config позволяет вам вносить изменения в поведение и внешний вид вашего приложения, поэтому он предоставляет идеальный способ отключить мониторинг производительности в развернутых экземплярах вашего приложения.

Чтобы отключить сбор данных мониторинга производительности при следующем запуске приложения 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. Чтобы отключить мониторинг производительности в консоли Firebase, создайте параметр perf_disable в проекте вашего приложения и установите для него значение true .

    Если вы установите для perf_disable значение false , мониторинг производительности останется включенным.

Отключить автоматический или пользовательский сбор данных отдельно

Вы можете внести некоторые изменения в код, показанный выше, и в консоли Firebase, чтобы отключить весь автоматический (стандартный) мониторинг отдельно от пользовательского мониторинга.

  1. Добавьте следующий код в операторы launchOptions в методе экземпляра application:didFinishLaunchingWithOptions: (вместо того, что показано выше для того же метода экземпляра):

    Быстрый

    Примечание. Этот продукт 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 .