بدء استخدام ميزة "الإعداد عن بُعد" على Flutter

اختيار المنصّة: iOS+ Android Web Flutter Unity C++


يمكنك استخدام ميزة "الإعداد عن بُعد عبر Firebase" لتحديد المَعلمات في تطبيقك وتعديل قيمها في السحابة الإلكترونية، ما يتيح لك تغيير مظهر تطبيقك وسلوكه بدون توزيع تحديث للتطبيق. يرشدك هذا الدليل خلال خطوات البدء ويقدّم بعض نماذج الرموز البرمجية.

الخطوة 1: إضافة Firebase وحزمة تطوير البرامج (SDK) لميزة "الإعداد عن بُعد" إلى تطبيقك

  1. ثبِّت حزم Firebase SDK لتطبيق Flutter وابدأها إذا لم يسبق لك إجراء ذلك.

  2. بالنسبة إلى ميزة "الإعداد عن بُعد"، يجب استخدام "إحصاءات Google" من أجل استهداف نسخ التطبيق الافتراضية لخصائص المستخدمين وشرائح الجمهور وفقًا للشروط. تأكَّد من تفعيل "إحصاءات Google" في مشروعك.

  3. من دليل جذر مشروع Flutter، نفِّذ الأمر التالي لتثبيت مكوّن "الإعداد عن بُعد" الإضافي:

    flutter pub add firebase_remote_config
    

    كجزء من إعداد ميزة "الإعداد عن بُعد"، عليك أيضًا إضافة حزمة Firebase SDK الخاصة بخدمة "إحصاءات Google" إلى تطبيقك:

    flutter pub add firebase_analytics
    
  4. أعِد إنشاء مشروعك:

    flutter run
    
  5. إذا كنت تستخدم ميزة "الإعداد عن بُعد" على نظام التشغيل macOS، فعِّل ميزة "مشاركة Keychain" في Xcode.

الخطوة ‎2: استرجاع عنصر ميزة "الإعداد عن بُعد" في نمط "سينغلتون"

احصل على النسخة الافتراضية لعنصر "الإعداد عن بُعد" وحدِّد أقل فترة زمنية للاسترجاع من أجل السماح بإعادة التحميل بشكل متكرّر:

final remoteConfig = FirebaseRemoteConfig.instance;
await remoteConfig.setConfigSettings(RemoteConfigSettings(
    fetchTimeout: const Duration(minutes: 1),
    minimumFetchInterval: const Duration(hours: 1),
));

يُستخدم عنصر نمط "سينغلتون" لتخزين قيم المَعلمات التلقائية داخل التطبيق، واسترجاع قيم المَعلمات المعدَّلة من الخلفية، والتحكّم في وقت إتاحة القيم المسترجَعة لتطبيقك.

أثناء التطوير، يُنصح بتحديد أقل فترة زمنية للاسترجاع منخفضة نسبيًا. لمزيد من المعلومات، يُرجى الاطّلاع على التقييد.

الخطوة 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" لإنشاء هذه القيم.

  1. في "وحدة تحكّم Firebase"، افتح مشروعك.
  2. اختَر الإعداد عن بُعد من القائمة لعرض لوحة بيانات "الإعداد عن بُعد".
  3. حدِّد مَعلمات بالأسماء نفسها التي حدّدتها في تطبيقك. لكل مَعلمة، يمكنك ضبط قيمة تلقائية (ستلغي في النهاية القيمة التلقائية المقابلة داخل التطبيق)، ويمكنك أيضًا ضبط قيم مشروطة. لمزيد من المعلومات، يُرجى الاطّلاع على مَعلمات "الإعداد عن بُعد" و الشروط.

الخطوة 6: استرجاع القيم وتنشيطها

  1. لاسترجاع قيم المَعلمات من خلفية "الإعداد عن بُعد"، استخدِم الطريقة fetch(). يتم استرجاع أي قيم تضبطها في الخلفية وتخزينها في عنصر "الإعداد عن بُعد".

  2. لإتاحة قيم المَعلمات المسترجَعة لتطبيقك، استخدِم الطريقة activate().

    في الحالات التي تريد فيها استرجاع القيم وتنشيطها في طلب واحد، يمكنك استخدام طلب fetchAndActivate() لاسترجاع القيم من خلفية "الإعداد عن بُعد" وإتاحتها للتطبيق:

    await remoteConfig.fetchAndActivate();
    

بما أنّ قيم المَعلمات المعدَّلة هذه تؤثر في سلوك تطبيقك ومظهره ، عليك تفعيل القيم المسترجَعة في وقت يضمن تجربة سلسة للمستخدم ، مثل المرة التالية التي يفتح فيها المستخدم تطبيقك. لمزيد من المعلومات والأمثلة، يُرجى الاطّلاع على استراتيجيات تحميل "الإعداد عن بُعد".

الخطوة 7: الاستماع إلى التعديلات في الوقت الفعلي

بعد استرجاع قيم المَعلمات، يمكنك استخدام ميزة "الإعداد عن بُعد" في الوقت الفعلي للاستماع إلى التعديلات من خلفية "الإعداد عن بُعد". تُرسِل ميزة "الإعداد عن بُعد" في الوقت الفعلي إشارات إلى الأجهزة المتصلة عندما تتوفّر تعديلات، وتسترجِع التغييرات تلقائيًا بعد نشر إصدار جديد من "الإعداد عن بُعد".

يُرجى العِلم أنّ ميزة "الإعداد عن بُعد" في الوقت الفعلي غير متاحة للويب.

  1. في تطبيقك، استخدِم onConfigUpdated لبدء الاستماع إلى التعديلات واسترجاع أي قيم مَعلمات جديدة تلقائيًا.

     remoteConfig.onConfigUpdated.listen((event) async {
       await remoteConfig.activate();
    
       // Use the new config values here.
     });
    
  2. في المرة التالية التي تنشر فيها إصدارًا جديدًا من "الإعداد عن بُعد"، ستفعِّل الأجهزة التي تشغِّل تطبيقك وتستمع إلى التغييرات الإعداد الجديد.

التقييد

إذا استرجَع أحد التطبيقات البيانات عدة مرات خلال فترة زمنية قصيرة، سيتم تقييد طلبات الاسترجاع وستكون قيمة السمة 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),
));