يمكنك استخدام 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: الاستماع إلى التحديثات في الوقت الحقيقي
After you fetch parameter values, you can use real-time Remote Config to listen for updates from the Remote Config backend. Real-time Remote Config signals to connected devices when updates are available and automatically fetches the changes after you publish a new Remote Config version.
Real-time updates are supported by the Firebase C++ SDK v11.0.0+ and higher for Android and Apple platforms.
- In your app, call
AddOnConfigUpdateListener
to start listening for updates and automatically fetch any new or updated parameter values. The following example listens for updates and, whenActivate
is called, uses the newly fetched values to display an updated welcome message.
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); } });
The next time you publish a new version of your Remote Config, devices that are running your app and listening for changes will call the config update listener.
Next steps
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: