Чтобы пользователи могли включать и отключать Firebase Performance Monitoring, настройте приложение так, чтобы вы могли включать и отключать Performance Monitoring. Эта функция также может быть полезна при разработке и тестировании приложений.
Возможные варианты:
Вы можете отключить SDK Performance Monitoring при создании приложения и снова включить его во время выполнения.
Вы можете создать приложение с включенным SDK Performance Monitoring, но отключить его во время выполнения с помощью Firebase Remote Config.
Вы можете полностью отключить SDK Performance Monitoring без возможности включить его во время выполнения.
Отключите Performance Monitoring во время сборки приложения
Отключение Performance Monitoring во время сборки приложения может быть полезно, например, чтобы избежать передачи данных об эффективности из предварительной версии приложения во время его разработки и тестирования.
Чтобы отключить или деактивировать Performance Monitoring, добавьте один из двух ключей в файл списка свойств (Info.plist) для приложения Apple:
Чтобы отключить Performance Monitoring, но разрешить приложению включать его во время выполнения, задайте для
firebase_performance_collection_enabledзначениеfalseв файлеInfo.plistприложения.Чтобы полностью отключить Performance Monitoring без возможности включить его во время выполнения, задайте для
firebase_performance_collection_deactivatedзначениеtrueв файлеInfo.plistприложения.
Отключите приложение во время выполнения с помощью Remote Config
Firebase Remote Config позволяет менять поведение и внешний вид приложения, поэтому с его помощью можно отключить Performance Monitoring в развернутых экземплярах приложения.
Чтобы отключить сбор данных Performance Monitoring при следующем запуске приложения Apple, используйте пример кода ниже. Дополнительную информацию об использовании Remote Config в приложении Apple можно найти в статье Как использовать Firebase Remote Config на платформах Apple.
Убедитесь, что в
Podfileиспользуется Remote Config:pod 'Firebase/RemoteConfig'Добавьте в начало файла
AppDelegateсвоего приложения следующий код:Swift
Примечание. Этот продукт Firebase недоступен для macOS, Mac Catalyst и watchOS.import FirebaseRemoteConfigObjective-C
Примечание. Этот продукт Firebase недоступен для macOS, Mac Catalyst и watchOS.@import FirebaseRemoteConfig;В файле
AppDelegateдобавьте следующий код в инструкцииlaunchOptionsв методе экземпляраapplication:didFinishLaunchingWithOptions::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); } }];Чтобы отключить Performance Monitoring в консоли Firebase, создайте параметр perf_disable в проекте приложения и задайте для него значение
true.Если вы зададите для параметра perf_disable значение
false, то Performance Monitoring останется включенным.
Как отключить автоматический или специальный сбор данных по отдельности
Вы можете внести некоторые изменения в код, показанный выше и в консоли Firebase, чтобы отключить весь автоматический (стандартный) мониторинг отдельно от пользовательского.
Добавьте следующий код в операторы
launchOptionsв методе экземпляраapplication:didFinishLaunchingWithOptions:(вместо того, что показано выше для того же метода экземпляра):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:
- Чтобы отключить автоматический мониторинг, создайте в проекте приложения параметр perf_disable_auto и задайте для него значение
true. - Чтобы отключить весь пользовательский мониторинг, создайте параметр perf_disable_manual в проекте приложения и задайте для него значение
true.
- Чтобы отключить автоматический мониторинг, создайте в проекте приложения параметр perf_disable_auto и задайте для него значение