Deshabilitar la supervisión del rendimiento de Firebase

Para permitir que sus usuarios opten por participar o no usar Firebase Performance Monitoring, es posible que desee configurar su aplicación para poder habilitar y deshabilitar Performance Monitoring. Esta capacidad también puede resultarle útil durante el desarrollo y las pruebas de aplicaciones.

Las siguientes son algunas opciones a considerar:

  • Puede deshabilitar el SDK de Performance Monitoring al crear su aplicación, con la opción de volver a habilitarlo en tiempo de ejecución.

  • Puede crear su aplicación con el SDK de monitoreo de rendimiento habilitado, pero tiene la opción de deshabilitarlo en tiempo de ejecución usando Firebase Remote Config.

  • Puede desactivar completamente el SDK de Performance Monitoring, sin opción para habilitarlo en tiempo de ejecución.

Deshabilite la supervisión del rendimiento durante el proceso de creación de su aplicación

Una situación en la que deshabilitar la supervisión del rendimiento durante el proceso de creación de su aplicación podría resultar útil es evitar informar datos de rendimiento de una versión preliminar de su aplicación durante el desarrollo y las pruebas de la misma.

Para desactivar o desactivar la supervisión del rendimiento, puede agregar una de dos claves al archivo de lista de propiedades ( Info.plist ) de su aplicación Apple:

  • Para deshabilitar la supervisión del rendimiento, pero permitir que tu aplicación lo habilite en tiempo de ejecución, configura firebase_performance_collection_enabled en false en el archivo Info.plist de tu aplicación.

  • Para desactivar completamente la supervisión del rendimiento, sin opción para habilitarla en tiempo de ejecución, configura firebase_performance_collection_deactivated en true en el archivo Info.plist de tu aplicación.

Deshabilite su aplicación en tiempo de ejecución usando Remote Config

Firebase Remote Config te permite realizar cambios en el comportamiento y la apariencia de tu aplicación, por lo que proporciona una forma ideal de permitirte desactivar la supervisión del rendimiento en instancias implementadas de tu aplicación.

Para deshabilitar la recopilación de datos de Monitoreo de rendimiento la próxima vez que inicie su aplicación Apple, use el código de ejemplo que se muestra a continuación. Para obtener más información sobre el uso de Remote Config en una aplicación de Apple, consulte Usar Firebase Remote Config en plataformas Apple .

  1. Asegúrese de que se utilice Remote Config en su Podfile :

    pod 'Firebase/RemoteConfig'
    
  2. Agregue lo siguiente en la parte superior del archivo AppDelegate de su aplicación:

    Rápido

    Nota: Este producto Firebase no está disponible en dispositivos macOS, Mac Catalyst y watchOS.
    import FirebaseRemoteConfig
    

    C objetivo

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

    Rápido

    Nota: Este producto no está disponible en dispositivos macOS, Mac Catalyst y 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 objetivo

    Nota: Este producto Firebase no está disponible en dispositivos macOS, Mac Catalyst y 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 , u otro archivo de implementación utilizado por su aplicación, agregue el siguiente código para recuperar y activar los valores de Remote Config:

    Rápido

    Nota: Este producto Firebase no está disponible en dispositivos macOS, Mac Catalyst y 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 objetivo

    Nota: Este producto Firebase no está disponible en dispositivos macOS, Mac Catalyst y 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 deshabilitar la supervisión del rendimiento en Firebase console, crea un parámetro perf_disable en el proyecto de tu aplicación y luego establece su valor en true .

    Si establece el valor de perf_disable en false , la supervisión del rendimiento permanece habilitada.

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

Puede realizar algunos cambios en el código que se muestra arriba y en Firebase console para permitirle deshabilitar todo el monitoreo automático (listo para usar) por separado del monitoreo personalizado.

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

    Rápido

    Nota: Este producto Firebase no está disponible en dispositivos macOS, Mac Catalyst y 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 objetivo

    Nota: Este producto Firebase no está disponible en dispositivos macOS, Mac Catalyst y 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. Complete lo siguiente en Firebase console:

    • Para deshabilitar todo el monitoreo automático (listo para usar), cree un parámetro perf_disable_auto en el proyecto de su aplicación y luego establezca su valor en true .
    • Para deshabilitar toda la supervisión personalizada, cree un parámetro perf_disable_manual en el proyecto de su aplicación y luego establezca su valor en true .