Firebase Performance Monitoring SDK 사용 중지

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

앱을 개발할 때 Performance Monitoring SDK를 사용 중지하고 런타임에 다시 사용 설정하는 옵션을 둘 수도 있고, Performance Monitoring을 사용 설정한 상태로 앱을 개발하고 Firebase 원격 구성을 사용하여 런타임에 사용 중지하는 옵션을 둘 수도 있습니다. 런타임에 사용 설정하는 옵션 없이 Performance Monitoring을 완전히 비활성화할 수도 있습니다.

앱 개발 시 Performance Monitoring 사용 중지

예를 들어 앱 개발 및 테스트 중에 미출시 버전 앱의 성능 데이터가 보고되지 않게 하려는 경우 앱 개발 중에 Performance Monitoring을 사용 중지할 수 있습니다.

iOS

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

  • Performance Monitoring을 사용 중지하고 앱에서 런타임에 사용 설정하도록 허용하려면 앱의 Info.plist 파일에서 firebase_performance_collection_enabledtrue로 설정합니다.
  • 런타임에 사용 설정하는 옵션 없이 Performance Monitoring을 완전히 비활성화하려면 앱의 Info.plist 파일에서 firebase_performance_collection_deactivatedtrue로 설정합니다. 이 설정은 firebase_performance_collection_enabled 설정을 재정의하며, Performance Monitoring을 다시 사용 설정하려면 앱의 Info.plist 파일에서 이 설정을 삭제해야 합니다.

Android

앱의 gradle.properties 파일에 다음 속성을 추가하여 빌드 시 자동 추적 및 HTTP/S 네트워크 요청 모니터링을 사용 중지할 수 있습니다. 맞춤 추적은 여기에서 제외됩니다.

firebasePerformanceInstrumentationEnabled=false

이 속성을 true로 변경하면 자동 추적 및 HTTP/S 네트워크 요청 모니터링이 다시 사용 설정됩니다.

빌드 시 Performance Monitoring을 사용 중지할 수도 있지만, 런타임에 앱에서 사용 설정할 수 있도록 하려면 다음과 같이 앱의 AndroidManifest.xml 파일에서 <application> 요소에 <meta-data> 요소를 추가합니다.

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

Performance Monitoring을 런타임에 사용 설정하는 옵션 없이 완전히 비활성화하려면 다음과 같이 앱의 AndroidManifest.xml 파일에서 <application> 요소에 <meta-data> 요소를 추가합니다.

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

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

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

iOS

아래와 같은 예제 코드를 사용하여 다음 번에 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 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. 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 콘솔에서 Performance Monitoring을 사용 중지하려면 앱의 프로젝트에서 perf_disable 매개변수를 만들고 값을 true로 설정합니다. perf_disable 값을 false로 설정하면 Performance Monitoring이 계속 사용됩니다.

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

위 코드와 Firebase 콘솔 작업에 약간의 변화를 주면 수동 데이터 수집(맞춤 추적)과는 별도로 자동 데이터 수집(앱 시작 추적 및 HTTP/S 네트워크 요청)을 사용 중지할 수 있습니다. 이렇게 하려면 위 3단계에 제시된 코드 대신 다음 코드를 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 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];

그런 다음 Firebase 콘솔에서 다음을 수행합니다.

  • 자동 추적 및 HTTP/S 네트워크 모니터링을 사용 중지하려면 앱의 프로젝트에서 perf_disable_auto 매개변수를 만들고 값을 true로 설정합니다.
  • 맞춤 추적을 사용 중지하려면 앱의 프로젝트에서 perf_disable_manual 매개변수를 만들고 값을 true로 설정합니다.

앱에서 Performance Monitoring의 이러한 부분을 사용 설정하려면 Firebase 콘솔에서 해당 매개변수의 값을 false로 설정합니다.

Android

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

  1. 모듈 Gradle 파일(일반적으로 app/build.gradle)의 dependencies 섹션에 원격 구성이 있는지 확인합니다.

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

  2. 그런 다음 원격 구성을 설정하고 perf_disabletrue로 설정된 경우 Performance Monitoring을 사용 중지합니다.

    자바
    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. 마지막으로 MainActivity.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. Firebase 콘솔에서 Performance Monitoring을 사용 중지하려면 앱의 프로젝트에서 perf_disable 매개변수를 만들고 값을 true로 설정합니다. 이렇게 변경하면 Performance Monitoring SDK 호출이 '작업 없음' 호출(NOOP)로 바뀌므로 앱에서 Performance Monitoring SDK를 사용하는 데 따르는 앱 성능 저하가 사라집니다. perf_disable 값을 false로 설정하면 Performance Monitoring이 계속 사용됩니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.