אתם יכולים להשתמש ב-Firebase Remote Config כדי להגדיר פרמטרים באפליקציה ולעדכן את הערכים שלהם בענן. כך תוכלו לשנות את המראה וההתנהגות של האפליקציה בלי להפיץ עדכון לאפליקציה.
ספריית Remote Config משמשת לאחסון ערכי ברירת מחדל של פרמטרים באפליקציה, לאחזור ערכים מעודכנים של פרמטרים מהקצה העורפי של Remote Config ולשליטה במועד שבו הערכים שאוחזרו יהיו זמינים לאפליקציה. למידע נוסף, אפשר לעיין במאמר בנושא אסטרטגיות טעינה של הגדרת התצורה מרחוק.
במדריך הזה מפורטים השלבים שצריך לבצע כדי להתחיל, ומוצג קוד לדוגמה שאפשר לשכפל או להוריד ממאגר GitHub firebase/quickstart-unity.
שלב 1: מוסיפים את Remote Config לאפליקציה
כדי להשתמש ב-Remote Config, צריך:
רושמים את הפרויקט ב-Unity ומגדירים אותו לשימוש ב-Firebase.
אם בפרויקט Unity שלכם כבר נעשה שימוש ב-Firebase, הוא כבר רשום ומותאם ל-Firebase.
אם אין לכם פרויקט Unity, אתם יכולים להוריד אפליקציה לדוגמה.
מוסיפים את Firebase Unity SDK (במיוחד את
FirebaseRemoteConfig.unitypackage
) לפרויקט Unity.
שימו לב: הוספת Firebase לפרויקט ב-Unity כוללת משימות במסוף Firebase ובפרויקט הפתוח ב-Unity (לדוגמה, הורדה של קובצי תצורה של Firebase מהמסוף והעברה שלהם לפרויקט ב-Unity).
שלב 2: הגדרת ערכי ברירת מחדל של פרמטרים באפליקציה
אפשר להגדיר ערכי ברירת מחדל של פרמטרים בתוך האפליקציה באובייקט Remote Config, כדי שהאפליקציה תפעל כמצופה לפני שהיא מתחברת לחלק האחורי של Remote Config, וכדי שערכי ברירת מחדל יהיו זמינים אם לא הוגדרו ערכים כאלה בחלק האחורי.
כדי לעשות את זה, יוצרים מילון מחרוזות ומאכלסים אותו בצמדי מפתח/ערך שמייצגים את ערכי ברירת המחדל שרוצים להוסיף. אם כבר הגדרתם ערכי פרמטרים של Remote Config backend, תוכלו להוריד קובץ שמכיל את צמדי המפתח/ערך האלה ולהשתמש בו כדי ליצור את מילון המחרוזות. מידע נוסף זמין במאמר בנושא הורדת ברירות המחדל של תבנית Remote Config.
(מאפיינים שהם לא מחרוזת יומרו לסוג המאפיין כשמפעילים את הפונקציה 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. אם הגדרתם ערכים ב-Remote Config backend, אחזרתם אותם ואז הפעלתם אותם, הערכים האלה יהיו זמינים באפליקציה. אחרת, תקבלו את ערכי הפרמטרים באפליקציה שהוגדרו באמצעות SetDefaultsAsync()
.
כדי לקבל את הערכים האלה, משתמשים ב-GetValue()
ומספקים את מפתח הפרמטר כארגומנט. הפונקציה מחזירה את הערך
ConfigValue
,
שכולל מאפיינים להמרת הערך לסוגי בסיס שונים.
שלב 4: הגדרת ערכי הפרמטרים
- במסוף Firebase, פותחים את הפרויקט.
- בתפריט, בוחרים באפשרות Remote Config כדי להציג את לוח הבקרה של Remote Config.
- מגדירים פרמטרים עם אותם שמות כמו הפרמטרים שהגדרתם באפליקציה. לכל פרמטר אפשר להגדיר ערך ברירת מחדל (שבסופו של דבר יבטל את ערך ברירת המחדל באפליקציה) וערכים מותנים. מידע נוסף זמין במאמר בנושא פרמטרים ותנאים של Remote Config.
שלב 5: מאחזרים ומפעילים ערכים (לפי הצורך)
כדי לאחזר ערכי פרמטרים מהקצה העורפי Remote Config, קוראים לשיטה FetchAsync()
. כל הערכים שאתם מגדירים בבק-אנד מאוחזרים ונשמרים במטמון באובייקט Remote Config.
// 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
כדי לקבוע אם הפעולה הסתיימה גם בהצלחה. אם כן,
ערכי הפרמטרים Remote Config מופעלים באמצעות 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. אותות בזמן אמת Remote Config למכשירים מחוברים כשיש עדכונים זמינים, והשינויים נשלפים אוטומטית אחרי שמפרסמים גרסה חדשה של Remote Config.
עדכונים בזמן אמת נתמכים על ידי Firebase Unity SDK בגרסה 11.0.0 ואילך לפלטפורמות Android ו-Apple.
- באפליקציה, מוסיפים
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; }
בפעם הבאה שתפרסמו גרסה חדשה של Remote Config, מכשירים שבהם האפליקציה שלכם פועלת ומחכים לשינויים יפעילו את פונקציית הטיפול בסיום.
השלבים הבאים
אם עוד לא עשיתם את זה, כדאי לעיין בRemote Config תרחישי השימוש ובמסמכי התיעוד בנושא מושגים מרכזיים ואסטרטגיות מתקדמות, כולל: