يمكنك استخدام 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 إلى تطبيقك:
أنشئ تطبيقًا على Firebase، مع إدخال بيئة JNI وActivity:
app = ::firebase::App::Create(::firebase::AppOptions(), jni_env, activity);
اضبط مكتبة Remote Config على النحو الموضَّح:
::firebase::remote_config::Initialize(app);
iOS+
بعد إضافة Firebase إلى تطبيقك:
أنشئ تطبيقًا على Firebase:
app = ::firebase::App::Create(::firebase::AppOptions());
اضبط مكتبة Remote Config على النحو الموضَّح:
::firebase::remote_config::Initialize(app);
الخطوة 3: ضبط قيم المَعلمات التلقائية داخل التطبيق
يمكنك ضبط قيم المَعلمات التلقائية داخل التطبيق في عنصر Remote Config ، لكي يعمل تطبيقك على النحو المطلوب قبل الاتصال بواجهة برمجة التطبيقات في Remote Config، ولكي تتوفّر القيم التلقائية في حال عدم تحديد أي قيم في واجهة برمجة التطبيقات.
حدِّد مجموعة من أسماء المَعلمات وقيمها التلقائية باستخدام عنصر
ConfigKeyValue*
أو عنصرConfigKeyValueVariant*
بحجم المصفوفة.إذا سبق لك ضبط قيم مَعلمات Remote Config في الخلفية، يمكنك تنزيل ملف يحتوي على أزواج المفتاح/القيمة هذه واستخدامه لإنشاء كائن
map
. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة تنزيل الإعدادات التلقائية Remote Config للنموذج.أضِف هذه القيم إلى عنصر Remote Config باستخدام
SetDefaults()
.
الخطوة 4: الحصول على قيم المَعلمات لاستخدامها في تطبيقك
يمكنك الآن الحصول على قيم المَعلمات من عنصر Remote Config. في حال ضبط
القيم في الخلفية في Remote Config واستعادتها ثم تفعيلها، ستكون
هذه القيم متاحة لتطبيقك. بخلاف ذلك، ستحصل على
قيم المَعلمات داخل التطبيق التي تم ضبطها باستخدام
SetDefaults()
.
للحصول على هذه القيم، يمكنك استدعاء الطريقة المدرَجة أدناه التي ترتبط بنوع البيانات المتوقّع من تطبيقك، مع تقديم مفتاح المَعلمة كوسيطة:
الخطوة 5: ضبط قيم المَعلمات
- في وحدة تحكّم Firebase، افتح مشروعك.
- اختَر Remote Config من القائمة لعرض لوحة بيانات Remote Config.
- حدِّد المَعلمات بالأسماء نفسها التي حدّدتها في تطبيقك. يمكنك ضبط قيمة تلقائية (ستلغي في النهاية القيمة التلقائية داخل التطبيق) وقيم مشروطة لكل مَعلمة. لمزيد من المعلومات، اطّلِع على مَعلمات وشروط Remote Config.
الخطوة 6: استرجاع القيم وتفعيلها
- لجلب قيم المَعلمات من الخلفية في Remote Config، يمكنك استدعاء الأسلوب
Fetch()
. يتم جلب أي قيم تحدّدها في الخلفية و تخزينها في كائن Remote Config. - لجعل قيم المَعلمات التي تم جلبها متاحة لتطبيقك، استخدِم الإجراء
ActivateFetched()
.
الخطوة 7: الاستماع إلى آخر الأخبار في الوقت الفعلي
بعد استرجاع قيم المَعلمات، يمكنك استخدام Remote Config في الوقت الفعلي لتلقّي التعديلات من الخلفية في Remote Config. تُرسِل Remote Config إشارات في الوقت الفعلي إلى الأجهزة المتصلة عندما تتوفّر تحديثات، وتعمل على جلب التغييرات تلقائيًا بعد نشر إصدار جديد من Remote Config.
تتوفّر التحديثات في الوقت الفعلي لحِزم تطوير البرامج (SDK) Firebase C++ الإصدار 11.0.0 والإصدارات الأحدث لنظامَي التشغيل Android وApple.
- في تطبيقك، اتصل بالرقم
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، ستستدعي الأجهزة التي تعمل بتطبيقك وتستمع إلى التغييرات مستمع تعديلات الإعدادات.
الخطوات التالية
يمكنك استكشاف Remote Config حالات الاستخدام، والاطّلاع على بعض مستندات المفاهيم الرئيسية والاستراتيجيات المتقدّمة، بما في ذلك: