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


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

שלב 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: הגדרת מרווח זמן מינימלי לאחזור

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

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

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

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

  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 כדי ליצור את הערכים האלה.

  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)

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

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

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

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

השלבים הבאים

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