התחל עם Firebase Remote Config


אתה יכול להשתמש ב-Firebase Remote Config כדי להגדיר פרמטרים באפליקציה שלך ולעדכן את הערכים שלהם בענן, מה שמאפשר לך לשנות את המראה וההתנהגות של האפליקציה שלך מבלי להפיץ עדכון לאפליקציה.

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

מדריך זה מנחה אותך בשלבים לתחילת העבודה ומספק קוד לדוגמה, שכל זה זמין לשכפול או הורדה ממאגר GitHub של Firebase/Quickstart-unity .

שלב 1: הוסף Config מרחוק לאפליקציה שלך

לפני שתוכל להשתמש בתצורה מרחוק , עליך:

  • רשום את פרויקט Unity שלך והגדר אותו לשימוש ב-Firebase.

    • אם פרויקט Unity שלך כבר משתמש ב-Firebase, אז הוא כבר רשום ומוגדר עבור Firebase.

    • אם אין לך פרויקט של Unity, תוכל להוריד אפליקציה לדוגמה .

  • הוסף את Firebase Unity SDK (באופן ספציפי, FirebaseRemoteConfig.unitypackage ) לפרויקט Unity שלך.

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

שלב 2: הגדר ערכי ברירת מחדל של פרמטרים בתוך האפליקציה

אתה יכול להגדיר ערכי ברירת מחדל של פרמטרים בתוך האפליקציה באובייקט Config Remote, כך שהאפליקציה שלך תתנהג כמתוכנן לפני שהיא מתחברת ל-Remote Config Backend, וכך ערכי ברירת מחדל זמינים אם אף אחד מהם לא מוגדר ב-backend.

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

(מאפיינים שאינם מחרוזים יומרו לסוג המאפיין כאשר ייקרא SetDefaultsAsync() ).

System.Collections.Generic.Dictionary<string, object> defaults =
  new System.Collections.Generic.Dictionary<string, object>();

// These are the values that are used if we haven't fetched data from the
// server
// yet, or if we ask for values that the server doesn't have:
defaults.Add("config_test_string", "default local string");
defaults.Add("config_test_int", 1);
defaults.Add("config_test_float", 1.0);
defaults.Add("config_test_bool", false);

Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.SetDefaultsAsync(defaults)
  .ContinueWithOnMainThread(task => {

שלב 3: קבל ערכי פרמטרים לשימוש באפליקציה שלך

כעת אתה יכול לקבל ערכי פרמטרים מאובייקט התצורה המרוחקת. אם אתה מגדיר ערכים ב-Remote Config Backend, אחזר אותם ואז הפעלת אותם, הערכים האלה זמינים לאפליקציה שלך. אחרת, אתה מקבל את ערכי הפרמטרים בתוך האפליקציה מוגדרים באמצעות SetDefaultsAsync() .

כדי לקבל ערכים אלה, השתמש GetValue() , מתן מפתח הפרמטר כארגומנט. זה מחזיר ConfigValue , שיש לו מאפיינים להמרת הערך לסוגי בסיס שונים.

שלב 4: הגדר ערכי פרמטרים

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

שלב 5: אחזר והפעל ערכים (לפי הצורך)

כדי להביא ערכי פרמטרים מ-Remote Config Backend, קרא למתודה FetchAsync() . כל הערכים שתגדיר בקצה העורפי נשלפים ונשמרים באובייקט התצורה המרוחקת.

// Start a fetch request.
// FetchAsync only fetches new data if the current data is older than the provided
// timespan.  Otherwise it assumes the data is "recent enough", and does nothing.
// By default the timespan is 12 hours, and for production apps, this is a good
// number. For this example though, it's set to a timespan of zero, so that
// changes in the console will always show up immediately.
public Task FetchDataAsync() {
  DebugLog("Fetching data...");
  System.Threading.Tasks.Task fetchTask =
  Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.FetchAsync(
      TimeSpan.Zero);
  return fetchTask.ContinueWithOnMainThread(FetchComplete);
}

בקוד שלמעלה, FetchComplete היא שיטה שהחתימה שלה תואמת לפרמטרים של אחד מהעומסים של ContinueWithOnMainThread() .

בקוד לדוגמה למטה, שיטת FetchComplete מועברת במשימה הקודמת ( fetchTask ), המאפשרת FetchComplete לקבוע אם היא הסתיימה. הקוד משתמש Info.LastFetchStatus כדי לקבוע אם גם הגימור היה מוצלח. אם כן, ערכי פרמטר Config Remote מופעלים באמצעות ActivateAsync() .

private void FetchComplete(Task fetchTask) {
  if (!fetchTask.IsCompleted) {
    Debug.LogError("Retrieval hasn't finished.");
    return;
  }

  var remoteConfig = FirebaseRemoteConfig.DefaultInstance;
  var info = remoteConfig.Info;
  if(info.LastFetchStatus != LastFetchStatus.Success) {
    Debug.LogError($"{nameof(FetchComplete)} was unsuccessful\n{nameof(info.LastFetchStatus)}: {info.LastFetchStatus}");
    return;
  }

  // Fetch successful. Parameter values must be activated to use.
  remoteConfig.ActivateAsync()
    .ContinueWithOnMainThread(
      task => {
        Debug.Log($"Remote data loaded and ready for use. Last fetch time {info.FetchTime}.");
    });
}

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

שלב 6: האזן לעדכונים בזמן אמת

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

עדכונים בזמן אמת נתמכים על ידי Firebase Unity SDK v11.0.0+ ואילך עבור פלטפורמות אנדרואיד ואפל.

  1. באפליקציה שלך, הוסף OnConfigUpdateListener כדי להתחיל להאזין לעדכונים ולאחזר אוטומטית כל ערכי פרמטרים חדשים או מעודכנים. לאחר מכן, צור ConfigUpdateListenerEventHandler לעיבוד אירועי עדכון. הדוגמה הבאה מאזינה לעדכונים ומשתמשת בערכים החדשים שהושאו כדי להציג הודעת פתיחה מעודכנת.
// Invoke the listener.
void Start()
{
  Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.OnConfigUpdateListener
    += ConfigUpdateListenerEventHandler;
}

// Handle real-time Remote Config events.
void ConfigUpdateListenerEventHandler(
   object sender, Firebase.RemoteConfig.ConfigUpdateEventArgs args) {
  if (args.Error != Firebase.RemoteConfig.RemoteConfigError.None) {
    Debug.Log(String.Format("Error occurred while listening: {0}", args.Error));
    return;
  }

  Debug.Log("Updated keys: " + string.Join(", ", args.UpdatedKeys));
  // Activate all fetched values and then display a welcome message.
  remoteConfig.ActivateAsync().ContinueWithOnMainThread(
    task => {
        DisplayWelcomeMessage();
    });
}

// Stop the listener.
void OnDestroy() {
    Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.OnConfigUpdateListener
      -= ConfigUpdateListenerEventHandler;
}

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

הצעדים הבאים

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