תחילת העבודה עם הגדרת תצורה מרחוק ב-Firebase


אתם יכולים להשתמש ב-Firebase Remote Config כדי להגדיר פרמטרים באפליקציה ולעדכן את הערכים שלהם בענן. כך תוכלו לשנות את המראה וההתנהגות של האפליקציה בלי להפיץ עדכון לאפליקציה. במדריך הזה מפורטים השלבים שצריך לבצע כדי להתחיל, ומוצג קוד לדוגמה שאפשר לשכפל או להוריד ממאגר GitHub‏ firebase/quickstart-js.

שלב 1: מוסיפים את Remote Config SDK ומפעילים אותו

  1. אם עדיין לא עשיתם זאת, תצטרכו להתקין את Firebase JS SDK ולהפעיל את Firebase.

  2. מוסיפים את Remote Config JS SDK ומאתחלים את Remote Config:

Web

import { initializeApp } from "firebase/app";
import { getRemoteConfig } from "firebase/remote-config";

// TODO: Replace the following with your app's Firebase project configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
  // ...
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);


// Initialize Remote Config and get a reference to the service
const remoteConfig = getRemoteConfig(app);

Web

import firebase from "firebase/compat/app";
import "firebase/compat/remote-config";

// TODO: Replace the following with your app's Firebase project configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
  // ...
};

// Initialize Firebase
firebase.initializeApp(firebaseConfig);


// Initialize Remote Config and get a reference to the service
const remoteConfig = firebase.remoteConfig();

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

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

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

Web

// The default and recommended production fetch interval for Remote Config is 12 hours
remoteConfig.settings.minimumFetchIntervalMillis = 3600000;

Web

remoteConfig.settings.minimumFetchIntervalMillis = 3600000;

שלב 3: הגדרת ערכי ברירת מחדל של פרמטרים באפליקציה

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

Web

remoteConfig.defaultConfig = {
  "welcome_message": "Welcome"
};

Web

remoteConfig.defaultConfig = {
  "welcome_message": "Welcome"
};

אם כבר הגדרתם Remote Config ערכי פרמטרים של ה-Backend, אתם יכולים להוריד קובץ JSON שנוצר וכולל את כל ערכי ברירת המחדל, ולכלול אותו בחבילת האפליקציה:

REST

curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=JSON -o remote_config_defaults.json

Firebase console

  1. בכרטיסייה פרמטרים, פותחים את התפריט ובוחרים באפשרות הורדת ערכי ברירת מחדל.
  2. כשמופיעה בקשה, מפעילים את האפשרות .json for web ואז לוחצים על הורדת הקובץ.

בדוגמאות הבאות מוצגות שתי דרכים שונות לייבוא ולהגדרה של ערכי ברירת מחדל באפליקציה. בדוגמה הראשונה נעשה שימוש ב-fetch, שיבצע בקשת HTTP לקובץ ברירת המחדל שכלול בחבילת האפליקציה:

  const rcDefaultsFile = await fetch('remote_config_defaults.json');
  const rcDefaultsJson = await rcDefaultsFile.json();
  remoteConfig.defaultConfig = rcDefaultsJson;
  

בדוגמה הבאה נעשה שימוש ב-require, שמקמפל את הערכים באפליקציה בזמן הבנייה:

  let rcDefaults = require('./remote_config_defaults.json');
  remoteConfig.defaultConfig = rcDefaults;

שלב 4: מקבלים ערכי פרמטר לשימוש באפליקציה

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

Web

import { getValue } from "firebase/remote-config";

const val = getValue(remoteConfig, "welcome_messsage");

Web

const val = remoteConfig.getValue("welcome_messsage");

שלב 5: הגדרת ערכי הפרמטרים

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

  1. במסוף Firebase, פותחים את הפרויקט.
  2. בתפריט, בוחרים באפשרות Remote Config כדי להציג את לוח הבקרה Remote Config.
  3. מגדירים פרמטרים עם אותם שמות כמו הפרמטרים שהגדרתם באפליקציה. לכל פרמטר אפשר להגדיר ערך ברירת מחדל (שבסופו של דבר יבטל את ערך ברירת המחדל באפליקציה), ואפשר גם להגדיר ערכים מותנים. מידע נוסף זמין במאמר בנושא Remote Config פרמטרים ותנאים.
  4. אם משתמשים בתנאים מותאמים אישית לאותות, צריך להגדיר את המאפיינים ואת הערכים שלהם. בדוגמה הבאה אפשר לראות איך מגדירים תנאי של אות בהתאמה אישית.

      let customSignals = {
         "city": "Tokyo",
         "preferred_event_category": "sports"
      }
    
      setCustomSignals(config, customSignals);

שלב 6: מאחזרים ומפעילים את הערכים

  1. כדי לאחזר ערכי פרמטרים מהקצה העורפי Remote Config, קוראים לשיטה fetchConfig(). כל הערכים שאתם מגדירים בבק-אנד מאוחזרים ונשמרים במטמון באובייקט Remote Config.
  2. כדי להפוך את ערכי הפרמטרים שאוחזרו לזמינים באפליקציה, קוראים לשיטה activate().

אם רוצים לאחזר ולהפעיל ערכים בקריאה אחת, משתמשים ב-fetchAndActivate(), כמו בדוגמה הזו:

Web

import { fetchAndActivate } from "firebase/remote-config";

fetchAndActivate(remoteConfig)
  .then(() => {
    // ...
  })
  .catch((err) => {
    // ...
  });

Web

remoteConfig.fetchAndActivate()
  .then(() => {
    // ...
  })
  .catch((err) => {
    // ...
  });

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

ויסות נתונים (throttle)

אם אפליקציה מבצעת יותר מדי אחזורים בפרק זמן קצר, יכול להיות שיוגבלו קריאות אחזור. במקרים כאלה, ה-SDK מחזיר שגיאה FETCH_THROTTLE. מומלץ לזהות את השגיאה הזו ולנסות שוב במצב של השהיה מעריכית לפני ניסיון חוזר (exponential backoff), עם מרווחי זמן ארוכים יותר בין בקשות אחזור עוקבות.

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

מרווח האחזור שמוגדר כברירת מחדל ומומלץ לשימוש ב-Remote Config הוא 12 שעות. המשמעות היא שההגדרות לא יאוחזרו מהקצה העורפי יותר מפעם אחת בחלון של 12 שעות, לא משנה כמה קריאות אחזור מתבצעות בפועל. ספציפית, מרווח הזמן המינימלי בין הורדות נקבע לפי הסדר הבא:

  1. הפרמטר ב-Settings.minimumFetchIntervalMillis.
  2. ערך ברירת המחדל הוא 12 שעות.

השלבים הבאים

אם עוד לא עשיתם את זה, כדאי לעיין בRemote Config תרחישי השימוש ובמסמכי התיעוד בנושא מושגים מרכזיים ואסטרטגיות מתקדמות, כולל: