Desativar o Monitoramento de desempenho do Firebase

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

Veja alguns cenários a serem considerados:

  • É possível desativar o SDK do Monitoramento de desempenho ao criar seu app, com a opção de reativá-lo no momento da execução.

  • É possível criar seu app com o SDK do Monitoramento de desempenho ativado, com a opção de desativá-lo no momento da execução usando a Configuração remota do Firebase.

  • É possível desativar completamente o SDK do Monitoramento de desempenho, sem a opção de ativá-lo no ambiente de execução.

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

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

Para desabilitar ou desativar o Monitoramento de desempenho, adicione uma das duas chaves ao arquivo de lista de propriedades (Info.plist) do seu app para Apple:

  • Para desativar o Monitoramento de desempenho, mas permitir que o app o ative no momento da execução, defina firebase_performance_collection_enabled como false no arquivo Info.plist do app.

  • Para desativar completamente o Monitoramento de desempenho, sem a opção de ativá-lo no momento da execução, defina firebase_performance_collection_deactivated como true no arquivo Info.plist do app.

Desativar seu app no momento da execução usando a Configuração remota

A Configuração remota do Firebase permite fazer alterações no comportamento e na aparência do seu app. Portanto, você pode usá-la para desativar o Monitoramento de desempenho em instâncias implantadas do seu app.

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

  1. Verifique se a Configuração remota está sendo usada no seu Podfile:

    pod 'Firebase/RemoteConfig'
    
  2. Adicione o seguinte à parte superior do arquivo AppDelegate do app:

    Swift

    Observação: este produto do Firebase não está disponível para destinos macOS, Mac Catalyst e watchOS.
    import FirebaseRemoteConfig
    

    Objective-C

    Observação: este produto do Firebase não está disponível para destinos macOS, Mac Catalyst e watchOS.
    @import FirebaseRemoteConfig;
    
  3. No arquivo AppDelegate, adicione o seguinte código às instruções launchOptions no método de instância application:didFinishLaunchingWithOptions::

    Swift

    Observação: esse produto não está disponível para destinos 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

    Observação: este produto do Firebase não está disponível para destinos 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];
    
  4. Em ViewController.m ou em outro arquivo de implementação usado pelo app, adicione o seguinte código para buscar e ativar valores da Configuração remota:

    Swift

    Observação: este produto do Firebase não está disponível para destinos 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

    Observação: este produto do Firebase não está disponível para destinos 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);
      }
    }];
    
  5. Para desativar o Monitoramento de desempenho no Console do Firebase, crie um parâmetro perf_disable no projeto do app e 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 personalizada separadamente

É possível fazer algumas alterações no código mostrado acima e no Console do Firebase para permitir que você desative todo o monitoramento automático (pronto para uso) de maneira separada do monitoramento personalizado.

  1. Adicione o seguinte código às instruções launchOptions no método de instância application:didFinishLaunchingWithOptions: (e não o que foi mostrado acima para o mesmo método de instância):

    Swift

    Observação: este produto do Firebase não está disponível para destinos 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

    Observação: este produto do Firebase não está disponível para destinos 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];
    
  2. Realize as seguintes ações no Console do Firebase:

    • Para desativar todo o monitoramento automático (pronto para uso), crie um parâmetro perf_disable_auto no projeto do app e defina o valor dele como true.
    • Para desativar todo o monitoramento personalizado, crie um parâmetro perf_disable_manual no projeto do app e defina o valor dele como true.