يمكنك استخدام Firebase Remote Config لتحديد المعلمات في تطبيقك وتحديث قيمها في السحابة ، مما يسمح لك بتعديل مظهر وسلوك تطبيقك دون توزيع تحديث للتطبيق.
تُستخدم مكتبة 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 إلى تطبيقك
ذكري المظهر
بعد إضافة 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 ، وبذلك تكون القيم الافتراضية متاحة إذا لم يتم تعيين أي منها على الواجهة الخلفية.
حدد مجموعة من أسماء المعلمات ، وقيم المعلمات الافتراضية باستخدام كائن
std::map<const char*, const char*>
أو كائنstd::map<const char*, firebase::Variant>
كائن.- تعرف على معلومات حول
firebase::Variant
.
إذا كنت قد قمت بالفعل بتكوين قيم معلمات الواجهة الخلفية لـ Remote Config ، فيمكنك تنزيل ملف يحتوي على أزواج المفاتيح / القيم هذه واستخدامها لإنشاء كائن
map
. لمزيد من المعلومات ، راجع تنزيل الإعدادات الافتراضية لقالب Remote Config .- تعرف على معلومات حول
أضف هذه القيم إلى كائن Remote Config باستخدام
SetDefaults()
.
الخطوة 4: احصل على قيم المعلمات لاستخدامها في تطبيقك
يمكنك الآن الحصول على قيم المعلمات من كائن Remote Config. إذا قمت بتعيين القيم في الواجهة الخلفية لـ Remote Config ، وجلبتها ، ثم قمت بتنشيطها ، فستتوفر هذه القيم لتطبيقك. خلاف ذلك ، يمكنك الحصول على قيم المعلمات داخل التطبيق التي تم تكوينها باستخدام SetDefaults()
.
للحصول على هذه القيم ، اتصل بالطريقة المدرجة أدناه التي تعين نوع البيانات الذي يتوقعه تطبيقك ، مع توفير مفتاح المعلمة كوسيطة:
الخطوة 5: قم بتوصيل تطبيقك بوحدة تحكم Firebase
في وحدة تحكم Firebase ، أضف تطبيقك إلى مشروع Firebase.
الخطوة 6: تعيين قيم المعلمات
- في وحدة تحكم Firebase ، افتح مشروعك.
- حدد Remote Config من القائمة لعرض لوحة معلومات Remote Config.
- حدد المعلمات بنفس الأسماء مثل المعلمات التي حددتها في تطبيقك. لكل معلمة ، يمكنك تعيين قيمة افتراضية (والتي ستتجاوز في النهاية القيمة الافتراضية داخل التطبيق) والقيم الشرطية. لمعرفة المزيد ، راجع معلمات وشروط التكوين عن بُعد .
الخطوة 7: جلب القيم وتنشيطها
- لجلب قيم المعلمات من الواجهة الخلفية لـ Remote Config ، قم باستدعاء طريقة
Fetch()
. يتم جلب أي قيم تقوم بتعيينها على الواجهة الخلفية وتخزينها مؤقتًا في كائن Remote Config. - لإتاحة قيم المعلمات التي تم جلبها لتطبيقك ، اتصل بـ
ActivateFetched()
الخطوة 8: استمع إلى التحديثات في الوقت الفعلي
بعد إحضار قيم المعلمات ، يمكنك استخدام Remote Config في الوقت الفعلي للاستماع إلى التحديثات من الواجهة الخلفية لـ Remote Config. يقوم Real-time Remote Config بإشارات إلى الأجهزة المتصلة عندما تكون التحديثات متاحة ويقوم تلقائيًا بجلب التغييرات بعد نشر إصدار Remote Config جديد.
يتم دعم التحديثات في الوقت الفعلي بواسطة Firebase C ++ SDK v11.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 ، فإن الأجهزة التي تقوم بتشغيل تطبيقك وتستمع إلى التغييرات ستستدعي مستمع تحديث التكوين.
الخطوات التالية
If you haven't already, explore the Remote Config use cases , and take a look at some of the key concepts and advanced strategies documentation, including: