Ir para o console

Desativar o SDK do Monitoramento de desempenho do Firebase

Para que os usuários ativem ou desativem o Monitoramento de desempenho do Firebase, configure o aplicativo para essa função. Ela pode ser útil durante o desenvolvimento e teste de aplicativos.

Você pode desativar o SDK do Monitoramento de desempenho ao criar seu app com a opção de reativá-lo no ambiente de execução ou criar seu app com o Monitoramento de desempenho ativado e, em seguida, ter a opção de desativá-lo no ambiente de execução usando o Firebase Configuração remota. Você também pode desativar completamente o Monitoramento de desempenho, sem opção de ativá-lo no ambiente de execução.

Desativar o Monitoramento de desempenho durante o processo de criação do seu app

Uma situação em que a desativação do Monitoramento de desempenho durante o processo de compilação de seu app pode ser útil é para evitar a divulgação de dados de desempenho de uma versão de pré-lançamento de seu app durante o desenvolvimento e teste dele.

No iOS

Você pode adicionar uma das duas chaves ao arquivo da lista de propriedade (Info.plist) para seu app para iOS desabilitar ou desativar o Monitoramento de desempenho:

  • Para desativar o Monitoramento de desempenho, mas permitir que seu app o ative no ambiente de execução, defina firebase_performance_collection_enabled como true no arquivo Info.plist do seu app.
  • Para desativar completamente o Monitoramento de desempenho sem opção para ativá-lo no ambiente de execução, defina firebase_performance_collection_deactivated como true no arquivo Info.plist do seu app. Essa configuração substitui a configuração de firebase_performance_collection_enabled e precisa ser removida do arquivo Info.plist do seu app para reativar o Monitoramento de desempenho.

Android

Você pode adicionar a seguinte propriedade ao arquivo gradle.properties do seu app para desativar rastros automáticos e monitoramento de solicitação de rede HTTP/S (mas não rastros personalizados) no momento da compilação:

firebasePerformanceInstrumentationEnabled=false

Alterar esta propriedade para true reativa rastros automáticos e o monitoramento de solicitação de rede HTTP/S.

Você também pode desativar o Monitoramento de desempenho no momento da compilação, mas permitir que seu app o ative no ambiente de execução, adicionando um elemento <meta-data> ao elemento <application> do arquivo AndroidManifest.xml do seu app, da seguinte maneira:

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

Para desativar completamente o Monitoramento de desempenho sem a opção de ativá-lo no ambiente de execução, adicione um elemento <meta-data> ao <application> do arquivo AndroidManifest.xml do seu app, da seguinte maneira:

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

Desativar seu app no ambiente de execução usando o Configuração remota

O Configuração remota permite fazer alterações no comportamento e na aparência do seu app, portanto, oferece uma maneira ideal de permitir que você desative o Monitoramento de desempenho em instâncias implantadas do seu app.

No iOS

Você pode usar o código de exemplo mostrado abaixo para desativar a coleta de dados do Monitoramento de desempenho na próxima vez que seu aplicativo iOS for iniciado. Para mais informações sobre como usar o Configuração remota em um app iOS, consulte Usar o Configuração remota do Firebase no iOS.

  1. Certifique-se de que o Configuração remota seja usado em seu Podfile: pod 'Firebase/RemoteConfig'
  2. Adicione o seguinte ao topo do arquivo AppDelegate do seu app:

    Swift

    import FirebaseRemoteConfig

    Objective-C

    @import FirebaseRemoteConfig;

  3. No seu arquivo AppDelegate, adicione o seguinte código às instruções launchOptions no método da instância 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. Em ViewController.m ou em outro arquivo de implementação usado por seu app, adicione o seguinte código para buscar e ativar valores do Configuração remota:

    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 desativar o Monitoramento de desempenho no Console do Firebase, crie um parâmetro perf_disable no projeto do seu app e, em seguida, defina o valor dele como true. Se você definir o valor de perf_disable como false, o Monitoramento de desempenho permanecerá ativado.

Desativar a coleta de dados automática ou manual separadamente

É possível fazer algumas alterações no código mostrado acima e no Console do Firebase para permitir que você desative a coleta de dados automática (rastros de início de app e solicitações de rede HTTP/S) separadamente da coleta de dados manual (rastros personalizados). Para fazer isso, adicione o seguinte código às instruções launchOptions no método da instância application:didFinishLaunchingWithOptions:, em vez do que é mostrado na etapa 3 acima:

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

Em seguida, faça isto no Console do Firebase:

  • Para desativar os traces automáticos e o monitoramento de rede HTTP/S, crie um parâmetro perf_disable_auto no projeto do seu app e, em seguida, defina o valor dele como true.
  • Para desativar os traces personalizados, crie um parâmetro perf_disable_manual no projeto do seu app e, em seguida, defina o valor dele como true.

Para ativar qualquer um desses aspectos do Monitoramento de desempenho em seu app, defina o valor do parâmetro correspondente como false no Console do Firebase.

Android

Você pode usar o código de exemplo mostrado abaixo para desativar a coleta de dados do Monitoramento de desempenho na próxima vez que seu aplicativo Android for iniciado. Para mais informações sobre como usar o Configuração remota em um aplicativo Android, consulte Usar o Configuração remota do Firebase no Android.

  1. Verifique se o Configuração remota está na sessão dependencies do seu arquivo Gradle do módulo (normalmente, app/build.gradle):

    implementation 'com.google.firebase:firebase-config:16.4.0'

  2. Em seguida, configure o Configuração remota e desative o Monitoramento de desempenho se perf_disable for definido como true:

    Java
    Android

    // Setup remote config
    FirebaseRemoteConfig config = 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
    
    //Observe the remote config parameter "perf_disable" and disable Performance Monitoring if true
    config.setDefaults(R.xml.remote_config_defaults);
    if (config.getBoolean("perf_disable")) {
        FirebasePerformance.getInstance().setPerformanceCollectionEnabled(false);
    } else {
        FirebasePerformance.getInstance().setPerformanceCollectionEnabled(true);
    }

    Kotlin
    Android

    // Setup remote config
    val config = 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
    
    // Observe the remote config parameter "perf_disable" and disable Performance Monitoring if true
    config.setDefaults(R.xml.remote_config_defaults)
    FirebasePerformance.getInstance().isPerformanceCollectionEnabled = !config.getBoolean("perf_disable")
  3. Por fim, adicione o seguinte código a MainActivity.java para buscar e ativar valores do Configuração remota:

    Java
    Android

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

    Kotlin
    Android

    // Remote Config fetches and activates parameter values from the service
    val config = FirebaseRemoteConfig.getInstance()
    config.fetch(3600)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    config.activateFetched()
                } else {
                    // ...
                }
            }
  4. Para desativar o Monitoramento de desempenho no Console do Firebase, crie um parâmetro perf_disable no projeto do seu app e, em seguida, defina o valor dele como true. Essa alteração fará chamadas para as chamadas "sem operação" do SDK do Monitoramento de desempenho (NOOPs), eliminando quaisquer efeitos significativos no desempenho do app do uso do SDK do Monitoramento de desempenho no seu app. Se você definir o valor de perf_disable como false, o Monitoramento de desempenho permanecerá ativado.