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


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

שלב 1: הוספה והפעלה של ה-SDK של Remote Config

  1. אם עדיין לא עשיתם זאת, מתקינים את Firebase JS SDK ומפעילים את Firebase.

  2. מוסיפים את ה-SDK של Remote Config JS ומפעילים את 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

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, תוכלו להוריד קובץ 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 מסוף

  1. בכרטיסייה Parameters, פותחים את Menu ובוחרים באפשרות Download default values.
  2. כשמופיעה בקשה, מפעילים את .json לדפדפן ולוחצים על הורדת הקובץ.

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

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

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

  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, אפשר ליצור ערכי ברירת מחדל חדשים בצד השרת שמבטלים את הערכים באפליקציה, בהתאם ללוגיקה המותנית הרצויה או לטירגוט המשתמשים. בקטע הזה מוסבר איך יוצרים את הערכים האלה במסוף Firebase.

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

שלב 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)

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

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

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

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

השלבים הבאים

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