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

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


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

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

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

قبل أن تتمكّن من استخدام Remote Config، عليك تنفيذ ما يلي:

  • سجِّل مشروع C++‎ وأعدَّه لاستخدام Firebase.

    إذا كان مشروعك المكتوب بلغة C++‎ يستخدم Firebase حاليًا، يعني ذلك أنّه سبق تسجيله وإعداده لاستخدام Firebase.

  • أضِف حزمة تطوير البرامج (SDK) لـ Firebase C++ إلى مشروعك بلغة C++‎.

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

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

Android

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

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

    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، انتقِل إلى DevOps & Engagement > الإعداد عن بُعد.

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

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

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

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

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

تتوفّر التعديلات في الوقت الفعلي في الإصدار 11.0.0 من حزمة تطوير البرامج (SDK) لـ "Firebase" C++ والإصدارات الأحدث على نظامَي 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، ستستدعي الأجهزة التي تشغّل تطبيقك وتستمع إلى التغييرات أداة الاستماع إلى تحديثات الإعدادات.