Firebase Performance Monitoring 사용 중지


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

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

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

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

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

앱 빌드 프로세스 중에 Performance Monitoring 사용 중지

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

Performance Monitoring을 사용 중지하거나 비활성화하려면 Apple 앱의 속성 목록 파일(Info.plist)에 2가지 키 중 하나를 추가하세요.

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

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

Remote Config을 사용하여 런타임에 앱 사용 중지

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

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

  1. Podfile에서 Remote Config을 사용 중이어야 합니다.

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

    Swift

    참고: 이 Firebase 제품은 macOS, Mac Catalyst, watchOS 대상에서는 사용할 수 없습니다.
    import FirebaseRemoteConfig
    

    Objective-C

    참고: 이 Firebase 제품은 macOS, Mac Catalyst, watchOS 대상에서는 사용할 수 없습니다.
    @import FirebaseRemoteConfig;
    
  3. AppDelegate 파일에서 application:didFinishLaunchingWithOptions: 인스턴스 메서드의 launchOptions 문에 다음 코드를 추가합니다.

    Swift

    참고: 이 제품은 macOS, Mac Catalyst, 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

    참고: 이 Firebase 제품은 macOS, Mac Catalyst, 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. ViewController.m 또는 앱에서 사용하는 다른 구현 파일에 다음 코드를 추가하여 Remote Config 값을 가져오고 활성화합니다.

    Swift

    참고: 이 Firebase 제품은 macOS, Mac Catalyst, 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

    참고: 이 Firebase 제품은 macOS, Mac Catalyst, 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. Firebase Console에서 Performance Monitoring을 사용 중지하려면 앱의 프로젝트에 perf_disable 파라미터를 만들고 그 값을 true로 설정합니다.

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

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

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

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

    Swift

    참고: 이 Firebase 제품은 macOS, Mac Catalyst, 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

    참고: 이 Firebase 제품은 macOS, Mac Catalyst, 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. Firebase Console에서 다음을 완료합니다.

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