Wyłącz Monitorowanie wydajności Firebase


Aby umożliwić użytkownikom wyrażenie zgody na korzystanie z funkcji Firebase Performance Monitoring lub rezygnację z niej, możesz skonfigurować aplikację tak, aby można było włączać i wyłączać funkcję Performance Monitoring. Możesz też uznać tę funkcję za przydatną podczas tworzenia i testowania aplikacji.

Oto kilka opcji do rozważenia:

  • Podczas kompilowania aplikacji możesz wyłączyć pakiet SDK Performance Monitoring, zachowując możliwość jego ponownego włączenia w czasie działania.

  • Aplikację możesz skompilować z włączonym pakietem SDK Performance Monitoring, ale masz też możliwość jej wyłączenia w czasie działania za pomocą pakietu Firebase Remote Config.

  • Możesz całkowicie dezaktywować pakiet SDK Performance Monitoring, bez możliwości jego włączenia w czasie działania.

Wyłącz Performance Monitoring podczas procesu kompilacji aplikacji

Wyłączenie Performance Monitoring podczas procesu kompilacji aplikacji może być przydatne, aby uniknąć raportowania danych o skuteczności wersji przedprodukcyjnej aplikacji podczas jej tworzenia i testowania.

Aby wyłączyć lub dezaktywować Performance Monitoring, możesz dodać jeden z tych 2 kluczy do pliku z listą właściwości (Info.plist) aplikacji Apple:

  • Aby wyłączyć Performance Monitoring, ale umożliwić aplikacji włączenie tej funkcji w czasie wykonywania, ustaw wartość firebase_performance_collection_enabled na false w pliku Info.plist aplikacji.

  • Aby całkowicie dezaktywować Performance Monitoring, bez możliwości włączenia go w czasie wykonywania, ustaw wartość firebase_performance_collection_deactivated na true w pliku Info.plist aplikacji.

Wyłączanie aplikacji w czasie działania za pomocą funkcji Remote Config

Firebase Remote Config umożliwia wprowadzanie zmian w zachowaniu i wyglądzie aplikacji, dzięki czemu stanowi idealny sposób na wyłączenie Performance Monitoring w wdrożonych instancjach aplikacji.

Aby wyłączyć Performance Monitoring zbieranie danych przy następnym uruchomieniu aplikacji Apple, użyj przykładowego kodu pokazanego poniżej. Więcej informacji o używaniu Remote Config w aplikacji Apple znajdziesz w artykule Używanie Firebase Remote Config na platformach Apple.

  1. Upewnij się, że w Twoim Podfile jest używany element Remote Config:

    pod 'Firebase/RemoteConfig'
    
  2. U góry pliku AppDelegate aplikacji dodaj te informacje:

    Swift

    Uwaga: ta usługa Firebase nie jest dostępna w przypadku docelowych systemów macOS, Mac Catalyst i watchOS.
    import FirebaseRemoteConfig
    

    Objective-C

    Uwaga: ta usługa Firebase nie jest dostępna w przypadku docelowych systemów macOS, Mac Catalyst i watchOS.
    @import FirebaseRemoteConfig;
    
  3. W pliku AppDelegate dodaj ten kod do instrukcji launchOptions w metodzie instancji application:didFinishLaunchingWithOptions::

    Swift

    Uwaga: ten produkt nie jest dostępny na platformach macOS, Mac Catalyst i 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

    Uwaga: ta usługa Firebase nie jest dostępna na platformach docelowych macOS, Mac Catalyst i 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. W pliku ViewController.m lub innym pliku implementacji używanym przez aplikację dodaj ten kod, aby pobierać i aktywować wartości Remote Config:

    Swift

    Uwaga: ta usługa Firebase nie jest dostępna w przypadku docelowych systemów macOS, Mac Catalyst i 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

    Uwaga: ta usługa Firebase nie jest dostępna w przypadku docelowych systemów macOS, Mac Catalyst i 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. Aby wyłączyć Performance Monitoring w konsoli Firebase, utwórz w projekcie aplikacji parametr perf_disable i ustaw jego wartość na true.

    Jeśli ustawisz wartość perf_disable na false, Performance Monitoring pozostanie włączona.

Wyłączanie zbierania danych automatycznie lub niestandardowo

Możesz wprowadzić pewne zmiany w powyższym kodzie i w konsoli Firebase, aby umożliwić wyłączenie całego automatycznego (domyślnego) monitorowania niezależnie od monitorowania niestandardowego.

  1. Dodaj ten kod do instrukcji launchOptions w metodzie instancji application:didFinishLaunchingWithOptions: (zamiast kodu pokazanego powyżej w przypadku tej samej metody instancji):

    Swift

    Uwaga: ta usługa Firebase nie jest dostępna w przypadku docelowych systemów macOS, Mac Catalyst i 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

    Uwaga: ta usługa Firebase nie jest dostępna w przypadku docelowych systemów macOS, Mac Catalyst i 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. W konsoli Firebase wykonaj te czynności:

    • Aby wyłączyć wszystkie automatyczne (domyślne) monitorowanie, utwórz w projekcie aplikacji parametr perf_disable_auto, a następnie ustaw jego wartość na true.
    • Aby wyłączyć wszystkie niestandardowe monitorowanie, utwórz w projekcie aplikacji parametr perf_disable_manual i ustaw jego wartość na true.