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

اختيار المنصة: iOS+ Android Web Flutter Unity C++


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

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

الخطوة 1: إضافة Firebase إلى تطبيقك

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

  • تسجيل مشروع C++ وضبطه لاستخدام Firebase

    إذا كان مشروع C++ يستخدم Firebase حاليًا، يكون قد تم تسجيله وضبطه لاستخدام Firebase.

  • إضافة حزمة Firebase C++ SDK إلى مشروع C++

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

الخطوة 2: إضافة Remote Config إلى تطبيقك

Android

بعد إضافة Firebase إلى تطبيقك:

  1. أنشئ تطبيق Firebase، مع تمرير بيئة JNI وActivity:

    app = ::firebase::App::Create(::firebase::AppOptions(), jni_env, activity);

  2. ابدأ مكتبة Remote Config، كما هو موضّح أدناه:

    ::firebase::remote_config::Initialize(app);

iOS+

بعد إضافة Firebase إلى تطبيقك:

  1. أنشئ تطبيق Firebase:

    app = ::firebase::App::Create(::firebase::AppOptions());

  2. ابدأ مكتبة Remote Config، كما هو موضّح أدناه:

    ::firebase::remote_config::Initialize(app);

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

يمكنك ضبط قيم المَعلمات التلقائية داخل التطبيق في كائن Remote Config ، لكي يعمل تطبيقك على النحو المطلوب قبل الاتصال بخلفية Remote Config، ولكي تتوفّر القيم التلقائية إذا لم يتم ضبط أي قيم في الخلفية.

  1. حدِّد مجموعة من أسماء المَعلمات وقيم المَعلمات التلقائية باستخدام كائن ConfigKeyValue* أو كائن ConfigKeyValueVariant* بحجم المصفوفة.

    إذا سبق لك ضبط قيم مَعلمات خلفية Remote Config، يمكنك تنزيل ملف يحتوي على أزواج المفتاح/القيمة هذه واستخدامه لإنشاء كائن map. لمزيد من المعلومات، اطّلِع على مقالة تنزيل Remote Config الإعدادات التلقائية للنموذج.

  2. أضِف هذه القيم إلى الكائن Remote Config باستخدام SetDefaults().

الخطوة 4: الحصول على قيم المَعلمات لاستخدامها في تطبيقك

يمكنك الآن الحصول على قيم المَعلمات من كائن Remote Config. إذا ضبطت قيمًا في الخلفية Remote Config، واسترجعتها، ثم فعّلتها، ستكون هذه القيم متاحة لتطبيقك. وإلا، ستحصل على قيم المَعلمات داخل التطبيق التي تم ضبطها باستخدام SetDefaults().

للحصول على هذه القيم، استخدِم أيًا من الطرق التالية التي تتطابق مع نوع البيانات الذي يتوقّعه تطبيقك، مع توفير مفتاح المَعلمة كإحدى الوسيطات:

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

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

الخطوة 6: استرجاع القيم وتنشيطها

  1. لاسترجاع قيم المَعلمات من الخلفية Remote Config، استخدِم الطريقة Fetch(). يتم استرجاع أي قيم تضبطها في الخلفية وتخزينها مؤقتًا في الكائن Remote Config
  2. لإتاحة قيم المَعلمات المسترجَعة لتطبيقك، استخدِم الطريقة ActivateFetched()

الخطوة 7: الاستماع إلى التعديلات في الوقت الفعلي

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

تتوافق التعديلات في الوقت الفعلي مع حزمة Firebase C++ SDK الإصدار 11.0.0 والإصدارات الأحدث لمنصتَي Android وApple.

  1. في تطبيقك، استخدِم AddOnConfigUpdateListener لبدء الاستماع إلى التعديلات واسترجاع أي قيم مَعلمات جديدة أو معدَّلة تلقائيًا. يستمع المثال التالي إلى التعديلات، وعند استخدام Activate، يستخدِم القيم المسترجَعة حديثًا لعرض رسالة ترحيب معدَّلة.
remote_config->AddOnConfigUpdateListener(
    [](firebase::remote_config::ConfigUpdate&& config_update,
       firebase::remote_config::RemoteConfigError remote_config_error) {
      if (remote_config_error != firebase::remote_config::kRemoteConfigErrorNone) {
        printf("Error listening for config updates: %d", remote_config_error);
      }
      // Search the `updated_keys` set for the key "welcome_message."
      // `updated_keys` represents the keys that have changed since the last
      // fetch.
      if (std::find(config_update.updated_keys.begin(),
                    config_update.updated_keys.end(),
                    "welcome_message") != config_update.updated_keys.end()) {
        remote_config->Activate().OnCompletion(
            [&](const firebase::Future& completed_future,
               void* user_data) {
              // The key "welcome_message" was found within `updated_keys` and
              // can be activated.
              if (completed_future.error() == 0) {
                DisplayWelcomeMessage();
              } else {
                printf("Error activating config: %d", completed_future.error());
              }
            },
            nullptr);
      }
    });

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