Remote Config תבניות הן קבוצות של תבניות בפורמט JSON והתנאים שיצרתם לפרויקט Firebase. שלך אפשר ליצור תבניות לקוח, שממנה האפליקציה מאחזרת ערכים, שרת, שמהן לקוחות השרת יכולים לאחזר ערכים.
הקטע הזה עוסק בתבניות של לקוחות. למידע נוסף על ספציפיות לשרת תבניות, לוחצים תבניות לשרתים.אפשר לשנות ולנהל את התבנית באמצעות מסוף Firebase, שבו תוכן התבנית מוצג בפורמט גרפי בכרטיסיותהכרטיסיות Parameters ו-Conditions.
אפשר גם להשתמש Remote Config API ל-REST ו-Admin SDK או ה-CLI של Firebase כדי לשנות ולנהל תבנית הלקוח.
דוגמה לקובץ תבנית של שרת:
{
"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 מהדף Change history
המגבלה הכוללת היא 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
בכרטיסייה פרמטרים, מסמנים את התיבה 'שעון' הסמל שמוצג בפינה השמאלית העליונה. הדף היסטוריית שינויים נפתח, ומופיעה בו רשימה של כל גרסאות התבנית השמורות בתפריט רשימה בצד שמאל.
הפרטים המוצגים עבור כל גרסה שמורה כוללים מידע על מקור השינויים הוא במסוף, ב-API ל-REST, מחזרה למצב קודם, או אם הם היו שינויים מצטברים כתוצאה משמירה כפויה של התבנית.
CLI של Firebase
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. כדי לאחזר תבנית שמורה version:
מסוף 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
הפרמטר של כתובת ה-URL ?version_number
תקף רק לפעולות GET
. אי אפשר להשתמש בו כדי לציין מספרי גרסאות של עדכונים. תוצאה דומה
בקשה בלי ?version_number
יאחזר את התבנית הפעילה הנוכחית.
חזרה לגרסה ספציפית ששמורה של התבנית Remote Config
אפשר לחזור לגרסאות שמורות של התבנית. כדי להחזיר תבנית למצב קודם:
מסוף Firebase
לגבי גרסאות קודמות של תבניות שעומדות בדרישות החזרה למצב הקודם, לחצן האפשרות לחזרה לגרסה הזו יוצג בפינה הימנית העליונה של היסטוריית שינויים הדף הזה. לוחצים ומאשרים את הפעולה הזו רק אם אתם בטוחים שאתם רוצים לחזור לגרסה הזו ולהשתמש בערכים האלה מיד בכל האפליקציות והמשתמשים.
CLI של Firebase
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 וייצור בסביבות שונות. במקרה כזה, אפשר לקדם תבנית שנבדקה במלואה את סביבת ה-Staging לסביבת הייצור באמצעות הורדה שלה פרויקט Staging ופרסום שלו בפרויקט הייצור.
אפשר להשתמש בשיטה הזו גם כדי להעביר הגדרות מפרויקט אחד אל אחר, או לאכלס פרויקט חדש עם פרמטרים וערכים של הפרויקט הקיים.
פרמטרים וערכים של פרמטרים שנוצרו במיוחד כוריאנטים בניסוי A/B Testing לא נכללים בתבניות שיוצאו.
כדי לייצא ולייבא Remote Config תבניות:
- מורידים את התבנית הנוכחית של Remote Config להגדרות.
- מאמתים את התבנית Remote Config.
- מפרסמים את התבנית Remote Config.
מורידים את התבנית הנוכחית של הגדרת תצורה מרחוק
צריך להשתמש בקוד הבא כדי להוריד את תבנית Remote Config הפעילה ב: פורמט JSON:
Firebase מסוף
- בכרטיסייה Remote Config Parameters or Conditions, פותחים את Menu ובוחרים באפשרות Download current config file.
- כשמוצגת בקשה, לוחצים על Download config file, בוחרים את המיקום שבו רוצים לשמור את הקובץ ולוחצים על Save.
CLI של Firebase
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
הפקודה הזו מפיקה את המטען הייעודי (payload) של JSON לקובץ אחד, ואת הכותרות.
(כולל ה-ETag) לקובץ headers
נפרד.
אימות התבנית של הגדרת התצורה מרחוק
אפשר לבדוק את עדכוני התבניות לפני הפרסום שלהם באמצעות Firebase Admin SDK או API ל-REST. התבניות מאומתות גם כשמנסים כדי לפרסם מה-CLI של Firebase או ממסוף Firebase.תהליך האימות של התבנית בודק אם יש שגיאות כמו מפתחות כפולים של
פרמטרים ותנאים, שמות לא תקינים של תנאים או תנאים שלא קיימים, או
ETags בפורמט שגוי. לדוגמה, בקשה שמכילה יותר ממספר המפתחות המורשה – 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
כדי לאמת עדכוני תבנית, מצרפים את הפרמטר ?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 Config, כי עשוי להשתנות עם הזמן.
כפי שמתואר בקישורים הספציפיים לפלטפורמה, בסוף הקטע הזה, להגדיר באופן ידני את ברירות המחדל האלה באפליקציה שלך או לייעל את התהליך הזה להוריד קבצים שמכילים רק את צמדי מפתח/ערך לכל הפרמטרים. ואת ערכי ברירת המחדל שלהם בתבנית 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 אל של האפליקציה, אפשר לעיין במאמר: