כדי לאפשר למשתמשים להביע הסכמה או סירוב לשימוש ב-Firebase Performance Monitoring, כדאי להגדיר את האפליקציה כך שתוכלו להפעיל ולהשבית את Performance Monitoring. יכול להיות שהתכונה הזו תהיה שימושית גם במהלך פיתוח ובדיקה של אפליקציות.
ריכזנו כאן כמה אפשרויות שכדאי לקחת בחשבון:
אפשר להשבית את ה-SDK של Performance Monitoring בזמן פיתוח האפליקציה, עם אפשרות להפעיל אותו מחדש בזמן הריצה.
אפשר ליצור את האפליקציה עם ה-SDK של Performance Monitoring מופעל, אבל יש אפשרות להשבית אותו בזמן הריצה באמצעות Firebase Remote Config.
אפשר להשבית לחלוטין את ה-SDK של Performance Monitoring, ללא אפשרות להפעיל אותו בזמן הריצה.
השבתת Performance Monitoring במהלך תהליך ה-build של האפליקציה
מצב אחד שבו כדאי להשבית את Performance Monitoring במהלך תהליך ה-build של האפליקציה הוא כדי להימנע מהדיווח על נתוני ביצועים מגרסה של האפליקציה לפני השקתה, במהלך הפיתוח והבדיקה של האפליקציה.
כדי להשבית או להשבית באופן זמני את 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.
מוודאים ש-Remote Config משמש ב-
Podfile
:pod 'Firebase/RemoteConfig'
מוסיפים את הטקסט הבא לחלק העליון של קובץ
AppDelegate
של האפליקציה:Swift
הערה: מוצר Firebase הזה לא זמין ביעדים של macOS, Mac Catalyst ו-watchOS.import FirebaseRemoteConfig
Objective-C
הערה: מוצר Firebase הזה לא זמין ביעדים של macOS, Mac Catalyst ו-watchOS.@import FirebaseRemoteConfig;
בקובץ
AppDelegate
, מוסיפים את הקוד הבא להצהרותlaunchOptions
ב-method של המופע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
ב-method של המופעapplication:didFinishLaunchingWithOptions:
(במקום מה שמוצג למעלה לאותו method של מופע):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 בפרויקט של האפליקציה ומגדירים את הערך שלו כ-