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