תבניות תצורה מרוחקות וניהול גרסאות

תבנית התצורה המרוחקת היא קבוצת הפרמטרים והתנאים בפורמט JSON בצד השרת שיצרת עבור פרויקט Firebase שלך. אתה יכול לשנות ולנהל את התבנית באמצעות מסוף Firebase, שמציג את תוכן התבנית בפורמט גרפי בכרטיסיות פרמטרים ותנאים . אתה יכול גם להשתמש ב- Remote Config Backend APIs או ב- Firebase CLI כדי לשנות ולנהל את התצורה שלך.

הנה דוגמה לקובץ תבנית:

  {
    "conditions": [
      {
        "name": "ios",
        "expression": "device.os == 'ios'"
      }
    ],
    "parameters": {
      "welcome_message": {
        "defaultValue": {
          "value": "Welcome to this sample app"
        },
        "conditionalValues": {
          "ios": {
            "value": "Welcome to this sample iOS app"
          }
        }
      },
      "welcome_message_caps": {
        "defaultValue": {
          "value": "false"
        }
      },
      "header_text": {
        "defaultValue": {
          "useInAppDefault": true
        }
      }
    },
    "version": {
      "versionNumber": "28",
      "updateTime": "2020-05-14T18:39:38.994Z",
      "updateUser": {
        "email": "user@google.com"
      },
      "updateOrigin": "CONSOLE",
      "updateType": "INCREMENTAL_UPDATE"
    }
  }

בכל פעם שאתה מעדכן פרמטרים, Remote Config יוצר תבנית חדשה עם גרסה של Remote Config ומאחסן את התבנית הקודמת כגרסה שתוכל לאחזר או לחזור אליה לפי הצורך. מספרי הגרסה מוגדלים ברצף מהערך ההתחלתי המאוחסן על ידי Config Remote. כל התבניות כוללות שדה version כפי שמוצג, המכיל מטא נתונים לגבי אותה גרסה ספציפית.

עם מסוף Firebase, ה-CLI של Firebase או ממשקי API האחוריים של תצורה מרוחקת, אתה יכול לבצע את משימות ניהול הגרסאות הבאות:

  • רשום את כל גרסאות התבניות המאוחסנות
  • אחזר גרסה ספציפית
  • חזור לגרסה ספציפית

בעת ניהול תבניות Config מרחוק, זכור את סף התפוגה: 90 יום ממועד היצירה, או מגבלה כוללת של 300 גרסאות מאוחסנות. אם ברצונך לאחסן או לחזור לתבנית מחוץ למגבלות אלו, שמור ואחסן אותה באופן ידני. תבנית התצורה המרוחקת הפעילה הנוכחית שנמצאת בשימוש על ידי האפליקציה שלך אינה פג. עם זאת, אם הוא פעיל יותר מ-90 יום מאז היצירה והוחלף בעדכון, לא ניתן לאחזר אותו שוב (בשל פג תוקפו).

נהל גרסאות של תבנית תצורה מרחוק

סעיף זה מתאר כיצד לנהל גרסאות של תבנית התצורה המרוחקת שלך. לפרטים נוספים כיצד ליצור, לשנות ולשמור תבניות באופן פרוגרמטי, ראה שינוי תצורה מרוחקת באופן פרוגרמטי .

רשום את כל הגרסאות המאוחסנות של תבנית התצורה המרוחקת

אתה יכול לאחזר רשימה של כל הגרסאות המאוחסנות של תבנית התצורה המרוחקת. לדוגמה:

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);
    });
}

ג'אווה

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());
}

מנוחה

curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>:listVersions

קונסולת Firebase

בלשונית פרמטרים , בחר בסמל "שעון" המוצג בצד ימין למעלה. זה פותח את דף היסטוריית השינויים המפרט את כל גרסאות התבניות המאוחסנות בתפריט רשימה בצד ימין.

הפרטים המוצגים עבור כל גרסה מאוחסנת כוללים מידע על האם השינויים מקורם במסוף, עם ה-REST API, מהחזרה לאחור, או אם הם היו שינויים מצטברים משמירה כפויה של התבנית.

Firebase CLI

firebase remoteconfig:versions:list

השתמש באפשרות --limit כדי להגביל את מספר הגרסאות המוחזרות. העבר את '0' כדי להביא את כל הגרסאות.

רשימת התבניות כוללת מטא נתונים עבור כל הגרסאות המאוחסנות, כולל זמן העדכון, המשתמש שביצע אותו והאם הוא נעשה דרך המסוף או REST API. הנה דוגמה לרכיב גרסה:

{
  "versions": [{
    "version_number": "6",
    "update_time": "2018-05-12T02:38:54Z",
    "update_user": {
      "email": "jane@developer.org",
    },
    "description": "One small change on the console",
    "origin": "CONSOLE",
    "update_type": "INCREMENTAL_UPDATE"
  }]

אחזר גרסה ספציפית של תבנית התצורה המרוחקת

אתה יכול לאחזר כל גרסה מאוחסנת ספציפית של תבנית התצורה המרוחקת. לדוגמה:

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);
  });

ג'אווה

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());

מנוחה

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</pre>

פרמטר כתובת האתר ?version_number תקף רק עבור פעולות GET ; אינך יכול להשתמש בו כדי לציין מספרי גרסה עבור עדכונים. בקשת קבל דומה ללא הפרמטר ?version_number תחזיר את התבנית הפעילה הנוכחית.

קונסולת Firebase

כברירת מחדל, חלונית הפרטים בכרטיסייה היסטוריית שינויים מציגה את התבנית הפעילה הנוכחית. כדי להציג פרטים עבור גרסה אחרת ברשימה, בחר אותה מהתפריט הימני.

אתה יכול להציג הבדל מפורט של הגרסה הנוכחית שנבחרה ושל כל גרסה מאוחסנת אחרת על ידי ריחוף מעל תפריט ההקשר של כל גרסה שאינה נבחרת ובחירה בהשוואה לגרסה שנבחרה.

Firebase CLI

firebase remoteconfig:get -v VERSION_NUMBER

לחלופין, אתה יכול לכתוב את הפלט לקובץ שצוין באמצעות -o, FILENAME .

חזור לגרסה מאוחסנת ספציפית של תבנית התצורה המרוחקת

אתה יכול לחזור לאחור לכל גרסה מאוחסנת של התבנית. לדוגמה:

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);
  })

ג'אווה

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());
  }
}

מנוחה

כדי לחזור אחורה לתבנית תצורה מרחוק מאוחסנת, הנפק HTTP POST בשיטה המותאמת אישית :rollback ובגוף הבקשה, הגרסה הספציפית שיש להחיל. לדוגמה:

curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -X POST https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig:rollback -d '{"version_number": 6}'</pre>

התגובה מכילה את התוכן של התבנית המאוחסנת הפעילה כעת, עם המטא נתונים של הגרסה החדשה שלה.

קונסולת Firebase

עבור גרסאות תבנית קודמות הכשירות להחזרה לאחור, לחצן אפשרות לחזור לגרסה זו מוצג בפינה השמאלית העליונה של דף היסטוריית השינויים . לחץ ואשר זאת רק אם אתה בטוח שברצונך לחזור לגרסה זו ולהשתמש בערכים אלה באופן מיידי עבור כל האפליקציות והמשתמשים.

Firebase CLI

firebase remoteconfig:rollback -v VERSION_NUMBER

שימו לב שפעולת החזרה זו יוצרת למעשה גרסה ממוספרת חדשה. לדוגמה, חזרה מגרסה 10 לגרסה 6 יוצרת למעשה עותק חדש של גרסה 6, השונה מהמקור רק בכך שמספר הגרסה שלה הוא 11. הגרסה המקורית 6 עדיין מאוחסנת, בהנחה שהיא לא הגיעה לתפוגה, וכן גרסה 11 הופכת לתבנית הפעילה.