| اختيار المنصة: | iOS+ Android الويب Flutter Unity C++ |
يمكنك استخدام ميزة "الإعداد عن بُعد عبر Firebase" لتحديد المَعلمات في تطبيقك وتعديل قيمها في السحابة الإلكترونية، ما يتيح لك تعديل مظهر تطبيقك وسلوكه بدون توزيع تحديث للتطبيق. سنتعرّف في هذا الدليل على خطوات البدء وسنقدّم بعض الرموز النموذجية.
الخطوة 1: إضافة Firebase وحزمة تطوير البرامج (SDK) لميزة "الإعداد عن بُعد" إلى تطبيقك
ثبِّت حِزم تطوير البرامج (SDK) لمنصّة Firebase لبرنامج Flutter وابدأها إذا لم يسبق لك إجراء ذلك.
بالنسبة إلى ميزة "الإعداد عن بُعد"، يجب استخدام "إحصاءات Google" من أجل استهداف نسخ التطبيق الافتراضية لخصائص المستخدمين وشرائح الجمهور وفقًا للشروط. تأكَّد من تفعيل "إحصاءات Google" في مشروعك.
من الدليل الجذري لمشروع Flutter، نفِّذ الأمر التالي لتثبيت المكوّن الإضافي لميزة "الإعداد عن بُعد":
flutter pub add firebase_remote_configكجزء من عملية إعداد ميزة "الإعداد عن بُعد"، عليك أيضًا إضافة حزمة تطوير البرامج (SDK) لمنصّة Firebase الخاصة بخدمة "إحصاءات Google" إلى تطبيقك:
flutter pub add firebase_analyticsأعِد إنشاء مشروعك:
flutter runإذا كنت تستخدم ميزة "الإعداد عن بُعد" على نظام التشغيل macOS، فعليك تفعيل مشاركة سلسلة المفاتيح في Xcode.
الخطوة 2: استرجاع عنصر ميزة "الإعداد عن بُعد" في نمط "سينغلتون"
احصل على النسخة الافتراضية لعنصر "الإعداد عن بُعد" وحدِّد أقل فترة زمنية للاسترجاع من أجل السماح بإعادة التحميل بشكل متكرّر:
final remoteConfig = FirebaseRemoteConfig.instance;
await remoteConfig.setConfigSettings(RemoteConfigSettings(
fetchTimeout: const Duration(minutes: 1),
minimumFetchInterval: const Duration(hours: 1),
));
يُستخدَم كائن singleton لتخزين قيم المَعلمات التلقائية داخل التطبيق، وجلب قيم المَعلمات المعدَّلة من الخلفية، والتحكّم في وقت إتاحة القيم التي تم جلبها لتطبيقك.
أثناء عملية التطوير، ننصحك بضبط حد أدنى منخفض نسبيًا للفاصل الزمني بين عمليات الجلب. لمزيد من المعلومات، يُرجى الاطّلاع على التقييد.
الخطوة 3: ضبط قيم المَعلمات التلقائية داخل التطبيق
يمكنك ضبط قيم المَعلمات التلقائية داخل التطبيق في عنصر "الإعداد عن بُعد"، لكي يعمل تطبيقك على النحو المنشود قبل اتصاله بخلفية "الإعداد عن بُعد"، ولكي تتوفّر القيم التلقائية في حال عدم ضبط أيّ قيم في الخلفية.
await remoteConfig.setDefaults(const {
"example_param_1": 42,
"example_param_2": 3.14159,
"example_param_3": true,
"example_param_4": "Hello, world!",
});
الخطوة 4: الحصول على قيم المَعلمات لاستخدامها في تطبيقك
يمكنك الآن الحصول على قيم المَعلمات من عنصر "الإعداد عن بُعد". إذا ضبطت القيم في الخلفية، واسترجعتها، ثم فعّلتها، ستكون هذه القيم متاحة لتطبيقك. وإلا، ستحصل على قيم المَعلمات داخل التطبيق التي تم ضبطها باستخدام setDefaults().
للحصول على هذه القيم، يمكنك استدعاء أي من الطرق التالية التي ترتبط بنوع البيانات المتوقع من تطبيقك، مع توفير مفتاح المَعلمة كوسيطة:
getBool()getDouble()getInt()getString()
الخطوة 5: ضبط قيم المَعلمات في خلفية "الإعداد عن بُعد"
باستخدام وحدة تحكُّم Firebase أو واجهات برمجة التطبيقات الخلفية لميزة "الإعداد عن بُعد"، يمكنك إنشاء قيم تلقائية جديدة من جهة الخادم تلغي القيم داخل التطبيق وفقًا للمنطق الشرطي أو استهداف المستخدمين المطلوبَين. يصف هذا القسم خطوات وحدة تحكّم Firebase لإنشاء هذه القيم.
في وحدة تحكّم Firebase، انتقِل إلى DevOps & Engagement > الإعداد عن بُعد.
حدِّد مَعلمات بالأسماء نفسها التي حدّدتها في تطبيقك. يمكنك ضبط قيمة تلقائية لكل مَعلمة (ستلغي في النهاية القيمة التلقائية المقابلة داخل التطبيق)، ويمكنك أيضًا ضبط قيم شرطية. لمزيد من المعلومات، يُرجى الاطّلاع على مَعلمات وشروط "الإعداد عن بُعد".
الخطوة 6: استرجاع القيم وتفعيلها
لاسترجاع قيم المَعلمات من خلفية "الإعداد عن بُعد"، استخدِم طريقة
fetch(). يتم جلب أي قيم تحدّدها في الخلفية وتخزينها في عنصر "الإعداد عن بُعد".لإتاحة قيم المَعلمات التي تم جلبها لتطبيقك، يمكنك استدعاء طريقة
activate().في الحالات التي تريد فيها جلب القيم وتفعيلها في طلب واحد، يمكنك استخدام طلب
fetchAndActivate()لجلب القيم من الخلفية في "الإعداد عن بُعد" وإتاحتها للتطبيق:await remoteConfig.fetchAndActivate();
بما أنّ قيم المَعلمات المعدَّلة هذه تؤثر في سلوك تطبيقك ومظهره، عليك تفعيل القيم التي تم جلبها في وقت يضمن تجربة سلسة للمستخدم، مثل المرة التالية التي يفتح فيها المستخدم تطبيقك. يُرجى الاطّلاع على استراتيجيات تحميل "الإعداد عن بُعد" لمزيد من المعلومات والأمثلة.
الخطوة 7: الاستماع إلى التعديلات في الوقت الفعلي
بعد جلب قيم المَعلمات، يمكنك استخدام ميزة "الإعداد عن بُعد" في الوقت الفعلي للاستماع إلى التعديلات من الخلفية الخاصة بميزة "الإعداد عن بُعد". ترسل ميزة "الإعداد عن بُعد" في الوقت الفعلي إشارات إلى الأجهزة المتصلة عند توفّر تحديثات، وتجلب التغييرات تلقائيًا بعد نشر إصدار جديد من ميزة "الإعداد عن بُعد".
يُرجى العِلم أنّ ميزة "الإعداد عن بُعد" في الوقت الفعلي غير متاحة للويب.
في تطبيقك، استخدِم
onConfigUpdatedلبدء الاستماع إلى التعديلات واسترجاع أي قيم مَعلمات جديدة تلقائيًا.remoteConfig.onConfigUpdated.listen((event) async { await remoteConfig.activate(); // Use the new config values here. });في المرة التالية التي تنشر فيها إصدارًا جديدًا من "الإعداد عن بُعد"، سيتم تفعيل الإعدادات الجديدة على الأجهزة التي تشغّل تطبيقك وتستمع إلى التغييرات.
التقييد
إذا جلب تطبيق بيانات كثيرة جدًا في فترة زمنية قصيرة، سيتم تقييد طلبات الجلب وستكون قيمة السمة lastFetchStatus في FirebaseRemoteConfig هي RemoteConfigFetchStatus.throttle.
الحدّ الأدنى التلقائي للفاصل الزمني لاسترجاع مَعلمات "الإعداد عن بُعد" هو 12 ساعة، ما يعني أنّه لن يتم استرجاع الإعدادات من الخلفية أكثر من مرة واحدة خلال فترة 12 ساعة، بغض النظر عن عدد طلبات الاسترجاع التي يتم إجراؤها فعليًا.
أثناء تطوير التطبيق، إذا لم تكن تستخدم ميزة "الإعداد عن بُعد" في الوقت الفعلي (وهو ما ننصح به)، قد تحتاج إلى جلب الإعدادات وتفعيلها بشكل متكرر (عدة مرات في الساعة) للسماح لك بالتكرار السريع أثناء تطوير تطبيقك واختباره. لاستيعاب التكرار السريع في مشروع يضم ما يصل إلى 10 مطوّرين، يمكنك ضبط حد أدنى منخفض لفاصل الجلب مؤقتًا باستخدام setConfigSettings().
final remoteConfig = FirebaseRemoteConfig.instance;
await remoteConfig.setConfigSettings(RemoteConfigSettings(
fetchTimeout: const Duration(minutes: 1),
minimumFetchInterval: const Duration(minutes: 5),
));