אפשר להשתמש ב-Firebase Remote Config כדי להגדיר פרמטרים באפליקציה ולעדכן את הערכים שלהם בענן, וכך לשנות את המראה וההתנהגות של האפליקציה בלי להפיץ עדכון לאפליקציה. במדריך הזה מוסבר איך מתחילים, ומופיע בו קוד לדוגמה. אפשר להעתיק או להוריד את כל הקוד הזה מהמאגר firebase/quickstart-js ב-GitHub.
שלב 1: הוספה של Remote Config SDK ואיפוס שלו
אם עדיין לא עשיתם זאת, מתקינים את Firebase JS SDK ומפעילים את Firebase.
מוסיפים את ה-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 מסוף
- בכרטיסייה Parameters, פותחים את Menu ובוחרים באפשרות Download default values.
- כשמוצגת בקשה, מפעילים את האפשרות .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.
- פותחים את הפרויקט במסוף Firebase.
- בתפריט, בוחרים באפשרות Remote Config כדי להציג את לוח הבקרה Remote Config.
- מגדירים פרמטרים עם אותם שמות כמו הפרמטרים שהוגדרו באפליקציה. לכל פרמטר אפשר להגדיר ערך ברירת מחדל (שיחליף בסופו של דבר את ערך ברירת המחדל באפליקציה), ואפשר גם להגדיר ערכים מותנים. למידע נוסף, ראו פרמטרים ותנאים של Remote Config.
שלב 6: אחזור והפעלה של ערכים
- כדי לאחזר ערכי פרמטרים מהקצה העורפי של Remote Config, צריך להפעיל את השיטה
fetchConfig()
. כל הערכים שאתם מגדירים בקצה העורפי מאוחזרים במטמון באובייקט Remote Config. - כדי שערכי הפרמטרים שאוחזרו יהיו זמינים לאפליקציה, צריך להפעיל את השיטה
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 שעות, ללא קשר למספר הקריאות לאחזור שבוצעו בפועל. באופן ספציפי, מרווח האחזור המינימלי נקבע לפי הסדר הבא:
- הפרמטר ב-
Settings.minimumFetchIntervalMillis
. - ערך ברירת המחדל של 12 שעות.
השלבים הבאים
אם עדיין לא עשיתם זאת, כדאי לעיין בRemote Config תרחישים לדוגמה ולקרוא את המסמכים בנושא מושגים מרכזיים ואסטרטגיות מתקדמות, כולל: