שינוי הגדרת התצורה מרחוק באופן פרוגרמטי

במסמך הזה מוסבר איך לקרוא ולשנות באופן פרוגרמטי את קבוצת הפרמטרים והתנאים בפורמט 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 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.

כדי ליצור קובץ מפתח פרטי לחשבון השירות:

  1. במסוף Firebase, פותחים את Settings > Service Accounts.

  2. לוחצים על Generate New Private Key (יצירת מפתח פרטי חדש) ואז על Generate Key (יצירת מפתח) כדי לאשר.

  3. מאחסנים את קובץ ה-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 יכול להופיע בשני המקרים הבאים:
  • אירעה שגיאת חוסר התאמה בגרסה כי קבוצת הערכים והתנאים עודכנה מאז הפעם האחרונה שאחזרת ערך ETag. כדי לפתור את הבעיה, צריך להשתמש בפקודה GET כדי לקבל תבנית חדשה וערך ETag חדש, לעדכן את התבנית ואז לשלוח אותה באמצעות התבנית וערך ה-ETag החדש.
  • בוצעה פקודה של PUT (בקשה לעדכון תבנית Remote Config) בלי לציין כותרת If-Match.
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.