Per consentire agli utenti di attivare o disattivare l'utilizzo di Firebase Performance Monitoring, potresti voler configurare l'app in modo da poter attivare e disattivare Performance Monitoring. Potresti anche trovare utile questa funzionalità durante lo sviluppo e il test dell'app.
Ecco alcune opzioni da considerare:
Puoi disattivare l'SDK Performance Monitoring durante la build dell'app, con la possibilità di riattivarlo in fase di runtime.
Puoi creare la tua app con l'SDK Performance Monitoring attivato, ma avere la possibilità di disattivarlo in fase di runtime utilizzando Firebase Remote Config.
Puoi disattivare completamente l'SDK Performance Monitoring, senza la possibilità di attivarlo in fase di runtime.
Disattivare Performance Monitoring durante il processo di build dell'app
Una situazione in cui potrebbe essere utile disattivare Performance Monitoring durante il processo di compilazione dell'app è quella di evitare di segnalare i dati sul rendimento di una versione pre-release della tua app durante lo sviluppo e il test dell'app.
Per disattivare o disabilitare Performance Monitoring, puoi aggiungere una delle due chiavi al
file di elenco delle proprietà (Info.plist) per la tua app Apple:
Per disattivare Performance Monitoring, ma consentire all'app di attivarlo in fase di runtime, imposta
firebase_performance_collection_enabledsufalsenel fileInfo.plistdell'app.Per disattivare completamente Performance Monitoring, senza la possibilità di attivarlo in fase di runtime, imposta
firebase_performance_collection_deactivatedsutruenel fileInfo.plistdell'app.
Disattivare l'app in fase di runtime utilizzando Remote Config
Firebase Remote Config ti consente di apportare modifiche al comportamento e all'aspetto della tua app, quindi fornisce un modo ideale per disattivare Performance Monitoring nelle istanze di cui è stato eseguito il deployment dell'app.
Per disattivare la raccolta dei dati Performance Monitoring al successivo avvio dell'app Apple, utilizza il codice di esempio riportato di seguito. Per ulteriori informazioni sull'utilizzo di Remote Config in un'app Apple, consulta Utilizzare Firebase Remote Config sulle piattaforme Apple.
Assicurati che Remote Config sia utilizzato nel tuo
Podfile:pod 'Firebase/RemoteConfig'Aggiungi quanto segue all'inizio del file
AppDelegatedell'app:Swift
Nota: questo prodotto Firebase non è disponibile su target macOS, Mac Catalyst e watchOS.import FirebaseRemoteConfigObjective-C
Nota: questo prodotto Firebase non è disponibile su target macOS, Mac Catalyst e watchOS.@import FirebaseRemoteConfig;Nel file
AppDelegate, aggiungi il seguente codice alle istruzionilaunchOptionsnel metodo dell'istanzaapplication:didFinishLaunchingWithOptions::Swift
Nota: questo prodotto non è disponibile su target macOS, Mac Catalyst e 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: questo prodotto Firebase non è disponibile su target macOS, Mac Catalyst e 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];In
ViewController.mo in un altro file di implementazione utilizzato dall'app, aggiungi il seguente codice per recuperare e attivare i valori Remote Config:Swift
Nota: questo prodotto Firebase non è disponibile su target macOS, Mac Catalyst e 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: questo prodotto Firebase non è disponibile su target macOS, Mac Catalyst e 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); } }];Per disattivare Performance Monitoring nella console Firebase, crea un parametro perf_disable nel progetto dell'app, quindi imposta il relativo valore su
true.Se imposti il valore di perf_disable su
false, Performance Monitoring rimane attivo.
Disattivare separatamente la raccolta di dati automatica o personalizzata
Puoi apportare alcune modifiche al codice mostrato sopra e nella Firebase console per disattivare tutto il monitoraggio automatico (pronto all'uso) separatamente dal monitoraggio personalizzato.
Aggiungi il seguente codice alle istruzioni
launchOptionsnel metodo dell'istanzaapplication:didFinishLaunchingWithOptions:(anziché quello mostrato sopra per lo stesso metodo dell'istanza):Swift
Nota: questo prodotto Firebase non è disponibile su target macOS, Mac Catalyst e 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: questo prodotto Firebase non è disponibile su target macOS, Mac Catalyst e 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 la seguente procedura nella console Firebase:
- Per disattivare tutto il monitoraggio automatico (pronto all'uso), crea un
perf_disable_auto parametro nel progetto dell'app, quindi imposta il relativo
valore su
true. - Per disattivare tutto il monitoraggio personalizzato, crea un parametro perf_disable_manual
nel progetto dell'app, quindi imposta il relativo valore su
true.
- Per disattivare tutto il monitoraggio automatico (pronto all'uso), crea un
perf_disable_auto parametro nel progetto dell'app, quindi imposta il relativo
valore su