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