사용자가 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_enabled
를false
로 설정합니다.런타임에서 사용 설정하는 옵션 없이 Performance Monitoring을 완전히 비활성화하려면 앱의
Info.plist
파일에서firebase_performance_collection_deactivated
를true
로 설정합니다.
Remote Config을 사용하여 런타임에 앱 사용 중지
Firebase Remote Config은 앱의 동작과 모양을 변경할 수 있으므로 앱의 배포된 인스턴스에서 Performance Monitoring을 사용 중지하는 이상적인 방법을 제공합니다.
아래와 같은 예시 코드를 사용하면 다음 번에 Apple 앱이 시작될 때 Performance Monitoring 데이터 수집을 중지할 수 있습니다. Apple 앱에서 Remote Config을 사용하는 방법에 관한 자세한 내용은 Apple 플랫폼에서 Firebase Remote Config 사용을 참조하세요.
Podfile
에서 Remote Config을 사용 중이어야 합니다.pod 'Firebase/RemoteConfig'
앱의
AppDelegate
파일 맨 위에 다음을 추가합니다.Swift
참고: 이 Firebase 제품은 macOS, Mac Catalyst, watchOS 대상에서는 사용할 수 없습니다.import FirebaseRemoteConfig
Objective-C
참고: 이 Firebase 제품은 macOS, Mac Catalyst, watchOS 대상에서는 사용할 수 없습니다.@import FirebaseRemoteConfig;
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];
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); } }];
Firebase Console에서 Performance Monitoring을 사용 중지하려면 앱의 프로젝트에 perf_disable 파라미터를 만들고 그 값을
true
로 설정합니다.perf_disable 값을
false
로 설정하면 Performance Monitoring은 사용 설정된 상태로 유지됩니다.
자동 또는 커스텀 데이터 수집을 개별적으로 사용 중지
위의 코드와 Firebase Console에 약간의 변화를 주면 커스텀 모니터링과 별도로 모든 자동(즉시 사용) 모니터링을 사용 중지할 수 있습니다.
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];
Firebase Console에서 다음을 완료합니다.
- 모든 자동(즉시 사용) 모니터링을 사용 중지하려면 앱의 프로젝트에 perf_disable_auto 매개변수를 만들고 그 값을
true
로 설정합니다. - 모든 커스텀 모니터링을 사용 중지하려면 앱의 프로젝트에 perf_disable_manual 매개변수를 만들고 그 값을
true
로 설정합니다.
- 모든 자동(즉시 사용) 모니터링을 사용 중지하려면 앱의 프로젝트에 perf_disable_auto 매개변수를 만들고 그 값을