بدء استخدام ميزة "الإعداد عن بُعد في Firebase"


يمكنك استخدام ميزة "الإعداد عن بُعد في Firebase" لتحديد المعلَمات في تطبيقك وتحديث قيمها في السحابة، مما يسمح لك بتعديل مظهر تطبيقك بدون توزيع تحديث للتطبيق.

تُستخدم مكتبة "الإعداد عن بُعد" لتخزين قيم المَعلمات التلقائية داخل التطبيق. وجلب قيم المعلمات المحدثة من الواجهة الخلفية "للإعداد عن بُعد"، ثم عند توفُّر القيم التي تم استرجاعها لتطبيقك للمزيد من المعلومات راجِع استراتيجيات التحميل في ميزة "الإعداد عن بُعد".

يرشدك هذا الدليل الخطوات التي يجب اتّباعها للبدء وتوفر بعض التعليمات البرمجية النموذجية، للاستنساخ أو التنزيل من firebase/quickstart-unity في GitHub.

الخطوة 1: إضافة ميزة "الإعداد عن بُعد" إلى تطبيقك

قبل أن تتمكّن من استخدام الإعداد عن بُعد، عليك إجراء ما يلي:

  • سجِّل مشروعك على Unity واضبطه لاستخدام Firebase.

    • إذا كان مشروعك في Unity يستخدم Firebase حاليًا، يكون تسجيلها وإعدادها لمنصة Firebase

    • وإذا لم يكن لديك مشروع Unity، يمكنك تنزيل نموذج تطبيق.

  • أضِف حزمة تطوير البرامج (SDK) Unity من Firebase (على وجه التحديد FirebaseRemoteConfig.unitypackage) إلى لمشروع Unity الخاص بك.

تجدر الإشارة إلى أنّ إضافة منصة Firebase إلى مشروع Unity تتضمّن مهامًا في كلّ من وحدة تحكُّم Firebase وفي مشروع Unity المفتوح (على سبيل المثال، يمكنك تنزيل ملفات تهيئة Firebase من وحدة التحكم، ثم نقل إلى مشروع Unity).

الخطوة 2: ضبط قيم المَعلمات التلقائية داخل التطبيق

يمكنك ضبط قيم المَعلمات التلقائية داخل التطبيق في صفحة "الإعداد عن بُعد". لكي يعمل التطبيق على النحو المنشود قبل الاتصال الخلفية "للإعداد عن بُعد"، وبالتالي تتوفر القيم التلقائية إذا لم تكن التي تم تعيينها في الخلفية.

للقيام بذلك، قم بإنشاء قاموس سلسلة، وتعبئته بأزواج المفتاح/القيمة وتمثل الإعدادات الافتراضية التي تريد إضافتها. إذا قمت بالفعل بتهيئة باستخدام قيم معلمات الخلفية للتهيئة عن بُعد، يمكنك تنزيل ملف تحتوي على أزواج المفتاح/القيمة هذه وتستخدمها لإنشاء قاموس السلسلة. لمزيد من المعلومات، يُرجى مراجعة تنزيل الإعدادات التلقائية لنموذج "الإعداد عن بُعد"

(ستكون الخصائص التي ليست سلسلة يتم تحويلها إلى نوع الموقع عند استدعاء الدالة 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: الحصول على قيم المَعلمات لاستخدامها في تطبيقك

يمكنك الآن الحصول على قيم المَعلمات من كائن "الإعداد عن بُعد". في حال ضبط في الخلفية "الإعداد عن بُعد" وجلبها، ثم تنشيطها، تلك القيم متاحة لتطبيقك. بخلاف ذلك، ستظهر لك المَعلمة داخل التطبيق. القيم المهيأة باستخدام SetDefaultsAsync().

للحصول على هذه القيم، استخدِم GetValue(). وتوفير مفتاح المعلمة كوسيطة. ينتج عن ذلك ConfigValue, التي تضم خصائص لتحويل القيمة إلى أنواع أساسية مختلفة.

الخطوة 4: ضبط قيم المَعلمات

  1. افتح مشروعك في وحدة تحكُّم Firebase.
  2. اختَر الإعداد عن بُعد من القائمة لعرض لوحة البيانات.
  3. حدِّد المَعلمات التي تحمل أسماء المَعلمات نفسها التي حدّدتها في تطبيقك. لكل معلمة، يمكنك تعيين قيمة افتراضية (والتي القيمة التلقائية داخل التطبيق) والقيم الشرطية في النهاية. لمزيد من المعلومات، يُرجى مراجعة شروط "الإعداد عن بُعد" وشروطه:

الخطوة 5: استرجاع القيم وتفعيلها (حسب الحاجة)

لاسترجاع قيم المعلمات من الواجهة الخلفية للإعداد عن بُعد، اتصل 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 ثم تحديد ما إذا كانت النهاية ناجحة أيضًا. إذا كان الأمر كذلك، يتم بعد ذلك تفعيل قيم مَعلمات "الإعداد عن بُعد" باستخدام 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: الاستماع إلى أحدث المعلومات في الوقت الفعلي

بعد استرجاع قيم المَعلمات، يمكنك استخدام ميزة "الإعداد عن بُعد في الوقت الفعلي" لتنفيذ ما يلي: والاستماع إلى التحديثات من الخلفية لميزة "الإعداد عن بُعد". في الوقت الفعلي تُرسِل ميزة "الإعداد عن بُعد" إشارات إلى الأجهزة المتصلة عند توفُّر تحديثات. يجلب التغييرات تلقائيًا بعد نشر عملية إعداد عن بُعد جديدة .

تتوفّر التحديثات في الوقت الفعلي من خلال الإصدار 11.0.0 أو الإصدارات الأحدث من حزمة تطوير البرامج (SDK) لمنصة Firebase Unity أنظمة Android وApple الأساسية.

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

في المرة القادمة التي تنشر فيها إصدارًا جديدًا من ميزة "الإعداد عن بُعد"، فإن الأجهزة التي تشغيل تطبيقك والاستماع إلى التغييرات سيطلب معالِج الإكمال.

الخطوات التالية

يمكنك استكشاف ميزة "الإعداد عن بُعد" إذا لم يسبق لك إجراء ذلك. حالات الاستخدام، وإلقاء نظرة على بعض وثائق المفاهيم الرئيسية والاستراتيجيات المتقدمة، بما في ذلك: