תבניות הגדרה באמצעות SDK לאדמינים, API בארכיטקטורת REST ו-Firebase CLI. page_type: guide
במסמך הזה מוסבר איך לקרוא ולשנות באופן פרוגרמטי את קבוצת הפרמטרים והתנאים בפורמט JSON שנקראת תבנית Remote Config. כך אפשר לבצע שינויים בתבנית בקצה העורפי, ואפליקציית הלקוח יכולה לאחזר אותם באמצעות ספריית הלקוח.
באמצעות Remote Config API בארכיטקטורת REST, Admin SDKs או Firebase CLI שמתוארים במדריך הזה, אתם יכולים לעקוף את ניהול התבנית במסוף Firebase ולשלב ישירות שינויים ב-Remote Config בתהליכים שלכם. לדוגמה, באמצעות ממשקי API של Remote Config backend, אפשר:
- תזמון עדכונים של Remote Config אפשר להשתמש בהפעלות של API בשילוב עם משימת cron כדי לשנות את הערכים של Remote Config בלוח זמנים קבוע.
- ייבוא של ערכי הגדרות בקבוצות כדי לעבור ביעילות מהמערכת הקניינית שלכם אל Firebase Remote Config.
- שימוש ב-Remote Config עם Cloud Functions for Firebase, שינוי ערכים באפליקציה על סמך אירועים שמתרחשים בצד השרת. לדוגמה, אפשר להשתמש ב-Remote Config כדי לקדם תכונה חדשה באפליקציה, ואז להפסיק את הקידום באופן אוטומטי אחרי שמזהים שמספיק אנשים השתמשו בתכונה החדשה.

בקטעים הבאים במדריך הזה מוסבר על הפעולות שאפשר לבצע באמצעות ממשקי ה-API של ה-Backend Remote Config.
שינוי Remote Config באמצעות Firebase Admin SDK
Admin SDK הוא קבוצה של ספריות שרת שמאפשרות לכם ליצור אינטראקציה עם Firebase מסביבות עם הרשאות. בנוסף לעדכונים של Remote Config, Admin SDK מאפשר ליצור ולאמת טוקנים של Firebase Auth, ולקרוא ולכתוב מ-Realtime Database. מידע נוסף על הדרישות המוקדמות וההגדרה של Admin SDK זמין במאמר הוספת Firebase Admin SDK לשרת.
כדי לעיין בקוד לדוגמה שמבצע את המשימות האלה באמצעות Admin SDK, אפשר לעיין באחת מהאפליקציות הבאות למתחילים:
- Firebase Remote Config Java Quickstart
- Firebase Remote Config Node.js Quickstart
- Firebase Remote Config Python Quickstart
בתהליך טיפוסי של Remote Config, יכול להיות שתקבלו את התבנית הנוכחית, תשנו חלק מהפרמטרים או מקבוצות הפרמטרים והתנאים, תאמתו את התבנית ואז תפרסמו אותה. לפני ששולחים את קריאות ה-API האלה, צריך לאשר בקשות מ-SDK.
אתחול ה-SDK והרשאה לבקשות API
כשמפעילים את Admin SDK בלי פרמטרים, ערכת ה-SDK משתמשת בApplication Default Credentials וקוראת את האפשרויות ממשתנה הסביבה 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 נוכחית
כשעובדים עם 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
אפשר לשנות ולהוסיף 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 התנאים
אפשר לשנות ולהוסיף 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 של Remote Configהקצה העורפי מספקים כמה תנאים ואופרטורים להשוואה שאפשר להשתמש בהם כדי לשנות את ההתנהגות והמראה של האפליקציה. כדי לקבל מידע נוסף על תנאים ועל האופרטורים שנתמכים בתנאים האלה, אפשר לעיין בהפניה לביטויים מותנים.
אימות התבנית 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.
פרסום תבנית Remote Config
אחרי שמאחזרים תבנית ומשנים אותה בהתאם לעדכונים, אפשר לפרסם אותה. פרסום תבנית כמו שמתואר בקטע הזה מחליף את כל תבנית ההגדרות הקיימת בקובץ המעודכן, ולתבנית הפעילה החדשה מוקצה מספר גרסה שגדול ב-1 ממספר הגרסה של התבנית שהיא החליפה.
במידת הצורך, אפשר להשתמש ב-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()); } }
שינוי Remote Config באמצעות API בארכיטקטורת REST
בקטע הזה מתוארות היכולות העיקריות של Remote Config REST API בכתובת https://firebaseremoteconfig.googleapis.com. למידע מפורט, ראו מאמרי העזרה של ה-API.
קבלת אסימון גישה לאימות והרשאה של בקשות API
פרויקטים ב-Firebase תומכים בחשבונות שירות של Google, שאפשר להשתמש בהם כדי לקרוא לממשקי API של שרת Firebase משרת האפליקציה או מסביבה מהימנה. אם אתם מפתחים קוד באופן מקומי או פורסים את האפליקציה שלכם בארגון, אתם יכולים להשתמש בפרטי הכניסה שהתקבלו באמצעות חשבון השירות הזה כדי לאשר בקשות לשרת.
אפשר לראות את כל חשבונות השירות של פרויקט Firebase בכרטיסייה
כדי לאמת חשבון שירות ולאשר לו גישה לשירותי Firebase, צריך ליצור קובץ מפתח פרטי בפורמט JSON.
כדי ליצור קובץ מפתח פרטי לחשבון השירות:
במסוף Firebase, עוברים אל
הגדרות > הכרטיסייה חשבונות שירות.לוחצים על 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
כשעובדים עם תבניות Remote Config, חשוב לזכור שהן מנוהלות לפי גרסאות, ולכל גרסה יש תוקף מוגבל מרגע היצירה ועד לרגע שבו מחליפים אותה בעדכון: 90 ימים, עם מגבלה כוללת של 300 גרסאות מאוחסנות. מידע נוסף זמין במאמר תבניות וניהול גרסאות.
קבלת התבנית הנוכחית של Remote Config
אפשר להשתמש בממשקי ה-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 שמשמש לבקשה הבאה.
אימות התבנית Remote Config
אפשר גם לאמת את העדכונים לפני שמפרסמים אותם.
כדי לאמת את העדכונים בתבנית, מוסיפים לבקשת הפרסום את פרמטר כתובת ה-URL ?validate_only=true.
אם בתשובה מופיע קוד סטטוס 200 ו-etag מעודכן עם הסיומת -0, סימן שהעדכון אומת בהצלחה. תגובה שאינה 200 מציינת שנתוני ה-JSON מכילים שגיאות שצריך לתקן לפני הפרסום.
עדכון התבנית Remote Config
אחרי שמאחזרים תבנית ועורכים את תוכן ה-JSON עם העדכונים שלכם, אפשר לפרסם אותה. פרסום תבנית כמו שמתואר בקטע הזה מחליף את כל תבנית ההגדרות הקיימת בקובץ המעודכן, ולתבנית הפעילה החדשה מוקצה מספר גרסה שגדול ב-1 ממספר הגרסה של התבנית שהיא החליפה.
במידת הצורך, אפשר להשתמש ב-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 התנאים
אפשר לשנות את התנאיםRemote Config ואת הערכים המותנים באופן פרוגרמטי. כשמשתמשים ב-API בארכיטקטורת REST, צריך לערוך את התבנית ישירות כדי לשנות את התנאים לפני שמפרסמים את התבנית.
{
"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 של Remote Configהקצה העורפי מספקים כמה תנאים ואופרטורים להשוואה שאפשר להשתמש בהם כדי לשנות את ההתנהגות והמראה של האפליקציה. כדי לקבל מידע נוסף על תנאים ועל האופרטורים שנתמכים בתנאים האלה, אפשר לעיין בהפניה לביטויים מותנים.
קודי שגיאה של HTTP
| קוד סטטוס | משמעות |
|---|---|
| 200 | העדכון בוצע בהצלחה |
| 400 | אירעה שגיאת אימות. לדוגמה, אם בקשה מכילה יותר ממספר המפתחות המותר – 2, 000 – היא תחזיר את השגיאה 400 (בקשה שגויה) עם הודעת השגיאה Param count too large.
בנוסף, קוד סטטוס HTTPS הזה יכול להופיע בשני המקרים הבאים:
|
| 401 | אירעה שגיאת הרשאה (לא סופק אסימון גישה או שלא הוספתם את Remote Config REST API של Firebase לפרויקט במסוף Cloud למפתחים) |
| 403 | אירעה שגיאת אימות (סופק טוקן גישה שגוי) |
| 500 | אירעה שגיאה פנימית. אם השגיאה הזו מתרחשת, צריך להגיש כרטיס תמיכה של Firebase. |
קוד סטטוס 200 מציין שהתבנית Remote Config (פרמטרים, ערכים ותנאים של הפרויקט) עודכנה ועכשיו היא זמינה לאפליקציות שמשתמשות בפרויקט הזה. קודי סטטוס אחרים מציינים שתבנית Remote Config שהייתה קיימת קודם עדיין בתוקף.
אחרי ששולחים עדכונים לתבנית, עוברים אל Firebase מסוף כדי לוודא שהשינויים מופיעים כמצופה. זה קריטי כי הסדר של התנאים משפיע על האופן שבו הם מוערכים (התנאי הראשון שמוערך כ-true הוא זה שמופעל).
שימוש ב-ETag ועדכונים מאולצים
API בארכיטקטורת REST Remote Config משתמש בתג ישות (ETag) כדי למנוע מרוץ תהליכים ועדכונים חופפים של משאבים. מידע נוסף על ETags זמין במאמר ETag - HTTP.
ב-API בארכיטקטורת REST, Google ממליצה לשמור במטמון את ה-ETag שסופק על ידי הפקודה GET האחרונה, ולהשתמש בערך ה-ETag הזה בכותרת הבקשה If-Match כשמנפיקים פקודות PUT. אם הפקודה PUT מחזירה קוד סטטוס 409 של HTTPS, צריך להנפיק פקודה חדשה של GET כדי לקבל תבנית ו-ETag חדשים לשימוש בפקודה הבאה של PUT.
אפשר לעקוף את ה-ETag ואת ההגנה שהוא מספק על ידי כפיית עדכון של תבנית Remote Config באופן הבא:
If-Match: *. עם זאת, לא מומלץ להשתמש בגישה הזו כי היא עלולה לגרום לאובדן של עדכונים בתבנית Remote Config אם כמה לקוחות מעדכנים את התבנית Remote Config. סוג כזה של קונפליקט יכול להתרחש כשכמה לקוחות משתמשים ב-API, או כשמתרחשים עדכונים סותרים מלקוחות API וממשתמשי מסוף Firebase.
הנחיות לניהול גרסאות של Remote Configתבניות זמינות במאמר Remote Configתבניות וניהול גרסאות.
שינוי Remote Config באמצעות Firebase CLI
ה-CLI של Firebase מאפשר לכם לבדוק, לנהל ולבטל תבניות של Remote Config, וגם להציג רשימה של ניסויים והשקות של Remote Config, לבדוק אותם ולמחוק אותם ישירות משורת הפקודה.
דרישות מוקדמות והגדרה
נכנסים אל Firebase:
firebase loginמגדירים את הפרויקט הפעיל או מציינים את
--project PROJECT_IDבכל פקודה:firebase use PROJECT_ID
מוודאים שלחשבון או לחשבון השירות יש את הרשאות ה-IAM הנדרשות:
- כדי לבדוק, להוריד או לבטל תבניות של Remote Config ולנהל השקות, צריך את תפקיד האדמין (
roles/cloudconfig.admin) של Firebase Remote Config (או את ההרשאותcloudconfig.configs.get,cloudconfig.configs.update,cloudconfig.rollouts.get,cloudconfig.rollouts.listו-cloudconfig.rollouts.archive). כדי לבצע פעולות של צפייה בלבד, מספיק תפקיד הצפייה (roles/cloudconfig.viewer) של Firebase Remote Config (cloudconfig.configs.get,cloudconfig.rollouts.getו-cloudconfig.rollouts.list). - כדי לנהל ניסויים ב-A/B Testing, צריך להיות לכם תפקיד אדמין ב-Firebase A/B Testing (
roles/firebaseabt.admin) (או הרשאותfirebaseabt.experiments.get,firebaseabt.experiments.listו-firebaseabt.experiments.delete). כדי לבצע פעולות של צפייה בלבד, מספיק להיות בעלי תפקיד צפייה ב-Firebase A/B Testing (roles/firebaseabt.viewer).
סיכום פקודות ה-CLI
| פקודה | תיאור |
|---|---|
firebase remoteconfig:versions:list |
רשימה של גרסאות תבניות של Remote Config מהזמן האחרון. |
firebase remoteconfig:get |
מקבל תבנית Remote Config (אפשר גם לכתוב לקובץ). |
firebase remoteconfig:rollback |
מחזירה את תבנית Remote Config לגרסה קודמת. |
firebase remoteconfig:experiments:list |
מציג רשימה של כל הניסויים Remote Config בפרויקט. |
firebase remoteconfig:experiments:get |
קבלת פרטים של ניסוי ספציפי Remote Config. |
firebase remoteconfig:experiments:delete |
מחיקת ניסוי ספציפי Remote Config. |
firebase remoteconfig:rollouts:list |
מציג רשימה של כל ההשקות של Remote Config בפרויקט. |
firebase remoteconfig:rollouts:get |
מקבלים פרטים על השקה ספציפית של Remote Config. |
firebase remoteconfig:rollouts:delete |
מחיקה של Remote Configהשקה ספציפית. |
שינוי תבניות וגרסאות של Remote Config
אפשר להשתמש בפקודות הבאות כדי לבדוק, להוריד ולבטל שינויים בתבניות של Remote Config ובהיסטוריית הגרסאות שלהן:
הצגת רשימה של גרסאות התבניות
כברירת מחדל, מוצגות 10 הגרסאות האחרונות של תבנית Remote Config, כולל מספר הגרסה, זמן העדכון, מקור העדכון, סוג העדכון וupdateUser.
firebase remoteconfig:versions:list [--limit NUMBER_OF_VERSIONS]-
--limit NUMBER_OF_VERSIONS: המספר המקסימלי של הגרסאות שיוחזרו. מציינים0כדי לחזור לכל הגרסאות הקיימות (עד למגבלה של 300 גרסאות שמורות).
דוגמאות:
כדי להציג את 10 הגרסאות האחרונות:
firebase remoteconfig:versions:listכדי להציג רשימה של כל הגרסאות הזמינות:
firebase remoteconfig:versions:list --limit 0מציגים רשימה של 5 הגרסאות האחרונות:
firebase remoteconfig:versions:list --limit 5
איך מקבלים תבנית
מקבל את התבנית Remote Config ומפיק את קבוצות הפרמטרים, הפרמטרים, שמות התנאים והגרסה. כברירת מחדל, הפקודה מאחזרת את הגרסה הפעילה העדכנית ומדפיסה סיכום מעוצב במסוף.
firebase remoteconfig:get [-v, --version_number VERSION_NUMBER] [-o, --output FILENAME]-
-v, --version_number VERSION_NUMBER: מספר הגרסה של התבנית לאחזור. אם לא מציינים גרסה, ברירת המחדל היא הגרסה העדכנית. -
-o, --output FILENAME: כותב את המטען הייעודי (payload) של תבנית ה-JSON ישירות לנתיב שצוין במקום להדפיס ל-stdout.
דוגמאות:
הצגת התבנית הפעילה הנוכחית בטרמינל:
firebase remoteconfig:getהורדת התבנית הפעילה הנוכחית לקובץ JSON:
firebase remoteconfig:get -o remote_config_template.jsonכדי להוריד גרסה היסטורית ספציפית (לדוגמה, גרסה 12) לקובץ:
firebase remoteconfig:get -v 12 -o remote_config_v12.json
החזרה לתבנית קודמת
מבצע חזרה לגרסה קודמת של תבנית Remote Config פעילה. הפעולה הזו יוצרת גרסה פעילה חדשה שהתוכן שלה זהה לתוכן של גרסת היעד.
firebase remoteconfig:rollback [-v, --version_number VERSION_NUMBER] [--force]-
-v, --version_number VERSION_NUMBER: מספר גרסת היעד שאליה רוצים לחזור. אם לא מציינים גרסה, ברירת המחדל היא הגרסה הקודמת (הגרסה הנוכחית פחות 1). -
--force: מבצע את החזרה לגרסה הקודמת באופן מיידי בלי לבקש אישור אינטראקטיבי (Y/N). שימושי לצינורות עיבוד נתונים של CI/CD ולסקריפטים אוטומטיים.
דוגמאות:
חזרה לגרסה הקודמת עם אישור אינטראקטיבי:
firebase remoteconfig:rollbackחזרה לגרסה 8 בלי הנחיה:
firebase remoteconfig:rollback -v 8 --force
שינוי ניסויים ב-A/B Testing
אפשר להשתמש בפקודות הבאות כדי להציג, לבדוק ולמחוק ניסויים של Remote Config A/B Testing ישירות באמצעות ה-CLI:
הצגת רשימת הניסויים
רשימה של כל הניסויים של Remote Config בפרויקט, עם אפשרות סינון וחלוקה לדפים.
firebase remoteconfig:experiments:list [--filter EXPRESSION] [--pageSize NUMBER] [--pageToken TOKEN]-
--filter EXPRESSION: ביטוי מסנן להחלה על רשימת הניסויים. -
--pageSize NUMBER: מספר הניסויים שיוחזרו בכל דף (ברירת המחדל היא 10). -
--pageToken TOKEN: אסימון להיסט של הדף כשמאחזרים תוצאות עם מספור עמודים.
דוגמה:
firebase remoteconfig:experiments:listקבלת פרטי הניסוי
הפעולה הזו מחזירה את כל הפרטים של ניסוי Remote Config שצוין.
firebase remoteconfig:experiments:get EXPERIMENT_IDדוגמה:
firebase remoteconfig:experiments:get exp_promo_discount_2026מחיקת ניסוי
מחיקת הניסוי Remote Config שצוין.
firebase remoteconfig:experiments:delete EXPERIMENT_IDדוגמה:
firebase remoteconfig:experiments:delete exp_promo_discount_2026שינוי השקות של Remote Config
אפשר להשתמש בפקודות הבאות כדי להציג, לבדוק ולמחוק Remote Config השקות ישירות באמצעות ה-CLI:
הצגת רשימת ההשקות
רשימה של כל ההשקות של Remote Config בפרויקט, עם אפשרות סינון וחלוקה לדפים.
firebase remoteconfig:rollouts:list [--filter EXPRESSION] [--pageSize NUMBER] [--pageToken TOKEN]-
--filter EXPRESSION: ביטוי מסנן להחלה על רשימת ההפצה. -
--pageSize NUMBER: מספר ההשקות להחזרה בכל דף (ברירת המחדל היא 10). -
--pageToken TOKEN: אסימון להיסט של הדף כשמאחזרים תוצאות עם מספור עמודים.
דוגמה:
firebase remoteconfig:rollouts:listקבלת פרטים על ההשקה
הפעולה מחזירה את כל הפרטים של Remote Configהשקה ספציפית.
firebase remoteconfig:rollouts:get ROLLOUT_IDדוגמה:
firebase remoteconfig:rollouts:get rollout_new_checkout_flowמחיקת השקה
מחיקת הפריסה שצוינה של Remote Config.
firebase remoteconfig:rollouts:delete ROLLOUT_IDדוגמה:
firebase remoteconfig:rollouts:delete rollout_new_checkout_flowמידע כללי נוסף על פקודות CLI של Firebase זמין במדריך העזר ל-CLI של Firebase.