Remote Config תבניות הן קבוצות של פרמטרים ותנאים בפורמט JSON שיצרתם עבור פרויקט Firebase. אפשר ליצור תבניות לקוח, שהאפליקציה מאחזרת מהן ערכים, ותבניות שרת, ששרתי לקוחות יכולים לאחזר מהן ערכים.
בקטע הזה נסביר על תבניות לקוח. כדי לקבל מידע על תבניות ספציפיות לשרת, לוחצים על Server templates (תבניות שרת).אפשר לשנות את התבנית ולנהל אותה באמצעות מסוף Firebase, שבו מוצגים התוכן של התבנית בפורמט גרפי בכרטיסיות הכרטיסיות Parameters ו-Conditions.
אפשר גם להשתמש בRemote Config REST API וב-Admin SDK או ב-Firebase CLI כדי לשנות ולנהל את תבנית הלקוח.
דוגמה לקובץ תבנית של שרת:
{
"parameters": {
"preamble_prompt": {
"defaultValue": {
"value": "You are a helpful assistant who knows everything there is to know about Firebase! "
},
"description": "Add this prompt to the user's prompt",
"valueType": "STRING"
},
"model_name": {
"defaultValue": {
"value": "gemini-pro-test"
},
"valueType": "STRING"
},
"generation_config": {
"defaultValue": {
"value": "{\"temperature\": 0.9, \"maxOutputTokens\": 2048, \"topP\": 0.9, \"topK\": 20}"
},
"valueType": "JSON"
},
},
"version": {
"versionNumber": "19",
"isLegacy": true
}
}
אפשר לבצע את משימות ניהול הגרסאות האלה באמצעות מסוף Firebase:
- הצגת רשימה של כל הגרסאות השמורות של התבנית
- אחזור של גרסה ספציפית
- חזרה לגרסה ספציפית של הלקוח
- מחיקת תבניות Remote Config מהדף היסטוריית השינויים
יש מגבלה כוללת של 300 גרסאות מאוחסנות לכל סוג תבנית (300 תבניות לקוח ו-300 תבניות שרת), כולל מספרי גרסאות מאוחסנים של תבניות שנמחקו. אם מפרסמים יותר מ-300 גרסאות של תבנית לכל סוג תבנית במהלך חיי הפרויקט, הגרסאות המוקדמות ביותר נמחקות, כך שיישארו לכל היותר 300 גרסאות מהסוג הזה.
בכל פעם שמעדכנים פרמטרים, Remote Config יוצר תבנית חדשה עם גרסה Remote Config ושומר את התבנית הקודמת כגרסה שאפשר לאחזר או לחזור אליה לפי הצורך. מספרי הגרסאות עולים ברצף מהערך הראשוני שמאוחסן על ידי Remote Config.
כל התבניות כוללות שדה version
כמו שמוצג, שמכיל מטא-נתונים לגבי הגרסה הספציפית הזו.
אפשר למחוק תבניות Remote Config לפי הצורך מהדף היסטוריית השינויים במסוף Remote Config.
ניהול גרסאות של תבניות Remote Config
בקטע הזה מוסבר איך לנהל גרסאות של Remote Configתבנית.
הצגת רשימה של כל הגרסאות השמורות של התבנית Remote Config
אפשר לאחזר רשימה של כל הגרסאות השמורות של תבנית Remote Config. כך עושים את זה:
מסוף Firebase
בכרטיסייה פרמטרים, לוחצים על סמל השעון שמוצג בפינה השמאלית העליונה. ייפתח הדף היסטוריית שינויים שבו מופיעה רשימה של כל הגרסאות השמורות של התבנית בתפריט רשימה בצד שמאל.
הפרטים שמוצגים לכל גרסה מאוחסנת כוללים מידע על מקור השינויים: מהמסוף, מ-REST API, משחזור או משינויים מצטברים משמירה מאולצת של התבנית.
Firebase CLI
firebase remoteconfig:versions:list
אפשר להשתמש באפשרות --limit
כדי להגביל את מספר הגרסאות שמוחזרות.
מעבירים את הערך '0' כדי לאחזר את כל הגרסאות.
Node.js
function listAllVersions() {
admin.remoteConfig().listVersions()
.then((listVersionsResult) => {
console.log("Successfully fetched the list of versions");
listVersionsResult.versions.forEach((version) => {
console.log('version', JSON.stringify(version));
});
})
.catch((error) => {
console.log(error);
});
}
Java
ListVersionsPage page = FirebaseRemoteConfig.getInstance().listVersionsAsync().get(); while (page != null) { for (Version version : page.getValues()) { System.out.println("Version: " + version.getVersionNumber()); } page = page.getNextPage(); } // Iterate through all versions. This will still retrieve versions in batches. page = FirebaseRemoteConfig.getInstance().listVersionsAsync().get(); for (Version version : page.iterateAll()) { System.out.println("Version: " + version.getVersionNumber()); }
REST
curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig:listVersions
רשימת התבניות כוללת מטא-נתונים של כל הגרסאות שנשמרו, כולל זמן העדכון, המשתמש שביצע אותו והאופן שבו הוא בוצע. דוגמה לאלמנט גרסה:
```json
{
"versions": [{
"version_number": "6",
"update_time": "2022-05-12T02:38:54Z",
"update_user": {
"name": "Jane Smith",
"email": "jane@developer.org",
"imageUrl": "https://lh3.googleusercontent.com/a-/..."
},
"description": "One small change on the console",
"origin": "CONSOLE",
"update_type": "INCREMENTAL_UPDATE"
}]
}
```
אחזור של גרסה ספציפית של תבנית Remote Config
אפשר לאחזר כל גרסה ספציפית של תבנית Remote Config שנשמרה. כדי לאחזר גרסה של תבנית שאוחסנה:
מסוף Firebase
כברירת מחדל, בחלונית הפרטים בכרטיסייה היסטוריית שינויים מוצגת התבנית הפעילה הנוכחית. כדי לראות פרטים של גרסה אחרת ברשימה, בוחרים אותה בתפריט השמאלי.
כדי לראות השוואה מפורטת בין הגרסה שנבחרה לבין גרסה אחרת ששמורה, מעבירים את העכבר מעל תפריט ההקשר של גרסה שלא נבחרה ובוחרים באפשרות השוואה עם הגרסה שנבחרה.
Firebase CLI
firebase remoteconfig:get -v VERSION_NUMBER
אפשר גם לכתוב את הפלט בקובץ שצוין באמצעות -o, FILENAME
.
Node.js
מעבירים את getTemplate()
ללא ארגומנטים כדי לאחזר את הגרסה האחרונה של התבנית,
או משתמשים ב-getTemplateAtVersion()
כדי לאחזר גרסה ספציפית.
// Get template version: 6
admin.remoteConfig().getTemplateAtVersion('6')
.then((template) => {
console.log("Successfully fetched the template with ETag: " + template.etag);
})
.catch((error) => {
console.log(error);
});
Java
Template template = FirebaseRemoteConfig.getInstance().getTemplateAtVersionAsync(versionNumber).get(); // See the ETag of the fetched template. System.out.println("Successfully fetched the template with ETag: " + template.getETag());
REST
curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig?version_number=6
הפרמטר ?version_number
של כתובת ה-URL תקף רק לפעולות GET
. אי אפשר להשתמש בו כדי לציין מספרי גרסאות לעדכונים. בקשת get דומה ללא הפרמטר ?version_number
תחזיר את התבנית הפעילה הנוכחית.
חזרה לגרסה ספציפית של תבנית Remote Config שנשמרה
אפשר לחזור לכל גרסה שמורה של התבנית. כדי לבטל שינוי בתבנית:
מסוף Firebase
בגרסאות קודמות של תבניות שאפשר לחזור אליהן, מוצג לחצן אפשרות לחזרה לגרסה הזו בפינה השמאלית העליונה של הדף היסטוריית שינויים. צריך ללחוץ ולאשר רק אם בטוחים שרוצים לחזור לגרסה הזו ולהשתמש בערכים האלה באופן מיידי בכל האפליקציות והמשתמשים.
Firebase CLI
firebase remoteconfig:rollback -v VERSION_NUMBER
Node.js
// Roll back to template version: 6
admin.remoteConfig().rollback('6')
.then((template) => {
console.log("Successfully rolled back to template version 6.");
console.log("New ETag: " + template.etag);
})
.catch((error) => {
console.log('Error trying to rollback:', e);
})
Java
try { Template template = FirebaseRemoteConfig.getInstance().rollbackAsync(versionNumber).get(); System.out.println("Successfully rolled back to template version: " + versionNumber); System.out.println("New ETag: " + template.getETag()); } catch (ExecutionException e) { if (e.getCause() instanceof FirebaseRemoteConfigException) { FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause(); System.out.println("Error trying to rollback template."); System.out.println(rcError.getMessage()); } }
REST
כדי לחזור לתבנית Remote Config מאוחסנת, שולחים בקשת HTTP POST עם השיטה המותאמת אישית :rollback
, ובגוף הבקשה מציינים את הגרסה הספציפית שרוצים להחיל. לדוגמה:
curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -H "Content-Type: application/json" -X POST https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig:rollback -d '{"version_number": 6}'
התשובה מכילה את התוכן של התבנית המאוחסנת שהופעלה, עם המטא-נתונים של הגרסה החדשה שלה.
שימו לב: פעולת החזרה לגרסה קודמת יוצרת למעשה גרסה חדשה עם מספר. לדוגמה, אם מבצעים חזרה מגרסה 10 לגרסה 6, נוצרת למעשה עותק חדש של גרסה 6, ששונה מהגרסה המקורית רק במספר הגרסה שלה, שהוא 11. גרסה 6 המקורית עדיין מאוחסנת, בהנחה שהיא לא הגיעה לתאריך התפוגה שלה, וגרסה 11 הופכת לתבנית הפעילה.
מחיקה של תבנית Remote Config
אפשר למחוק תבניות של Remote Config ממסוף Firebase. כדי למחוק תבנית Remote Config:
1. בדף Remote Config פרמטרים לוחצים על היסטוריית שינויים.עוברים לתבנית שרוצים למחוק, לוחצים על
אפשרויות נוספות ובוחרים באפשרות מחיקה.כשמופיעה בקשה לאישור המחיקה, לוחצים על מחיקה.
הורדה ופרסום של תבניות Remote Config
אפשר להוריד ולפרסם תבניות של Remote Config כדי לשלב אותן במערכות לניהול גרסאות ובמערכות build, להפוך עדכוני הגדרות לאוטומטיים ולשמור על סנכרון בין פרמטרים וערכים בכמה פרויקטים.
אפשר להוריד את תבנית Remote Configממסוף Firebase. אחר כך תוכלו לעדכן את קובץ ה-JSON שייצאתם ולפרסם אותו באותו פרויקט, או לפרסם אותו בפרויקט חדש או קיים.
נניח שיש לכם כמה פרויקטים שמייצגים שלבים שונים במחזור החיים של פיתוח התוכנה, כמו סביבות פיתוח, בדיקה, Staging וייצור. במקרה כזה, תוכלו להעביר תבנית שנבדקה באופן מלא מסביבת הבדיקה לסביבת הייצור. לשם כך, תצטרכו להוריד אותה מפרויקט הבדיקה ולפרסם אותה בפרויקט הייצור.
אפשר גם להשתמש בשיטה הזו כדי להעביר הגדרות מפרויקט אחד לפרויקט אחר, או כדי לאכלס פרויקט חדש בפרמטרים ובערכים מפרויקט קיים.
פרמטרים וערכי פרמטרים שנוצרו במיוחד כווריאציות בניסוי A/B Testing לא נכללים בתבניות שמיוצאות.
כדי לייצא ולייבא תבניות של Remote Config:
- מורידים את תבנית ההגדרות הנוכחית של Remote Config.
- מאמתים את התבנית Remote Config.
- מפרסמים את התבנית של Remote Config.
הורדת התבנית הנוכחית של הגדרת התצורה מרחוק
כדי להוריד את תבנית Remote Config הפעילה בפורמט JSON:
מסוף Firebase
- בכרטיסייה Remote Config Parameters or Conditions (פרמטרים או תנאים), פותחים את התפריט ובוחרים באפשרות Download current config file (הורדת קובץ ההגדרות הנוכחי).
- כשמופיעה בקשה, לוחצים על Download config file, בוחרים את המיקום שבו רוצים לשמור את הקובץ ואז לוחצים על Save.
Firebase CLI
firebase remoteconfig:get -o filename
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());
REST
curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -o filename
הפקודה הזו יוצרת קובץ אחד עם מטען ה-JSON, וקובץ headers
נפרד עם הכותרות (כולל ה-ETag).
אימות תבנית ההגדרה מרחוק
אפשר לאמת את העדכונים בתבנית לפני שמפרסמים אותם באמצעות Firebase Admin SDK או באמצעות API ל-REST. תבניות עוברות אימות גם כשמנסים לפרסם מ-Firebase CLI או מ-Firebase console.במהלך אימות התבנית, המערכת בודקת אם יש שגיאות כמו מפתחות כפולים של פרמטרים ותנאים, שמות תנאים לא תקינים או תנאים שלא קיימים, או תגי ETag בפורמט שגוי. לדוגמה, אם בקשה מכילה יותר ממספר המפתחות המותר – 2, 000 – תוחזר הודעת השגיאה Param count too
large
.
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()); } }
REST
כדי לאמת את העדכונים בתבנית, מוסיפים את הפרמטר של כתובת ה-URL ?validate_only=true
לבקשת הפרסום:
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?validate_only=true -d @filename
אם התבנית אומתה בהצלחה, פקודת ה-curl מחזירה את תבנית ה-JSON ששלחתם, ובקובץ headers
שנשמר יופיע סטטוס HTTP/2 200 ו-ETag מעודכן עם הסיומת -0
. אם התבנית לא אומתה, תקבלו את שגיאת האימות בתגובת ה-JSON, וקובץ headers
יכיל תגובה שאינה 200 (ולא ETag).
פרסום תבנית Remote Config
אחרי שמורידים תבנית, מבצעים את השינויים הנדרשים בתוכן ה-JSON ומאמתים אותו, אפשר לפרסם אותו בפרויקט.
כשמפרסמים תבנית, היא מחליפה את כל תבנית ההגדרות הקיימת בקובץ המעודכן, והגרסה של התבנית עולה באחת. מכיוון שההגדרה כולה מוחלפת, אם מוחקים פרמטר מקובץ ה-JSON ומפרסמים אותו, הפרמטר נמחק מהשרת ולא זמין יותר ללקוחות.
אחרי הפרסום, השינויים בפרמטרים ובערכים זמינים באופן מיידי באפליקציות שלכם ולמשתמשים. במידת הצורך, אפשר לחזור לגרסה קודמת.
כדי לפרסם את התבנית, משתמשים בפקודות הבאות:
מסוף Firebase
- בכרטיסייה Remote Config פרמטרים או תנאים, פותחים את התפריט ובוחרים באפשרות פרסום מקובץ.
- כשמופיעה בקשה לכך, לוחצים על עיון, עוברים אל קובץ Remote Config שרוצים לפרסם ובוחרים אותו, ואז לוחצים על בחירה.
- המערכת תאמת את הקובץ, ואם האימות יצליח, תוכלו ללחוץ על פרסום כדי שההגדרה תהיה זמינה באופן מיידי לאפליקציות ולמשתמשים.
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()); } }
REST
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
הזו, אפשר לציין את התוכן באמצעות התו @ ואחריו שם הקובץ.
Remote Config התאמות אישיות ותנאים נכללים בתבניות שהורדתם, ולכן חשוב לשים לב למגבלות הבאות כשמנסים לפרסם בפרויקט אחר:
אי אפשר לייבא התאמות אישיות מפרויקט לפרויקט.
לדוגמה, אם הפעלתם התאמות אישיות בפרויקט והורדתם תבנית ועריכתם אותה, תוכלו לפרסם אותה באותו פרויקט, אבל לא תוכלו לפרסם אותה בפרויקט אחר אלא אם תמחקו את ההתאמות האישיות מהתבנית.
אפשר לייבא תנאים מפרויקט לפרויקט, אבל חשוב לזכור שערכים מותנים ספציפיים (כמו מזהי אפליקציות או קהלים) צריכים להיות קיימים בפרויקט היעד לפני הפרסום.
לדוגמה, אם יש לכם פרמטר Remote Config שמשתמש בתנאי שמציין ערך פלטפורמה של
iOS
, אפשר לפרסם את התבנית בפרויקט אחר, כי ערכי הפלטפורמה זהים לכל הפרויקטים. עם זאת, אם הוא מכיל תנאי שמסתמך על מזהה אפליקציה ספציפי או על קהל משתמשים שלא קיים בפרויקט היעד, האימות ייכשל.אם התבנית שאתם מתכננים לפרסם מכילה תנאים שמסתמכים על Google Analytics, צריך להפעיל את Analytics בפרויקט היעד.
הורדה של ברירות המחדל של תבנית Remote Config
יכול להיות שהאפליקציה שלכם לא תמיד תהיה מחוברת לאינטרנט, ולכן כדאי להגדיר ערכי ברירת מחדל של האפליקציה בצד הלקוח לכל הפרמטרים של Remote Config. כדאי גם לסנכרן מעת לעת את ערכי ברירת המחדל של לקוח האפליקציה ואת ערכי ברירת המחדל של הפרמטרים ב-Remote Configbackend, כי הם עשויים להשתנות לאורך זמן.
כפי שמתואר בקישורים הספציפיים לפלטפורמה בסוף הקטע הזה, אפשר להגדיר את ברירות המחדל האלה באפליקציה באופן ידני, או לייעל את התהליך הזה על ידי הורדת קבצים שמכילים רק את צמדי המפתח/ערך של כל הפרמטרים וערכי ברירת המחדל שלהם בתבנית הפעילה Remote Config. אחר כך תוכלו לכלול את הקובץ הזה בפרויקט ולהגדיר את האפליקציה כך שתייבא את הערכים האלה.
אפשר להוריד את הקבצים האלה בפורמט XML לאפליקציות ל-Android, בפורמט plist לאפליקציות ל-iOS ובפורמט JSON לאפליקציות אינטרנט.
מומלץ להוריד מדי פעם את Remote Config הגדרות ברירת המחדל לפני כל גרסה חדשה של האפליקציה, כדי לוודא שהאפליקציה וRemote Config העורף האחורי נשארים מסונכרנים.
.כדי להוריד קובץ שמכיל את ברירות המחדל של התבנית:
REST
curl --compressed -D headers -H "Authorization: Bearer token -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=file_format'
משתמשים בערך XML
, PLIST
או JSON
בשדה format
, בהתאם לפורמט הקובץ שרוצים להוריד.
מסוף Firebase
- בכרטיסייה פרמטרים, פותחים את התפריט ובוחרים באפשרות הורדת ערכי ברירת מחדל.
- כשמופיעה הנחיה, לוחצים על לחצן האפשרויות שמתאים לפורמט הקובץ שרוצים להוריד, ואז לוחצים על הורדת הקובץ.
מידע נוסף על ייבוא Remote Config ערכי ברירת מחדל לאפליקציה