Inhabilita el SDK de 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 opción también puede ser útil durante la programación y las pruebas de la app.

Puedes inhabilitar el SDK de Performance Monitoring cuando compilas la app con la opción de volver a habilitarlo en tiempo de ejecución, o compilar tu app con Performance Monitoring habilitado y, luego, tener la opción de inhabilitarlo en tiempo de ejecución con Firebase Remote Config. Además, puedes desactivar Performance Monitoring por completo, sin la opción de habilitarlo en tiempo de ejecución.

Actualmente, Performance Monitoring se encuentra en fase de liberación Beta.

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

Una situación en la que inhabilitar Performance Monitoring durante el proceso de compilación de tu app podría ser útil es para evitar informar datos de rendimiento de una versión previa al lanzamiento de tu app durante la programación y las pruebas de la app.

iOS

Puedes agregar una o dos claves al archivo de la lista de propiedades (Info.plist) para tu app de iOS si deseas inhabilitar o desactivar Performance Monitoring:

  • Para inhabilitar Performance Monitoring, pero permitir que tu app lo habilite en tiempo de ejecución, asigna a firebase_performance_collection_enabled el valor true en el archivo Info.plist de tu app.
  • Para desactivar Performance Monitoring por completo sin la opción de habilitarla en tiempo de ejecución, asigna a firebase_performance_collection_deactivated el valor true en el archivo Info.plist de tu app. Esta configuración anula la de firebase_performance_collection_enabled y se debe quitar del archivo Info.plist de tu app para volver a habilitar Performance Monitoring.

Android

Puedes agregar la siguiente propiedad al archivo gradle.properties de tu app para inhabilitar los seguimientos automáticos y la supervisión de solicitudes de red HTTP/S (pero no los seguimientos personalizados) durante la compilación:

firebasePerformanceInstrumentationEnabled=false

Cambiar esta propiedad a true vuelve a habilitar los seguimientos automáticos y la supervisión de solicitudes de red HTTP/S.

Además, para inhabilitar Performance Monitoring durante la compilación para permitir que tu app lo habilite en tiempo de ejecución, puedes agregar un elemento <meta-data> al elemento <application> del archivo AndroidManifest.xml de tu app, de la siguiente forma:

<application>
   ...
<meta-data android:name="firebase_performance_collection_enabled" android:value="false" />
   ...
</application>

Para desactivar Performance Monitoring por completo sin la opción de habilitarla en tiempo de ejecución, agrega un elemento <meta-data> al elemento <application> del archivo AndroidManifest.xml de tu app, de la siguiente forma:

<application>
   ...
<meta-data android:name="firebase_performance_collection_deactivated" android:value="true" />
   ...
</application>

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

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 instancias implementadas de tu app.

iOS

Puedes usar 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 de iOS se inicia. Para obtener más información sobre el uso de Remote Config en una app de iOS, consulta Usar Firebase Remote Config en iOS.

  1. Asegúrate de que Remote Config se usa en Podfile: pod 'Firebase/RemoteConfig'
  2. Agrega lo siguiente a la parte superior del archivo AppDelegate de tu 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, asígnale el valor true. Si asignas a perf_disable el valor false, Performance Monitoring seguirá habilitado.

Inhabilita la recolección de datos automática o manual por separado

Puedes hacer algunos cambios en el código anterior y en Firebase console para poder inhabilitar la recopilación de datos automática (la app inicia seguimientos y solicitudes de red HTTP/S) por separado de la recopilación de datos manual (seguimientos personalizados). Para esto, debes agregar el siguiente código a las declaraciones launchOptions en el método de instancia application:didFinishLaunchingWithOptions:, en lugar de lo que se muestra en el paso 3 anterior:

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];

Luego, haz 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 tu app y, luego, asígnale el valor true.
  • Para inhabilitar los seguimientos personalizados, crea un parámetro perf_disable_manual en el proyecto de tu app y, luego, asígnale el valor true.

Para habilitar cualquiera de estos aspectos de Performance Monitoring en tu app, asigna el valor false al parámetro correspondiente en Firebase console.

Android

Puedes usar el código de ejemplo que aparece a continuación para inhabilitar la recopilación de datos de Performance Monitoring la próxima vez que se inicie tu app de Android. Para obtener más información sobre el uso de Remote Config en una app de Android, consulta Usar Firebase Remote Config en Android.

  1. Asegúrate de que Remote Config esté en la sección dependencies del archivo Gradle de tu módulo (por lo general, app/build.gradle):
    compile 'com.google.firebase:firebase-config:10.2.5'
  2. Importa las siguientes clases a tu app:

    Java

    import com.google.android.gms.tasks.OnCompleteListener;
    import com.google.android.gms.tasks.Task;
    import com.google.firebase.remoteconfig.FirebaseRemoteConfig;
    import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings;
    

  3. A continuación, configura Remote Config. Luego, inhabilita Performance Monitoring si perf_disable tiene el valor true:

    Java

    //Setup remote config
    final FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
    // You can uncomment the following two statements to permit more fetches when
    // validating your app, but you should comment out or delete these lines before
    // distributing your app in production.
    // FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
    //       .setDeveloperModeEnabled(BuildConfig.DEBUG)
    //       .build();
    // mFirebaseRemoteConfig.setConfigSettings(configSettings);
    // Load in-app defaults from an XML file that sets perf_disable to false until you update
    // values in the Firebase Console
    mFirebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults);
    //Observe the remote config parameter "perf_disable" and disable Performance Monitoring if true
    if (mFirebaseRemoteConfig.getBoolean("perf_disable")) {
       FirebasePerformance.getInstance().setPerformanceCollectionEnabled(false);
    } else {
       FirebasePerformance.getInstance().setPerformanceCollectionEnabled(true);
    }

  4. Por último, agrega el siguiente código a MainActivity.java para recuperar y activar valores de Remote Config:

    Java

    //Remote Config fetches and activates parameter values from the service
    mFirebaseRemoteConfig.fetch(3600)
           .addOnCompleteListener(this, new OnCompleteListener() {
               @Override
               public void onComplete(@NonNull Task task) {
                   if (task.isSuccessful()) {
                       mFirebaseRemoteConfig.activateFetched();
                   } else {
                   }
               }
           });
    

  5. Para inhabilitar Performance Monitoring en Firebase console, crea un parámetro perf_disable en el proyecto de tu app y, luego, asígnale el valor true. Este cambio hará que las llamadas al SDK de Performance Monitoring sean "sin operación" (NOOP), lo que elimina todos los efectos importantes en el rendimiento de la app que genera el uso del SDK de Performance Monitoring en tu app. Si asignas a perf_disable el valor false, Performance Monitoring seguirá habilitado.

Enviar comentarios sobre…

¿Necesitas ayuda? Visita nuestra página de asistencia.