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