با Firebase Remote Config شروع کنید


شما می‌توانید از Firebase Remote Config برای تعریف پارامترها در برنامه خود و به‌روزرسانی مقادیر آنها در فضای ابری استفاده کنید، که به شما امکان می‌دهد ظاهر و رفتار برنامه خود را بدون توزیع به‌روزرسانی برنامه تغییر دهید.

کتابخانه Remote Config برای ذخیره مقادیر پیش‌فرض پارامترها در برنامه، دریافت مقادیر به‌روزرسانی‌شده پارامترها از بک‌اند Remote Config و کنترل زمان در دسترس قرار گرفتن مقادیر دریافتی در برنامه شما استفاده می‌شود. برای کسب اطلاعات بیشتر، به «استراتژی‌های بارگذاری Remote Config» مراجعه کنید.

این راهنما شما را در مراحل شروع به کار راهنمایی می‌کند و چند نمونه کد ارائه می‌دهد که همه آنها برای کپی کردن یا دانلود از مخزن گیت‌هاب firebase/quickstart-unity در دسترس هستند.

مرحله ۱: Remote Config به برنامه خود اضافه کنید

قبل از اینکه بتوانید از Remote Config استفاده کنید، باید:

  • پروژه یونیتی خود را ثبت کنید و آن را برای استفاده از فایربیس پیکربندی کنید.

    • اگر پروژه یونیتی شما از قبل از فایربیس استفاده می‌کند، پس از قبل برای فایربیس ثبت و پیکربندی شده است.

    • اگر پروژه یونیتی ندارید، می‌توانید یک برنامه نمونه را دانلود کنید.

  • کیت توسعه نرم‌افزاری (SDK) مربوط به Firebase Unity (به‌طور خاص، FirebaseRemoteConfig.unitypackage ) را به پروژه Unity خود اضافه کنید.

توجه داشته باشید که اضافه کردن Firebase به پروژه Unity شما شامل وظایفی هم در کنسول Firebase و هم در پروژه Unity باز شما می‌شود (برای مثال، شما فایل‌های پیکربندی Firebase را از کنسول دانلود می‌کنید، سپس آنها را به پروژه Unity خود منتقل می‌کنید).

مرحله ۲: تنظیم مقادیر پیش‌فرض پارامترها در برنامه

شما می‌توانید مقادیر پیش‌فرض پارامترهای درون‌برنامه‌ای را در شیء Remote Config تنظیم کنید، به طوری که برنامه شما قبل از اتصال به Remote Config backend طبق انتظار رفتار کند، و اگر هیچ مقداری در backend تنظیم نشده باشد، مقادیر پیش‌فرض در دسترس باشند.

برای انجام این کار، یک دیکشنری رشته‌ای ایجاد کنید و آن را با جفت‌های کلید/مقدار که نشان‌دهنده پیش‌فرض‌هایی هستند که می‌خواهید اضافه کنید، پر کنید. اگر قبلاً مقادیر پارامترهای backend Remote Config را پیکربندی کرده‌اید، می‌توانید فایلی را که حاوی این جفت‌های کلید/مقدار است دانلود کنید و از آن برای ساخت دیکشنری رشته‌ای خود استفاده کنید. برای اطلاعات بیشتر، به Download Remote Config template defaults مراجعه کنید.

(ویژگی‌های غیر رشته‌ای هنگام فراخوانی 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 => {

مرحله ۳: دریافت مقادیر پارامترها برای استفاده در برنامه

اکنون می‌توانید مقادیر پارامترها را از شیء Remote Config دریافت کنید. اگر مقادیر را در backend Remote Config تنظیم کرده باشید، آنها را دریافت کرده و سپس فعال کرده باشید، آن مقادیر در برنامه شما در دسترس هستند. در غیر این صورت، مقادیر پارامترهای درون برنامه‌ای را که با استفاده از SetDefaultsAsync() پیکربندی شده‌اند، دریافت می‌کنید.

برای دریافت این مقادیر، از GetValue() استفاده کنید و پارامتر key را به عنوان آرگومان ارائه دهید. این یک ConfigValue برمی‌گرداند که دارای ویژگی‌هایی برای تبدیل مقدار به انواع پایه مختلف است.

مرحله ۴: تنظیم مقادیر پارامترها

  1. در کنسول Firebase ، پروژه خود را باز کنید.
  2. برای مشاهده داشبورد Remote Config ، از منو Remote Config را انتخاب کنید.
  3. پارامترهایی با نام‌های مشابه پارامترهایی که در برنامه خود تعریف کرده‌اید، تعریف کنید. برای هر پارامتر، می‌توانید یک مقدار پیش‌فرض (که در نهایت مقدار پیش‌فرض درون برنامه را لغو می‌کند) و مقادیر شرطی تنظیم کنید. برای کسب اطلاعات بیشتر، به پارامترها و شرایط Remote Config مراجعه کنید.

مرحله ۵: دریافت و فعال‌سازی مقادیر (در صورت نیاز)

برای دریافت مقادیر پارامترها از Remote Config backend، متد FetchAsync() را فراخوانی کنید. هر مقداری که در backend تنظیم کنید، در شیء 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 متدی است که امضای آن با پارامترهای یکی از overloadهای 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() فراخوانی نشود، در دسترس قرار نمی‌گیرند. این به شما امکان می‌دهد اطمینان حاصل کنید که مقادیر جدید در اواسط محاسبه یا در مواقع دیگر که ممکن است باعث مشکلات یا رفتار عجیب شوند، اعمال نمی‌شوند.

مرحله ۶: به روزرسانی‌ها را به صورت زنده گوش دهید

پس از دریافت مقادیر پارامترها، می‌توانید Remote Config به صورت بلادرنگ برای دریافت به‌روزرسانی‌ها از بک‌اند Remote Config استفاده کنید. Remote Config به صورت بلادرنگ، هنگامی که به‌روزرسانی‌ها در دسترس باشند، به دستگاه‌های متصل سیگنال می‌دهد و پس از انتشار نسخه جدید Remote Config تغییرات را به طور خودکار دریافت می‌کند.

به‌روزرسانی‌های بلادرنگ توسط Firebase Unity SDK نسخه ۱۱.۰.۰+ و بالاتر برای پلتفرم‌های اندروید و اپل پشتیبانی می‌شوند.

  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;
}

دفعه‌ی بعدی که نسخه‌ی جدیدی از Remote Config خود را منتشر می‌کنید، دستگاه‌هایی که برنامه‌ی شما را اجرا می‌کنند و منتظر تغییرات هستند، completion handler را فراخوانی می‌کنند.

مراحل بعدی

If you haven't already, explore the Remote Config use cases , and take a look at some of the key concepts and advanced strategies documentation, including: