במסמך הזה מוסבר איך לקרוא ולשנות באופן פרוגרמטי את קבוצת הפרמטרים והתנאים בפורמט JSON שנקראת תבנית Remote Config. כך תוכלו לבצע שינויים בתבנית בקצה העורפי, ואפליקציית הלקוח תוכל לאחזר אותם באמצעות ספריית הלקוח.
באמצעות Remote Config REST API או Admin SDKs שמתוארים במדריך הזה, אתם יכולים לעקוף את ניהול התבנית במסוף Firebase ולשלב ישירות שינויים ב-Remote Config בתהליכים שלכם. לדוגמה, בעזרת ממשקי ה-API של ה-Backend Remote Config תוכלו:
- תזמון עדכונים Remote Config אפשר להשתמש בקריאות API בשילוב עם משימת cron כדי לשנות את הערכים של Remote Config בלוח זמנים קבוע.
- ייבוא של ערכי הגדרות בקבוצות כדי לעבור בצורה יעילה מהמערכת הקניינית שלכם אל Firebase Remote Config.
שימוש ב-Remote Config עם Cloud Functions for Firebase, שינוי ערכים באפליקציה על סמך אירועים שמתרחשים בצד השרת. לדוגמה, אפשר להשתמש בRemote Config כדי לקדם תכונה חדשה באפליקציה, ואז להשבית את הקידום הזה באופן אוטומטי אחרי שמזהים שמספיק אנשים השתמשו בתכונה החדשה.
בקטעים הבאים של המדריך הזה מתוארות פעולות שאפשר לבצע באמצעות ממשקי ה-API של ה-backend Remote Config. כדי לבדוק קוד שמבצע את המשימות האלה באמצעות REST API, אפשר לעיין באחת מהאפליקציות לדוגמה הבאות:
- מדריך למתחילים לשימוש ב-Firebase Remote Config REST API Java
- מדריך למתחילים לשימוש ב-Firebase Remote Config REST API Node.js
- הפעלה מהירה של Firebase Remote Config REST API Python
שינוי הגדרת התצורה מרחוק באמצעות Firebase Admin SDK
Admin SDK הוא אוסף של ספריות שרת שמאפשרות לכם ליצור אינטראקציה עם Firebase מסביבות עם הרשאות. בנוסף לעדכונים של Remote Config, Admin SDK מאפשר ליצור ולאמת טוקנים של Firebase Auth, לקרוא ולכתוב מ-Realtime Database וכן הלאה. מידע נוסף על Admin SDKהדרישות המוקדמות וההגדרה זמין במאמר הוספת Firebase Admin SDK לשרת.
בתהליך טיפוסי של Remote Config, יכול להיות שתקבלו את התבנית הנוכחית, תשנו חלק מהפרמטרים או מקבוצות הפרמטרים והתנאים, תאמתו את התבנית ואז תפרסמו אותה. לפני שמבצעים את הקריאות האלה ל-API, צריך לאשר בקשות מ-SDK.
אתחול ה-SDK והרשאה לבקשות API
כשמפעילים את Admin SDK בלי פרמטרים, ערכת ה-SDK משתמשת בפרטי הכניסה שמוגדרים כברירת מחדל באפליקציה של Google וקוראת את האפשרויות ממשתנה הסביבה FIREBASE_CONFIG
.
אם התוכן של המשתנה FIREBASE_CONFIG
מתחיל ב-{
, הוא ינותח כאובייקט JSON. אחרת, ה-SDK מניח שהמחרוזת היא השם של קובץ JSON שמכיל את האפשרויות.
לדוגמה:
Node.js
const admin = require('firebase-admin'); admin.initializeApp();
Java
FileInputStream serviceAccount = new FileInputStream("service-account.json"); FirebaseOptions options = FirebaseOptions.builder() .setCredentials(GoogleCredentials.fromStream(serviceAccount)) .build(); FirebaseApp.initializeApp(options);
קבלת תבנית ההגדרות האישיות הנוכחית של הגדרת התצורה מרחוק
כשעובדים עם תבניות Remote Config, חשוב לזכור שהן מגיעות עם גרסאות, ולכל גרסה יש תוקף מוגבל מרגע היצירה שלה ועד לרגע שבו מחליפים אותה בעדכון: 90 ימים, עם מגבלה כוללת של 300 גרסאות מאוחסנות. מידע נוסף זמין במאמר תבניות וניהול גרסאות.
אפשר להשתמש בממשקי ה-API של ה-Backend כדי לקבל את הגרסה הפעילה הנוכחית של תבנית Remote Config בפורמט JSON.
פרמטרים וערכי פרמטרים שנוצרו במיוחד כווריאציות בניסוי A/B Testing לא נכללים בתבניות שמיוצאות.
כדי לקבל את התבנית:
Node.js
function getTemplate() { var config = admin.remoteConfig(); config.getTemplate() .then(function (template) { console.log('ETag from server: ' + template.etag); var templateStr = JSON.stringify(template); fs.writeFileSync('config.json', templateStr); }) .catch(function (err) { console.error('Unable to get template'); console.error(err); }); }
Java
Template template = FirebaseRemoteConfig.getInstance().getTemplateAsync().get(); // See the ETag of the fetched template. System.out.println("ETag from server: " + template.getETag());
שינוי פרמטרים של הגדרת תצורה מרחוק
אפשר לשנות ולהוסיף פרמטרים וקבוצות פרמטרים באופן פרוגרמטי.Remote Config לדוגמה, לקבוצת פרמטרים קיימת בשם new_menu, אפשר להוסיף פרמטר לשליטה בהצגת מידע עונתי:
Node.js
function addParameterToGroup(template) { template.parameterGroups['new_menu'].parameters['spring_season'] = { defaultValue: { useInAppDefault: true }, description: 'spring season menu visibility.', }; }
Java
template.getParameterGroups().get("new_menu").getParameters() .put("spring_season", new Parameter() .setDefaultValue(ParameterValue.inAppDefault()) .setDescription("spring season menu visibility.") );
ממשק ה-API מאפשר ליצור פרמטרים חדשים וקבוצות פרמטרים, או לשנות ערכי ברירת מחדל, ערכים מותנים ותיאורים. בכל המקרים, צריך לפרסם את התבנית באופן מפורש אחרי שמבצעים בה שינויים.
שינוי התנאים של הגדרת התצורה מרחוק
אפשר לשנות ולהוסיף תנאים וערכים מותנים באופן פרוגרמטי.Remote Config לדוגמה, כדי להוסיף תנאי חדש:
Node.js
function addNewCondition(template) { template.conditions.push({ name: 'android_en', expression: 'device.os == \'android\' && device.country in [\'us\', \'uk\']', tagColor: 'BLUE', }); }
Java
template.getConditions().add(new Condition("android_en", "device.os == 'android' && device.country in ['us', 'uk']", TagColor.BLUE));
בכל המקרים, צריך לפרסם את התבנית באופן מפורש אחרי שמבצעים בה שינויים.
ממשקי ה-API של ה-Backend מספקים כמה תנאים ואופרטורים להשוואה שאפשר להשתמש בהם כדי לשנות את ההתנהגות והמראה של האפליקציה. כדי לקבל מידע נוסף על תנאים ועל האופרטורים שנתמכים בתנאים האלה, אפשר לעיין בהפניה לביטויים מותנים.Remote Config
אימות תבנית ההגדרה מרחוק
אפשר גם לאמת את העדכונים לפני שמפרסמים אותם, כמו שמוצג כאן:
Node.js
function validateTemplate(template) { admin.remoteConfig().validateTemplate(template) .then(function (validatedTemplate) { // The template is valid and safe to use. console.log('Template was valid and safe to use'); }) .catch(function (err) { console.error('Template is invalid and cannot be published'); console.error(err); }); }
Java
try { Template validatedTemplate = FirebaseRemoteConfig.getInstance() .validateTemplateAsync(template).get(); System.out.println("Template was valid and safe to use"); } catch (ExecutionException e) { if (e.getCause() instanceof FirebaseRemoteConfigException) { FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause(); System.out.println("Template is invalid and cannot be published"); System.out.println(rcError.getMessage()); } }
במהלך תהליך האימות הזה, המערכת בודקת אם יש שגיאות כמו מפתחות כפולים לפרמטרים ולתנאים, שמות תנאים לא תקינים או תנאים שלא קיימים, או תגי etag בפורמט שגוי.
לדוגמה, אם תשלחו בקשה שמכילה יותר ממספר המפתחות המותר – 2, 000 – תקבלו את הודעת השגיאה Param count too large
.
פרסום תבנית של הגדרת תצורה מרחוק
אחרי שמאחזרים תבנית ועורכים אותה עם העדכונים הרצויים, אפשר לפרסם אותה. פרסום תבנית כמו שמתואר בקטע הזה מחליף את כל תבנית ההגדרות הקיימת בקובץ המעודכן, ולתבנית הפעילה החדשה מוקצה מספר גרסה שגדול באחד ממספר הגרסה של התבנית שהיא החליפה.
במידת הצורך, אפשר להשתמש ב-API ל-REST כדי לחזור לגרסה הקודמת. כדי לצמצם את הסיכון לשגיאות בעדכון, אפשר לאמת לפני הפרסום.
Remote Config התאמות אישיות ותנאים נכללים בתבניות שהורדתם, ולכן חשוב לשים לב למגבלות הבאות כשמנסים לפרסם בפרויקט אחר:
אי אפשר לייבא התאמות אישיות מפרויקט לפרויקט.
לדוגמה, אם הפעלתם התאמות אישיות בפרויקט והורדתם תבנית ועריכתם אותה, תוכלו לפרסם אותה באותו פרויקט, אבל לא תוכלו לפרסם אותה בפרויקט אחר אלא אם תמחקו את ההתאמות האישיות מהתבנית.
אפשר לייבא תנאים מפרויקט לפרויקט, אבל חשוב לזכור שערכים מותנים ספציפיים (כמו מזהי אפליקציות או קהלים) צריכים להיות קיימים בפרויקט היעד לפני הפרסום.
לדוגמה, אם יש לכם פרמטר Remote Config שמשתמש בתנאי שמציין ערך פלטפורמה של
iOS
, אפשר לפרסם את התבנית בפרויקט אחר, כי ערכי הפלטפורמה זהים לכל הפרויקטים. עם זאת, אם הוא מכיל תנאי שמסתמך על מזהה אפליקציה ספציפי או על קהל משתמשים שלא קיים בפרויקט היעד, האימות ייכשל.אם התבנית שאתם מתכננים לפרסם מכילה תנאים שמסתמכים על Google Analytics, צריך להפעיל את Analytics בפרויקט היעד.
Node.js
function publishTemplate() { var config = admin.remoteConfig(); var template = config.createTemplateFromJSON( fs.readFileSync('config.json', 'UTF8')); config.publishTemplate(template) .then(function (updatedTemplate) { console.log('Template has been published'); console.log('ETag from server: ' + updatedTemplate.etag); }) .catch(function (err) { console.error('Unable to publish template.'); console.error(err); }); }
Java
try { Template publishedTemplate = FirebaseRemoteConfig.getInstance() .publishTemplateAsync(template).get(); System.out.println("Template has been published"); // See the ETag of the published template. System.out.println("ETag from server: " + publishedTemplate.getETag()); } catch (ExecutionException e) { if (e.getCause() instanceof FirebaseRemoteConfigException) { FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause(); System.out.println("Unable to publish template."); System.out.println(rcError.getMessage()); } }
שינוי הגדרת התצורה מרחוק באמצעות API ל-REST
בקטע הזה מתוארות היכולות העיקריות של Remote Config REST API בכתובת https://firebaseremoteconfig.googleapis.com
.
למידע מפורט, ראו הפניית API.
קבלת אסימון גישה לאימות ולהרשאה של בקשות API
פרויקטים ב-Firebase תומכים בחשבונות שירות של Google, שאפשר להשתמש בהם כדי לקרוא ל-Firebase Server APIs משרת האפליקציות או מסביבה מהימנה. אם אתם מפתחים קוד באופן מקומי או פורסים את האפליקציה שלכם בשרת מקומי, אתם יכולים להשתמש בפרטי הכניסה שהתקבלו דרך חשבון השירות הזה כדי לאשר בקשות לשרת.
כדי לאמת חשבון שירות ולאשר לו גישה לשירותי Firebase, צריך ליצור קובץ מפתח פרטי בפורמט JSON.
כדי ליצור קובץ מפתח פרטי לחשבון השירות:
במסוף Firebase, פותחים את Settings > Service Accounts.
לוחצים על Generate New Private Key (יצירת מפתח פרטי חדש) ואז על Generate Key (יצירת מפתח) כדי לאשר.
מאחסנים את קובץ ה-JSON שמכיל את המפתח בצורה מאובטחת.
כשמבצעים הרשאה באמצעות חשבון שירות, יש שתי אפשרויות לספק את פרטי הכניסה לאפליקציה. אתם יכולים להגדיר את משתנה הסביבה GOOGLE_APPLICATION_CREDENTIALS או להעביר מפורשות את הנתיב למפתח של חשבון השירות בקוד. האפשרות הראשונה מאובטחת יותר ומומלצת מאוד.
כדי להגדיר את משתנה הסביבה:
מגדירים את משתנה הסביבה GOOGLE_APPLICATION_CREDENTIALS לנתיב של קובץ ה-JSON שמכיל את המַפְתח של חשבון השירות. המשתנה הזה חל רק על סשן המעטפת הנוכחי, כך שאם פותחים סשן חדש צריך להגדיר את המשתנה שוב.
Linux או macOS
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
Windows
עם PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
אחרי שתשלימו את השלבים שלמעלה, השירות Application Default Credentials (ADC) יוכל לקבוע באופן מרומז את פרטי הכניסה שלכם, וכך תוכלו להשתמש בפרטי כניסה של חשבון שירות כשאתם בודקים או מריצים בסביבות שאינן של Google.
משתמשים בפרטי הכניסה של Firebase יחד עם ספריית האימות של Google בשפה המועדפת כדי לאחזר אסימון גישה מסוג OAuth 2.0 עם תוקף קצר:
node.js
function getAccessToken() {
return admin.credential.applicationDefault().getAccessToken()
.then(accessToken => {
return accessToken.access_token;
})
.catch(err => {
console.error('Unable to get access token');
console.error(err);
});
}
בדוגמה הזו, ספריית הלקוח של Google API מאמתת את הבקשה באמצעות אסימון אינטרנט מסוג JSON, או JWT. למידע נוסף, עיינו במאמר בנושא אסימוני אינטרנט מסוג JSON.
Python
def _get_access_token():
"""Retrieve a valid access token that can be used to authorize requests.
:return: Access token.
"""
credentials = ServiceAccountCredentials.from_json_keyfile_name(
'service-account.json', SCOPES)
access_token_info = credentials.get_access_token()
return access_token_info.access_token
Java
public static String getAccessToken() throws IOException {
GoogleCredentials googleCredentials = GoogleCredentials
.fromStream(new FileInputStream("service-account.json"))
.createScoped(Arrays.asList(SCOPES));
googleCredentials.refreshAccessToken();
return googleCredentials.getAccessToken().getTokenValue();
}
אחרי שתוקף אסימון הגישה יפוג, השיטה לרענון האסימון תופעל באופן אוטומטי כדי לאחזר אסימון גישה מעודכן.
כדי לאשר גישה ל-Remote Config, צריך לבקש את היקף https://www.googleapis.com/auth/firebase.remoteconfig
.
שינוי התבנית של הגדרת התצורה מרחוק
כשעובדים עם תבניות Remote Config, חשוב לזכור שהן מגיעות עם גרסאות, ולכל גרסה יש תוקף מוגבל מרגע היצירה שלה ועד לרגע שבו מחליפים אותה בעדכון: 90 ימים, עם מגבלה כוללת של 300 גרסאות מאוחסנות. מידע נוסף זמין במאמר תבניות וניהול גרסאות.
קבלת תבנית ההגדרות האישיות הנוכחית של הגדרת התצורה מרחוק
אפשר להשתמש בממשקי ה-API של ה-Backend כדי לקבל את הגרסה הפעילה הנוכחית של תבנית Remote Config בפורמט JSON.
פרמטרים וערכי פרמטרים שנוצרו במיוחד כווריאציות בניסוי A/B Testing לא נכללים בתבניות שמיוצאות.
משתמשים בפקודות הבאות:
cURL
curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -o filename
הפקודה הזו מוציאה את מטען ה-JSON לקובץ אחד, ואת הכותרות (כולל ה-Etag) לקובץ נפרד.
בקשת HTTP גולמית
Host: firebaseremoteconfig.googleapis.com GET /v1/projects/my-project-id/remoteConfig HTTP/1.1 Authorization: Bearer token Accept-Encoding: gzip
קריאת ה-API הזו מחזירה את ה-JSON הבא, יחד עם כותרת נפרדת שכוללת ETag שמשמש לבקשה הבאה.
אימות תבנית ההגדרה מרחוק
אפשר גם לאמת את העדכונים לפני שמפרסמים אותם.
כדי לאמת את העדכונים בתבנית, מוסיפים לבקשת הפרסום את פרמטר כתובת ה-URL ?validate_only=true
.
בתשובה, קוד סטטוס 200 ו-etag מעודכן עם הסיומת -0
מציינים שהעדכון אומת בהצלחה. תגובה שאינה 200 מציינת שנתוני ה-JSON מכילים שגיאות שצריך לתקן לפני הפרסום.
עדכון תבנית של הגדרת תצורה מרחוק
אחרי שמאחזרים תבנית ומשנים את תוכן ה-JSON עם העדכונים הרצויים, אפשר לפרסם אותה. פרסום תבנית כמו שמתואר בקטע הזה מחליף את כל תבנית ההגדרות הקיימת בקובץ המעודכן, ולתבנית הפעילה החדשה מוקצה מספר גרסה שגדול באחד ממספר הגרסה של התבנית שהיא החליפה.
במידת הצורך, אפשר להשתמש ב-API ל-REST כדי לחזור לגרסה הקודמת. כדי לצמצם את הסיכון לשגיאות בעדכון, אפשר לאמת לפני הפרסום.
Remote Config התאמות אישיות ותנאים נכללים בתבניות שהורדתם, ולכן חשוב לשים לב למגבלות הבאות כשמנסים לפרסם בפרויקט אחר:
אי אפשר לייבא התאמות אישיות מפרויקט לפרויקט.
לדוגמה, אם הפעלתם התאמות אישיות בפרויקט והורדתם תבנית ועריכתם אותה, תוכלו לפרסם אותה באותו פרויקט, אבל לא תוכלו לפרסם אותה בפרויקט אחר אלא אם תמחקו את ההתאמות האישיות מהתבנית.
אפשר לייבא תנאים מפרויקט לפרויקט, אבל חשוב לזכור שערכים מותנים ספציפיים (כמו מזהי אפליקציות או קהלים) צריכים להיות קיימים בפרויקט היעד לפני הפרסום.
לדוגמה, אם יש לכם פרמטר Remote Config שמשתמש בתנאי שמציין ערך פלטפורמה של
iOS
, אפשר לפרסם את התבנית בפרויקט אחר, כי ערכי הפלטפורמה זהים לכל הפרויקטים. עם זאת, אם הוא מכיל תנאי שמסתמך על מזהה אפליקציה ספציפי או על קהל משתמשים שלא קיים בפרויקט היעד, האימות ייכשל.אם התבנית שאתם מתכננים לפרסם מכילה תנאים שמסתמכים על Google Analytics, צריך להפעיל את Analytics בפרויקט היעד.
cURL
curl --compressed -H "Content-Type: application/json; UTF8" -H "If-Match: last-returned-etag" -H "Authorization: Bearer token" -X PUT https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -d @filename
בפקודה curl
הזו, אפשר לציין את התוכן באמצעות התו '@', ואחריו שם הקובץ.
בקשת HTTP גולמית
Host: firebaseremoteconfig.googleapis.com PUT /v1/projects/my-project-id/remoteConfig HTTP/1.1 Content-Length: size Content-Type: application/json; UTF8 Authorization: Bearer token If-Match: expected ETag Accept-Encoding: gzip JSON_HERE
מכיוון שזו בקשת כתיבה, הפקודה הזו משנה את ETag ומספקת ETag מעודכן בכותרות התגובה של הפקודה הבאה PUT
.
שינוי התנאים של הגדרת התצורה מרחוק
אפשר לשנות את התנאים ואת הערכים המותנים באופן פרוגרמטי.Remote Config כשמשתמשים ב-REST API, צריך לערוך את התבנית ישירות כדי לשנות תנאים לפני שמפרסמים את התבנית.
{ "conditions": [{ "name": "android_english", "expression": "device.os == 'android' && device.country in ['us', 'uk']", "tagColor": "BLUE" }, { "name": "tenPercent", "expression": "percent <= 10", "tagColor": "BROWN" }], "parameters": { "welcome_message": { "defaultValue": { "value": "Welcome to this sample app" }, "conditionalValues": { "tenPercent": { "value": "Welcome to this new sample app" } }, "description": "The sample app's welcome message" }, "welcome_message_caps": { "defaultValue": { "value": "false" }, "conditionalValues": { "android_english": { "value": "true" } }, "description": "Whether the welcome message should be displayed in all capital letters." } } }
בשינויים שלמעלה מוגדרים קודם קבוצת תנאים, ואז מוגדרים ערכי ברירת מחדל וערכים של פרמטרים מבוססי-תנאים (ערכים מותנים) לכל פרמטר. בנוסף, מתווסף תיאור אופציונלי לכל רכיב. כמו הערות בקוד, התיאורים האלה מיועדים לשימוש המפתחים ולא מוצגים באפליקציה. מסופק גם ETag למטרות בקרת גרסאות.
ממשקי ה-API של ה-Backend מספקים כמה תנאים ואופרטורים להשוואה שאפשר להשתמש בהם כדי לשנות את ההתנהגות והמראה של האפליקציה. כדי לקבל מידע נוסף על תנאים ועל האופרטורים שנתמכים בתנאים האלה, אפשר לעיין בהפניה לביטויים מותנים.Remote Config
קודי שגיאה של HTTP
קוד סטטוס | משמעות |
---|---|
200 | העדכון בוצע בהצלחה |
400 | אירעה שגיאת אימות. לדוגמה, אם בקשה מכילה יותר ממספר המפתחות המותר – 2, 000 – היא תחזיר את השגיאה 400 (בקשה פגומה) עם הודעת השגיאה Param count too large .
בנוסף, קוד הסטטוס של HTTPS יכול להופיע בשני המקרים הבאים:
|
401 | אירעה שגיאת הרשאה (לא סופק אסימון גישה או שלא הוספתם את Firebase Remote Config REST API לפרויקט במסוף המפתחים של Cloud) |
403 | אירעה שגיאת אימות (סופק טוקן גישה שגוי) |
500 | אירעה שגיאה פנימית. אם השגיאה הזו מתרחשת, מגישים כרטיס תמיכה של Firebase |
קוד סטטוס 200 מציין שהתבנית Remote Config (פרמטרים, ערכים ותנאים של הפרויקט) עודכנה ועכשיו היא זמינה לאפליקציות שמשתמשות בפרויקט הזה. קודי סטטוס אחרים מציינים שתבנית Remote Config שהייתה קיימת קודם עדיין בתוקף.
אחרי ששולחים עדכונים לתבנית, עוברים אל Firebase המסוף כדי לוודא שהשינויים מופיעים כמצופה. זה חשוב מאוד כי הסדר של התנאים משפיע על אופן ההערכה שלהם (התנאי הראשון שמוערך כ-true
נכנס לתוקף).
שימוש ב-ETag ועדכונים מאולצים
Remote Config REST API משתמש בתג ישות (ETag) כדי למנוע מרוץ תהליכים ועדכונים חופפים של משאבים. מידע נוסף על תגי ETag זמין במאמר ETag - HTTP.
ב-REST API, Google ממליצה לשמור במטמון את תג ה-ETag שסופק על ידי הפקודה האחרונה של GET
, ולהשתמש בערך הזה של תג ה-ETag בכותרת הבקשה של If-Match
כשמנפיקים פקודות של PUT
. אם הפקודה PUT
מחזירה קוד סטטוס HTTPS 409, צריך להנפיק פקודה חדשה של GET
כדי לקבל תבנית ו-ETag חדשים לשימוש בפקודה הבאה של PUT
.
אפשר לעקוף את ה-ETag ואת ההגנה שהוא מספק על ידי אילוץ עדכון של תבנית Remote Config באופן הבא: If-Match: *
עם זאת, לא מומלץ להשתמש בשיטה הזו כי היא עלולה לגרום לאובדן עדכונים בתבנית Remote Config אם כמה לקוחות מעדכנים את תבנית Remote Config. סוג כזה של קונפליקט יכול להתרחש כשכמה לקוחות משתמשים ב-API, או כשמתרחשים עדכונים סותרים מלקוחות API וממשתמשי מסוף Firebase.
הוראות לניהול גרסאות של תבניות Remote Config זמינות במאמר תבניות וניהול גרסאות ב-Remote Config.