يمكنك استخدام Firebase Remote Config لتحديد المعلمات في تطبيقك وتحديث قيمها في السحابة، مما يسمح لك بتعديل مظهر تطبيقك وسلوكه دون توزيع تحديث التطبيق.
يتم استخدام مكتبة Remote Config لتخزين قيم المعلمات الافتراضية داخل التطبيق، وجلب قيم المعلمات المحدثة من الواجهة الخلفية للتكوين عن بعد، والتحكم في وقت إتاحة القيم التي تم جلبها لتطبيقك. لمعرفة المزيد، راجع إستراتيجيات تحميل التكوين عن بعد .
الخطوة 1: أضف Firebase إلى تطبيقك
قبل أن تتمكن من استخدام "التكوين عن بعد" ، تحتاج إلى:
قم بتسجيل مشروع 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);
قم بتهيئة مكتبة التكوين عن بعد، كما هو موضح:
::firebase::remote_config::Initialize(app);
دائرة الرقابة الداخلية +
بعد إضافة Firebase إلى تطبيقك:
إنشاء تطبيق Firebase:
app = ::firebase::App::Create(::firebase::AppOptions());
قم بتهيئة مكتبة التكوين عن بعد، كما هو موضح:
::firebase::remote_config::Initialize(app);
الخطوة 3: قم بتعيين قيم المعلمات الافتراضية داخل التطبيق
يمكنك تعيين قيم المعلمات الافتراضية داخل التطبيق في كائن Remote Config، بحيث يتصرف تطبيقك على النحو المنشود قبل أن يتصل بالواجهة الخلفية للتكوين عن بعد، وحتى تكون القيم الافتراضية متاحة إذا لم يتم تعيين أي منها على الواجهة الخلفية.
حدد مجموعة من أسماء المعلمات وقيم المعلمات الافتراضية باستخدام كائن
std::map<const char*, const char*>
أو كائنstd::map<const char*, firebase::Variant>
.- تعرف على
firebase::Variant
.
إذا قمت بالفعل بتكوين قيم معلمات الواجهة الخلفية للتكوين عن بعد، فيمكنك تنزيل ملف يحتوي على أزواج المفاتيح/القيم هذه واستخدامها لإنشاء كائن
map
. لمزيد من المعلومات، راجع تنزيل الإعدادات الافتراضية لقالب التكوين عن بُعد .- تعرف على
أضف هذه القيم إلى كائن التكوين عن بعد باستخدام
SetDefaults()
.
الخطوة 4: احصل على قيم المعلمات لاستخدامها في تطبيقك
يمكنك الآن الحصول على قيم المعلمات من كائن التكوين عن بعد. إذا قمت بتعيين قيم في الواجهة الخلفية للتكوين عن بعد، وجلبتها، ثم قمت بتنشيطها، فستكون هذه القيم متاحة لتطبيقك. وإلا، فستحصل على قيم المعلمات داخل التطبيق التي تم تكوينها باستخدام SetDefaults()
.
للحصول على هذه القيم، اتصل بالطريقة المذكورة أدناه والتي تعين نوع البيانات المتوقع بواسطة تطبيقك، مع توفير مفتاح المعلمة كوسيطة:
الخطوة 5: قم بتوصيل تطبيقك في وحدة تحكم Firebase
في وحدة تحكم Firebase ، أضف تطبيقك إلى مشروع Firebase الخاص بك.
الخطوة 6: تعيين قيم المعلمات
- في وحدة تحكم Firebase ، افتح مشروعك.
- حدد Remote Config من القائمة لعرض لوحة معلومات التكوين عن بعد.
- حدد المعلمات بنفس أسماء المعلمات التي حددتها في تطبيقك. بالنسبة لكل معلمة، يمكنك تعيين قيمة افتراضية (والتي ستتجاوز في النهاية القيمة الافتراضية داخل التطبيق) والقيم الشرطية. لمعرفة المزيد، راجع معلمات وشروط التكوين عن بعد .
الخطوة 7: جلب القيم وتنشيطها
- لجلب قيم المعلمات من الواجهة الخلفية للتكوين عن بعد، قم باستدعاء أسلوب
Fetch()
. يتم جلب أي قيم تقوم بتعيينها على الواجهة الخلفية وتخزينها مؤقتًا في كائن Remote Config. - لإتاحة قيم المعلمات التي تم جلبها لتطبيقك، اتصل بـ
ActivateFetched()
الخطوة 8: الاستماع إلى التحديثات في الوقت الحقيقي
بعد جلب قيم المعلمات، يمكنك استخدام Remote Config في الوقت الفعلي للاستماع إلى التحديثات من الواجهة الخلفية Remote Config. يقوم Remote Config بإرسال إشارات إلى الأجهزة المتصلة عند توفر التحديثات ويجلب التغييرات تلقائيًا بعد نشر إصدار جديد من Remote Config.
يتم دعم التحديثات في الوقت الفعلي بواسطة الإصدار 11.0.0+ من Firebase C++ SDK والإصدارات الأحدث لمنصات 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، فإن الأجهزة التي تقوم بتشغيل تطبيقك وتستمع إلى التغييرات ستستدعي مستمع تحديث التكوين.
الخطوات التالية
إذا لم تقم بالفعل ، استكشف حالات استخدام التكوين عن بُعد ، وألقي نظرة على بعض المفاهيم الرئيسية ووثائق الاستراتيجيات المتقدمة ، بما في ذلك: