Inhabilita Firebase Performance Monitoring

Para permitir que los usuarios acepten o rechacen la opción de usar Firebase Performance Monitoring, te recomendamos configurar tu app de manera que puedas habilitar o inhabilitar Performance Monitoring. Esta función también puede ser útil durante el desarrollo y las pruebas de la app.

Las siguientes son algunas opciones que debes considerar:

  • Puedes inhabilitar el SDK de Performance Monitoring cuando compilas tu app con la opción de volver a habilitarlo en el tiempo de ejecución.

  • Puedes compilar tu app con el SDK de Performance Monitoring habilitado, pero tienes la opción de inhabilitarlo en el tiempo de ejecución mediante Firebase Remote Config.

  • Puedes desactivar el SDK de Performance Monitoring por completo, sin tener la opción de habilitarlo en el tiempo de ejecución.

Inhabilita Performance Monitoring durante el proceso de compilación de la app

Puede resultar útil inhabilitar Performance Monitoring durante el proceso de compilación de tu app para evitar informar datos de rendimiento de una versión previa al lanzamiento de la app durante el desarrollo y las pruebas.

Para inhabilitar o desactivar Performance Monitoring, puedes agregar una de las dos claves al archivo de lista de propiedades (Info.plist) de tu app para Apple:

  • Para inhabilitar Performance Monitoring y permitir que tu app lo habilite en el tiempo de ejecución, configura firebase_performance_collection_enabled como false en el archivo Info.plist de la app.

  • Para desactivar Performance Monitoring por completo, sin opción de habilitarlo en el tiempo de ejecución, configura firebase_performance_collection_deactivated como true en el archivo Info.plist de la app.

Inhabilita la app en el tiempo de ejecución con Remote Config

Firebase Remote Config te permite hacer cambios en el comportamiento y el aspecto de la app, lo que proporciona una manera ideal de inhabilitar Performance Monitoring en las instancias implementadas de tu app.

Usa el código de ejemplo que se muestra a continuación para inhabilitar la recopilación de datos de Performance Monitoring la próxima vez que se inicie la app para Apple. Para obtener más información sobre el uso de Remote Config en una app para Apple, consulta Comienza a usar Firebase Remote Config en las plataformas de Apple.

  1. Asegúrate de que se utiliza Remote Config en tu Podfile:

    pod 'Firebase/RemoteConfig'
    
  2. Agrega lo siguiente a la parte superior del archivo AppDelegate de la app:

    Swift

    Nota: Este producto de Firebase no está disponible en los destinos de macOS, Mac Catalyst ni watchOS.
    import FirebaseRemoteConfig
    

    Objective‑C

    Nota: Este producto de Firebase no está disponible en los destinos de macOS, Mac Catalyst ni watchOS.
    @import FirebaseRemoteConfig;
    
  3. En el archivo AppDelegate, agrega el siguiente código a las sentencias de launchOptions en el método de la instancia application:didFinishLaunchingWithOptions::

    Swift

    Nota: Este producto no está disponible en los destinos de macOS, Mac Catalyst ni 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()
    

    Objective‑C

    Nota: Este producto de Firebase no está disponible en los destinos de macOS, Mac Catalyst ni 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. En ViewController.m o en otro archivo de implementación que use tu app, agrega el siguiente código para recuperar y activar valores de Remote Config:

    Swift

    Nota: Este producto de Firebase no está disponible en los destinos de macOS, Mac Catalyst ni 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)")
      }
    }
    

    Objective‑C

    Nota: Este producto de Firebase no está disponible en los destinos de macOS, Mac Catalyst ni 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. Para inhabilitar Performance Monitoring en Firebase console, crea un parámetro perf_disable en el proyecto de tu app y, luego, configura su valor como true.

    Si configuras el valor de perf_disable como false, Performance Monitoring seguirá habilitado.

Inhabilita la recopilación de datos automática o personalizada por separado

Puedes realizar algunos cambios en el código anterior y en Firebase console para inhabilitar por separado la supervisión automática (lista desde el primer momento) de la supervisión personalizada.

  1. Agrega el siguiente código a las sentencias launchOptions en el método de instancia application:didFinishLaunchingWithOptions: (en lugar de lo que se muestra arriba para el mismo método de instancia):

    Swift

    Nota: Este producto de Firebase no está disponible en los destinos de macOS, Mac Catalyst ni 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()
    

    Objective‑C

    Nota: Este producto de Firebase no está disponible en los destinos de macOS, Mac Catalyst ni 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. Completa lo siguiente en Firebase console:

    • Para inhabilitar la supervisión automática (lista desde el primer momento), crea un parámetro perf_disable_auto en el proyecto de la app y, luego, configura su valor como true.
    • Para inhabilitar toda la supervisión personalizada, crea un parámetro perf_disable_manual en el proyecto de la app y, luego, configura su valor como true.