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 e 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 tener 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
comofalse
en el archivoInfo.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
comotrue
en el archivoInfo.plist
de la app.
Inhabilita tu app en el tiempo de ejecución con Remote Config
Firebase Remote Config te permite realizar cambios en el comportamiento y la apariencia de tu app, por lo que es una manera ideal de inhabilitar Performance Monitoring en 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 Usa Firebase Remote Config en plataformas de Apple.
Asegúrate de que se utilice Remote Config en tu
Podfile
:pod 'Firebase/RemoteConfig'
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;
En el archivo
AppDelegate
, agrega el siguiente código a las sentencias delaunchOptions
en el método de la instanciaapplication: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];
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); } }];
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 permanecerá 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 para inhabilitar por separado la supervisión automática (lista desde el primer momento) de la supervisión personalizada.
Agrega el siguiente código a las sentencias
launchOptions
en el método de instanciaapplication: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];
Completa lo siguiente en la consola de Firebase:
- 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
.
- 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