Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Firebase Performance Monitoring 사용 중지

사용자가 Firebase Performance Monitoring 사용 여부를 선택할 수 있도록 하려면 Performance Monitoring을 사용 설정하거나 중지할 수 있도록 앱을 구성해야 합니다. 이 기능은 앱을 개발하거나 테스트하는 중에도 유용할 수 있습니다.

다음은 고려해야 할 몇 가지 옵션입니다.

  • 앱을 빌드할 때 Performance Monitoring SDK를 사용 중지하고 런타임에 다시 사용 설정하는 옵션을 제공합니다.

  • Performance Monitoring SDK를 사용 설정한 상태에서 앱을 빌드하고 Firebase 원격 구성을 사용하여 런타임에 사용 중지하는 옵션을 제공합니다.

  • 런타임에 사용 설정하는 옵션 없이 Performance Monitoring SDK를 완전히 비활성화합니다.

앱 빌드 시 Performance Monitoring 사용 중지

예를 들어 앱 개발 및 테스트 중에 출시 전 버전 앱의 성능 데이터가 보고되지 않게 하려면 앱 빌드 프로세스에서는 Performance Monitoring을 사용 중지하면 됩니다.

Performance Monitoring을 사용 중지하거나 비활성화하기 위해 iOS 앱의 속성 목록 파일(Info.plist)에 2가지 키 중 하나를 추가할 수 있습니다.

  • Performance Monitoring을 사용 중지하되 런타임에 앱에서 사용 설정하도록 허용하려면 앱의 Info.plist 파일에서 firebase_performance_collection_enabledfalse로 설정합니다.

  • 런타임에서 사용 설정하는 옵션 없이 Performance Monitoring을 완전히 비활성화하려면 앱의 Info.plist 파일에서 firebase_performance_collection_deactivatedtrue로 설정합니다.

원격 구성을 사용하여 런타임에 앱 사용 중지

Firebase 원격 구성은 앱의 동작과 모양을 변경할 수 있으므로 앱의 배포된 인스턴스에서 Performance Monitoring을 사용 중지하는 이상적인 방법을 제공합니다.

아래와 같은 예시 코드를 사용하면 다음 번에 iOS 앱이 시작될 때 Performance Monitoring 데이터 수집을 중지할 수 있습니다. iOS 앱에서 원격 구성을 사용하는 방법에 관한 자세한 내용은 iOS에서 Firebase 원격 구성 시작하기를 참조하세요.

  1. Podfile에서 원격 구성이 사용되도록 합니다.

    pod 'Firebase/RemoteConfig'
    
  2. 앱의 AppDelegate 파일 맨 위에 다음을 추가합니다.

    Swift

    import FirebaseRemoteConfig
    

    Objective-C

    @import FirebaseRemoteConfig;
    
  3. AppDelegate 파일에서 application:didFinishLaunchingWithOptions: 인스턴스 메서드의 launchOptions 문에 다음 코드를 추가합니다.

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

    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. ViewController.m 또는 앱에서 사용하는 다른 구현 파일에 다음 코드를 추가하여 원격 구성 값을 가져오고 활성화합니다.

    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. Firebase Console에서 Performance Monitoring을 사용 중지하려면 앱의 프로젝트에 perf_disable 매개변수를 만들고 그 값을 true로 설정합니다.

    perf_disable 값을 false로 설정하면 Performance Monitoring은 사용 설정된 상태로 유지됩니다.

자동 또는 커스텀 데이터 수집을 개별적으로 사용 중지

위의 코드와 Firebase Console의 코드에 약간의 변화를 주면 커스텀 모니터링과 별도로 모든 자동(즉시 사용) 모니터링을 사용 중지할 수 있습니다.

  1. 위의 동일한 인스턴스 메서드에 제시된 코드 대신 다음 코드를 application:didFinishLaunchingWithOptions: 인스턴스 메서드의 launchOptions 문에 추가합니다.

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

    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. Firebase Console에서 다음을 완료합니다.

    • 즉시 사용 가능한 모든 자동 모니터링을 사용 중지하려면 앱의 프로젝트에 perf_disable_auto 매개변수를 만들고 그 값을 true로 설정합니다.
    • 모든 커스텀 모니터링을 사용 중지하려면 앱의 프로젝트에 perf_disable_manual 매개변수를 만들고 그 값을 true로 설정합니다.