قوالب التكوين عن بعد وتعيين الإصدار

نموذج Remote Config هو مجموعة من جانب الخادم للمعلمات والشروط بتنسيق JSON التي أنشأتها لمشروع Firebase. يمكنك تعديل القالب وإدارته باستخدام وحدة تحكم Firebase ، التي تعرض محتويات النموذج بتنسيق رسومي في علامتي التبويب " المعلمات " و " الشروط ". يمكنك أيضًا استخدام واجهات برمجة التطبيقات الخلفية للتكوين البعيد أو Firebase CLI لتعديل التهيئة وإدارتها.

فيما يلي مثال لملف قالب:

  {
    "conditions": [
      {
        "name": "ios",
        "expression": "device.os == 'ios'"
      }
    ],
    "parameters": {
      "welcome_message": {
        "defaultValue": {
          "value": "Welcome to this sample app"
        },
        "conditionalValues": {
          "ios": {
            "value": "Welcome to this sample iOS app"
          }
        }
      },
      "welcome_message_caps": {
        "defaultValue": {
          "value": "false"
        }
      },
      "header_text": {
        "defaultValue": {
          "useInAppDefault": true
        }
      }
    },
    "version": {
      "versionNumber": "28",
      "updateTime": "2020-05-14T18:39:38.994Z",
      "updateUser": {
        "email": "user@google.com"
      },
      "updateOrigin": "CONSOLE",
      "updateType": "INCREMENTAL_UPDATE"
    }
  }

في كل مرة تقوم فيها بتحديث المعلمات ، يُنشئ Remote Config نموذجًا جديدًا لـ Remote Config ويخزن القالب السابق كإصدار يمكنك استرداده أو التراجع إليه حسب الحاجة. يتم زيادة أرقام الإصدارات بالتتابع من القيمة الأولية المخزنة بواسطة Remote Config. تتضمن جميع القوالب حقلاً version كما هو موضح ، يحتوي على بيانات وصفية حول هذا الإصدار المحدد.

باستخدام وحدة تحكم Firebase أو Firebase CLI أو واجهات برمجة التطبيقات الخلفية للتكوين عن بُعد ، يمكنك تنفيذ مهام إدارة الإصدار التالية:

  • سرد كافة إصدارات القوالب المخزنة
  • استرجع نسخة محددة
  • التراجع إلى إصدار معين

أثناء قيامك بإدارة قوالب التكوين عن بُعد ، ضع حد انتهاء الصلاحية في الاعتبار: لا تنتهي صلاحية قالب "التكوين البعيد الحالي" النشط المستخدم بواسطة تطبيقك ؛ ومع ذلك ، إذا تم استبداله بتحديث ، فسيتم تخزين الإصدار السابق لمدة 90 يومًا فقط ، وبعد ذلك ستنتهي صلاحيته ولا يمكن استرجاعه. يوجد أيضًا حد إجمالي يبلغ 300 نسخة مخزنة. إذا كنت تريد تخزين قالب أو التراجع عنه خارج تلك الحدود ، فاحفظه وخزنه يدويًا.

إدارة إصدارات قوالب التكوين عن بعد

يصف هذا القسم كيفية إدارة إصدارات قالب "التكوين عن بُعد" الخاص بك. لمزيد من التفاصيل حول كيفية إنشاء القوالب وتعديلها وحفظها برمجيًا ، راجع تعديل التهيئة عن بُعد برمجيًا .

سرد كافة الإصدارات المخزنة من قالب Remote Config

يمكنك استرداد قائمة بجميع الإصدارات المخزنة من قالب "التكوين عن بُعد". علي سبيل المثال:

Node.js

function listAllVersions() {
  admin.remoteConfig().listVersions()
    .then((listVersionsResult) => {
      console.log("Successfully fetched the list of versions");
      listVersionsResult.versions.forEach((version) => {
        console.log('version', JSON.stringify(version));
      });
    })
    .catch((error) => {
      console.log(error);
    });
}

جافا

ListVersionsPage page = FirebaseRemoteConfig.getInstance().listVersionsAsync().get();
while (page != null) {
  for (Version version : page.getValues()) {
    System.out.println("Version: " + version.getVersionNumber());
  }
  page = page.getNextPage();
}

// Iterate through all versions. This will still retrieve versions in batches.
page = FirebaseRemoteConfig.getInstance().listVersionsAsync().get();
for (Version version : page.iterateAll()) {
  System.out.println("Version: " + version.getVersionNumber());
}

راحة

curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig:listVersions

وحدة تحكم Firebase

في علامة التبويب " المعلمات " ، حدد رمز "الساعة" المعروض أعلى اليسار. يؤدي هذا إلى فتح صفحة سجل التغييرات التي تسرد جميع إصدارات القوالب المخزنة في قائمة قائمة على اليمين.

تتضمن التفاصيل المعروضة لكل إصدار مخزن معلومات حول ما إذا كانت التغييرات قد نشأت باستخدام وحدة التحكم أم بواجهة برمجة تطبيقات REST أم من التراجع أو ما إذا كانت تغييرات تدريجية من حفظ إجباري للقالب.

Firebase CLI

firebase remoteconfig:versions:list

استخدم الخيار --limit للحد من عدد الإصدارات التي يتم إرجاعها. مرر "0" لجلب جميع الإصدارات.

تتضمن قائمة القوالب بيانات وصفية لجميع الإصدارات المخزنة ، بما في ذلك وقت التحديث ، والمستخدم الذي قام بإنشائه ، وما إذا كان قد تم إجراؤه عبر وحدة التحكم أو واجهة برمجة تطبيقات REST. فيما يلي مثال على عنصر الإصدار:

{
  "versions": [{
    "version_number": "6",
    "update_time": "2022-05-12T02:38:54Z",
    "update_user": {
      "name": "Jane Smith",
      "email": "jane@developer.org",
      "imageUrl": "https://lh3.googleusercontent.com/a-/..."
    },
    "description": "One small change on the console",
    "origin": "CONSOLE",
    "update_type": "INCREMENTAL_UPDATE"
  }]

استرجع إصدارًا محددًا من قالب Remote Config

يمكنك استرداد أي إصدار مخزن محدد من قالب Remote Config. علي سبيل المثال:

Node.js

قم بتمرير getTemplate() بدون أي وسيطات لاسترداد أحدث إصدار من القالب ، أو لاسترداد إصدار معين ، استخدم getTemplateAtVersion() .

// Get template version: 6
admin.remoteConfig().getTemplateAtVersion('6')
  .then((template) => {
    console.log("Successfully fetched the template with ETag: " + template.etag);
  })
  .catch((error) => {
    console.log(error);
  });

جافا

Template template = FirebaseRemoteConfig.getInstance().getTemplateAtVersionAsync(versionNumber).get();
// See the ETag of the fetched template.
System.out.println("Successfully fetched the template with ETag: " + template.getETag());

راحة

curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig?version_number=6

معلمة URL ?version_number صالحة فقط لعمليات GET ؛ لا يمكنك استخدامه لتحديد أرقام الإصدارات للتحديثات. قد يؤدي طلب الحصول على مشابه بدون المعلمة ?version_number إلى استرداد القالب النشط الحالي.

وحدة تحكم Firebase

بشكل افتراضي ، يعرض جزء التفاصيل في علامة التبويب سجل التغييرات القالب النشط الحالي. لعرض تفاصيل إصدار آخر في القائمة ، حدده من القائمة اليمنى.

يمكنك عرض فرق تفصيلي للإصدار المحدد حاليًا وأي إصدار مخزن آخر بالمرور فوق قائمة السياق لأي إصدار غير محدد وتحديد مقارنة بالإصدار المحدد.

Firebase CLI

firebase remoteconfig:get -v VERSION_NUMBER

اختياريًا ، يمكنك كتابة الإخراج إلى ملف محدد باستخدام -o, FILENAME .

التراجع إلى إصدار مخزن محدد من قالب Remote Config

يمكنك العودة إلى أي نسخة مخزنة من القالب. علي سبيل المثال:

Node.js

// Roll back to template version: 6
admin.remoteConfig().rollback('6')
  .then((template) => {
    console.log("Successfully rolled back to template version 6.");
    console.log("New ETag: " + template.etag);
  })
  .catch((error) => {
    console.log('Error trying to rollback:', e);
  })

جافا

try {
  Template template = FirebaseRemoteConfig.getInstance().rollbackAsync(versionNumber).get();
  System.out.println("Successfully rolled back to template version: " + versionNumber);
  System.out.println("New ETag: " + template.getETag());
} catch (ExecutionException e) {
  if (e.getCause() instanceof FirebaseRemoteConfigException) {
    FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause();
    System.out.println("Error trying to rollback template.");
    System.out.println(rcError.getMessage());
  }
}

راحة

للرجوع إلى نموذج تكوين عن بُعد مخزن ، قم بإصدار HTTP POST بالطريقة المخصصة :rollback ، وفي نص الطلب ، الإصدار المحدد المراد تطبيقه. علي سبيل المثال:

curl --compressed -D headers -H "Authorization: Bearer <var>token</var>" -H "Content-Type: application/json" -X POST https://firebaseremoteconfig.googleapis.com/v1/projects/<var>my-project-id</var>/remoteConfig:rollback -d '{"version_number": 6}'

تحتوي الاستجابة على محتويات القالب المخزن النشط الآن ، مع بيانات التعريف الخاصة بالإصدار الجديد.

وحدة تحكم Firebase

بالنسبة لإصدارات القوالب السابقة المؤهلة للتراجع ، يتم عرض زر خيار للعودة إلى هذا الإصدار في أعلى يمين صفحة سجل التغييرات . انقر فوق هذا الخيار وأكده فقط إذا كنت متأكدًا من أنك تريد الرجوع إلى هذا الإصدار واستخدام هذه القيم على الفور لجميع التطبيقات والمستخدمين.

Firebase CLI

firebase remoteconfig:rollback -v VERSION_NUMBER

لاحظ أن عملية التراجع هذه تؤدي بشكل فعال إلى إنشاء إصدار جديد مرقم. على سبيل المثال ، يؤدي التراجع من الإصدار 10 إلى الإصدار 6 بشكل فعال إلى إنشاء نسخة جديدة من الإصدار 6 ، تختلف عن النسخة الأصلية فقط من حيث أن رقم الإصدار هو 11. لا يزال الإصدار الأصلي 6 مخزنًا ، على افتراض أنه لم يصل إلى انتهاء صلاحيته ، و الإصدار 11 يصبح القالب النشط.

قم بتنزيل الإعدادات الافتراضية لقالب Remote Config

نظرًا لأن تطبيقك قد لا يكون دائمًا متصلاً بالإنترنت ، يجب عليك تكوين القيم الافتراضية للتطبيق من جانب العميل لجميع معلمات التهيئة عن بُعد. يجب عليك أيضًا مزامنة القيم الافتراضية لعميل التطبيق وقيم المعلمات الافتراضية لواجهة التكوين عن بُعد بشكل دوري ، لأنها قد تتغير بمرور الوقت.

كما هو موضح في الروابط الخاصة بالنظام الأساسي في نهاية هذا القسم ، يمكنك تعيين هذه الإعدادات الافتراضية يدويًا في تطبيقك أو يمكنك تبسيط هذه العملية عن طريق تنزيل الملفات التي تحتوي فقط على أزواج قيمة المفتاح لجميع المعلمات وقيمها الافتراضية في قالب التكوين عن بعد النشط. يمكنك بعد ذلك تضمين هذا الملف في مشروعك وتهيئة تطبيقك لاستيراد هذه القيم.

يمكنك تنزيل هذه الملفات بتنسيق XML لتطبيقات Android وتنسيق قائمة الخصائص (plist) لتطبيقات iOS و JSON لتطبيقات الويب.

نوصي بتنزيل الإعدادات الافتراضية لـ Remote Config بشكل دوري قبل أي إصدار جديد للتطبيق للتأكد من أن التطبيق الخاص بك والواجهة الخلفية لـ Remote Config متزامنة.

لتنزيل ملف يحتوي على قيم افتراضية:

راحة

curl --compressed -D headers -H "Authorization: Bearer token -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=file_format'

استخدم XML أو PLIST أو JSON كقيمة format ، بناءً على تنسيق الملف الذي تريد تنزيله.

وحدة تحكم Firebase

  1. في علامة التبويب " المعلمات " ، افتح قائمة ، وحدد تنزيل القيم الافتراضية .
  2. عند المطالبة ، انقر فوق زر الاختيار الذي يتوافق مع تنسيق الملف الذي تريد تنزيله ، ثم انقر فوق تنزيل الملف .

لمزيد من المعلومات حول استيراد القيم الافتراضية لـ Remote Config في التطبيق الخاص بك ، راجع: