يمكنك استخدام 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 حالات الاستخدام، والاطّلاع على بعض مستندات المفاهيم الرئيسية والاستراتيجيات المتقدّمة، بما في ذلك: