Inhabilita Firebase Performance Monitoring

Para permitir que los usuarios acepten o rechacen la opción de usar Firebase Performance Monitoring, te recomendamos configurar la 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 entorno de ejecución.

  • Puedes compilar tu app con el SDK de Performance Monitoring habilitado, pero tienes la opción de inhabilitarlo en el entorno 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 entorno 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 a fin de 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 iOS:

  • 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 la app para iOS se inicie. Para obtener más información sobre el uso de Remote Config en una app para iOS, consulta Primeros pasos con Firebase Remote Config en iOS.

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

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

    Swift

    import FirebaseRemoteConfig
    

    Objective-C

    @import FirebaseRemoteConfig;
    
  3. En el archivo AppDelegate, agrega el siguiente código a las declaraciones de launchOptions en el método de la instancia application:didFinishLaunchingWithOptions::

    Swift

    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 automatic traces and HTTP/S network monitoring
        Performance.sharedInstance().isInstrumentationEnabled = false
        // The following line disables custom traces
        Performance.sharedInstance().isDataCollectionEnabled = false
    }
    else {
        Performance.sharedInstance().isInstrumentationEnabled = true
        Performance.sharedInstance().isDataCollectionEnabled = true
    }
    // Use Firebase library to configure APIs
    FirebaseApp.configure()
    

    Objective-C

    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 automatic traces and HTTP/S network monitoring
        [FIRPerformance sharedInstance].instrumentationEnabled = NO;
        // The following line disables custom traces
        [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

    //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

    //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 manual por separado

Puedes realizar algunos cambios en el código que se muestra arriba y en Firebase console que te permiten inhabilitar la recopilación automática de datos (seguimiento del inicio de la app y solicitudes de red HTTP/S) por separado desde la recopilación manual de datos (seguimientos personalizados).

  1. Agrega el siguiente código a las declaraciones 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

    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 automatic traces and HTTP/S network monitoring
        Performance.sharedInstance().isInstrumentationEnabled = false
    }
    else {
        Performance.sharedInstance().isInstrumentationEnabled = true
    }
    if remoteConfig["perf_disable_manual"].boolValue {
        // The following line disables custom traces
        Performance.sharedInstance().isDataCollectionEnabled = false
    }
    else {
        Performance.sharedInstance().isDataCollectionEnabled = true
    }
    // Use Firebase library to configure APIs
    FirebaseApp.configure()
    

    Objective-C

    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 automatic traces and HTTP/S network monitoring
        [FIRPerformance sharedInstance].instrumentationEnabled = NO;
    }
    else {
        [FIRPerformance sharedInstance].instrumentationEnabled = YES;
    }
    if (self.remoteConfig[@"perf_disable_manual"].numberValue.boolValue) {
        // The following line disables custom traces
        [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 los seguimientos automáticos y la supervisión de red HTTP/S, crea un parámetro perf_disable_auto en el proyecto de la app y, luego, configura su valor como true.
    • Para inhabilitar los seguimientos personalizados, crea un parámetro perf_disable_manual en el proyecto de la app y, luego, configura su valor como true.