نماذج "الإعداد عن بُعد" وتحديد الإصدارات


نماذج "الإعداد عن بُعد" هي مجموعات من الملفات بتنسيق JSON المعلمات والشروط التي أنشأتها لمشروعك على Firebase. إِنْتَ يمكنك إنشاء نماذج عملاء يجلب منها تطبيقك القيم الخادم، والتي يمكن لعملاء الخادم من خلالها جلب القيم.

يناقش هذا القسم نماذج العملاء. للتعرف على بيانات خاصة بالخادم النماذج، انقر على نماذج الخادم:

يمكنك تعديل النموذج وإدارته باستخدام وحدة تحكم Firebase التي تعرض محتويات النموذج بتنسيق رسومي في المعلَمات علامات التبويب الشروط.

يمكنك أيضًا استخدام صفحة واجهة برمجة التطبيقات REST API في ميزة "الإعداد عن بُعد" وحزمة تطوير البرامج (SDK) للمشرف أو واجهة سطر الأوامر في Firebase لتعديل قالب العميل الخاص بك.

في ما يلي مثال على ملف نموذج عميل:

      {
        "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"
        }
      }

يمكنك تنفيذ مهام إدارة الإصدارات التالية باستخدام "وحدة تحكُّم Firebase":

  • سرد جميع إصدارات النموذج المخزنة
  • استرداد نسخة محددة
  • العودة إلى إصدار عميل محدَّد
  • حذف نماذج "الإعداد عن بُعد" من قسم التغيير السجلّ صفحة

يمكنك أيضًا إدراج النماذج واسترداد النماذج والعودة إلى الإصدارات السابقة باستخدام واجهة سطر الأوامر في Firebase وواجهات برمجة التطبيقات في الخلفية لميزة "الإعداد عن بُعد"

هناك حدّ إجمالي أقصى يبلغ 300 نسخة مخزَّنة في الفترة منذ الإنشاء لكل نوع نموذج. (300 نموذج عميل و300 نموذج خادم)، بما في ذلك نماذج العملاء المخزّنة أرقام الإصدارات للنماذج المحذوفة. إذا نشرت أكثر من 300 لكل نوع من أنواع النماذج خلال مدة بقاء المشروع، ويتم حذف النُسخ الأقدم، مع الاحتفاظ بحد أقصى 300 نسخة من من هذا النوع.

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

يمكنك حذف نماذج "الإعداد عن بُعد" حسب الحاجة من سجلّ التغييرات صفحة على وحدة تحكم الإعداد عن بُعد.

إدارة إصدارات نموذج "الإعداد عن بُعد"

يوضِّح هذا القسم كيفية إدارة إصدارات ميزة "الإعداد عن بُعد". القالب.

لمزيد من التفاصيل حول كيفية الإنشاء، تعديل النماذج وحفظها آليًا، والاطلاع على تعديل "الإعداد عن بُعد" آليًا

إدراج جميع الإصدارات المخزَّنة من نموذج "الإعداد عن بُعد"

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

وحدة تحكُّم Firebase

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

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

Firebase CLI

firebase remoteconfig:versions:list

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

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());
}

REST

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

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

```json
{
  "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"
  }]
}
```

استرداد إصدار معيّن من نموذج "الإعداد عن بُعد"

يمكنك استرداد أي مخزن محدد من نموذج "الإعداد عن بُعد". لاسترداد نموذج مخزَّن :الإصدار:

وحدة تحكُّم Firebase

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

يمكنك الاطّلاع على الفرق المفصل عن الإصدار المحدَّد حاليًا وأي إصدار آخر بتمرير مؤشر الماوس فوق قائمة السياقات لأي نسخة غير محددة واختَر المقارنة مع الإصدار المحدّد

Firebase CLI

firebase remoteconfig:get -v VERSION_NUMBER

وبشكلٍ اختياري، يمكنك كتابة الناتج في ملف محدّد باستخدام -o, FILENAME.

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());

REST

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:rollback -v VERSION_NUMBER

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());
  }
}

REST

للعودة إلى نموذج "الإعداد عن بُعد" المُخزَّن، يمكنك إصدار طلب 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}'

يتضمن الرد محتوى النموذج المخزَّن والنشط الآن، بالإضافة إلى البيانات الوصفية للإصدار الجديد.

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

حذف نموذج "الإعداد عن بُعد"

يمكنك حذف نماذج "الإعداد عن بُعد" من وحدة تحكُّم Firebase. إلى حذف نموذج "الإعداد عن بُعد":

1- من "الإعداد عن بُعد" المَعلمات الصفحة، انقر على سجلّ التغييرات:
  1. بدّل إلى النموذج الذي تريد حذفه، وانقر على المزيد، ثم اختيار حذف

  2. عندما يُطلب منك تأكيد الحذف، انقر على حذف.

تنزيل نماذج "الإعداد عن بُعد" ونشرها

نزِّل نماذج "الإعداد عن بُعد" وانشرها لدمجها في التحكم في المصادر وإنشاء الأنظمة، والتشغيل الآلي لتحديثات التهيئة، والاحتفاظ بالمعلمات والقيم متزامنة بين المشروعات المتعددة.

يمكنك تنزيل نموذج "الإعداد عن بُعد" النشِط حاليًا. آليًا أو يمكنك بعد ذلك تحديث تصدير ملف JSON ونشره على المشروع نفسه، أو نشره على موقع جديد المشروع الحالي.

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

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

المَعلمات وقيم المَعلمات التي تم إنشاؤها تحديدًا كخيارات منتج في لا يتم تضمين تجربة اختبار A/B في النماذج التي يتم تصديرها.

لتصدير نماذج "الإعداد عن بُعد" واستيرادها:

  1. نزِّل نموذج "الإعداد عن بُعد" الحالي.
  2. التحقّق من صحة نموذج "الإعداد عن بُعد"
  3. نشر نموذج "الإعداد عن بُعد".

تنزيل نموذج "الإعداد عن بُعد" الحالي

استخدِم ما يلي لتنزيل نموذج "الإعداد عن بُعد" النشط في تنسيق JSON:

وحدة تحكُّم Firebase

  1. من مَعلمات أو شروط "الإعداد عن بُعد" ، وافتح القائمة، اختَر تنزيل ملف الإعداد الحالي.
  2. انقر على تنزيل ملف الإعداد واختَر الموقع الذي تريده عندما يُطلب منك ذلك تريد حفظ الملف، ثم انقر على حفظ.

Firebase CLI

firebase remoteconfig:get -o filename

Node.js

function getTemplate() {
  var config = admin.remoteConfig();
  config.getTemplate()
      .then(function (template) {
        console.log('ETag from server: ' + template.etag);
        var templateStr = JSON.stringify(template);
        fs.writeFileSync('config.json', templateStr);
      })
      .catch(function (err) {
        console.error('Unable to get template');
        console.error(err);
      });
}

جافا

Template template = FirebaseRemoteConfig.getInstance().getTemplateAsync().get();
// See the ETag of the fetched template.
System.out.println("ETag from server: " + template.getETag());

REST

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

ينتج عن هذا الأمر حمولة JSON في ملف واحد وتصدر العناوين (بما في ذلك ETag) إلى ملف headers منفصل.

التحقّق من صحة نموذج "الإعداد عن بُعد"

يمكنك التحقّق من صحة تعديلات النموذج قبل نشرها باستخدام SDK لمشرف Firebase أو REST API. يتم التحقّق من صحة "النماذج" أيضًا عند محاولة للنشر من واجهة سطر الأوامر في Firebase أو وحدة تحكُّم Firebase.

تتحقق عملية التحقق من صحة النموذج من عدم وجود أخطاء مثل المفاتيح المكررة المعلمات والشروط، أو أسماء شروط غير صالحة، أو شروط غير موجودة، أو علامات ETag ذات تنسيق غير صحيح. على سبيل المثال، قد يتضمن طلب يحتوي على أكثر من الحد المسموح به عدد المفاتيح — 2000 — سيؤدي إلى عرض رسالة الخطأ، Param count too large.

Node.js

function validateTemplate(template) {
  admin.remoteConfig().validateTemplate(template)
      .then(function (validatedTemplate) {
        // The template is valid and safe to use.
        console.log('Template was valid and safe to use');
      })
      .catch(function (err) {
        console.error('Template is invalid and cannot be published');
        console.error(err);
      });
}

جافا

try {
  Template validatedTemplate = FirebaseRemoteConfig.getInstance()
          .validateTemplateAsync(template).get();
  System.out.println("Template was valid and safe to use");
} catch (ExecutionException e) {
  if (e.getCause() instanceof FirebaseRemoteConfigException) {
    FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause();
    System.out.println("Template is invalid and cannot be published");
    System.out.println(rcError.getMessage());
  }
}

REST

التحقّق من صحة تعديلات النماذج من خلال إلحاق مَعلمة عنوان URL ?validate_only=true في طلب النشر

curl --compressed -H "Content-Type: application/json; UTF8" -H "If-Match: last-returned-etag" -H "Authorization: Bearer token" -X PUT https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig?validate_only=true -d @filename

إذا تم التحقق من صحة القالب بنجاح، فإن أمر curl سيعرض نموذج JSON الذي أرسلته، وفي ملف headers المحفوظ، ستجد حالة HTTP/2 200 وعلامة ETag معدَّلة باللاحقة -0. إذا كان لم يتم التحقق من صحة القالب، فسيظهر لك خطأ التحقق في استجابة JSON وملف headers سيحتوي ملف headers على استجابة ليست 200 (بدون علامة ETag).

نشر نموذج "الإعداد عن بُعد"

بعد تنزيل نموذج وإجراء أي تغييرات مطلوبة على محتوى JSON والتحقق منه، فيمكنك نشره في المشروع.

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

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

استخدِم الأوامر التالية لنشر النموذج:

وحدة تحكُّم Firebase

  1. من مَعلمات أو شروط "الإعداد عن بُعد" ، افتح القائمة، واختَر نشر من ملف.
  2. انقر على تصفّح عندما يُطلب منك ذلك، ثم انتقِل إلى ملف "الإعداد عن بُعد" الذي تريد نشره، ثم انقر على اختيار.
  3. سيتم التحقق من صحة الملف، وفي حالة نجاحه، يمكنك النقر نشر لإتاحة الإعدادات على الفور التطبيقات والمستخدمين.

Node.js

function publishTemplate() {
  var config = admin.remoteConfig();
  var template = config.createTemplateFromJSON(
      fs.readFileSync('config.json', 'UTF8'));
  config.publishTemplate(template)
      .then(function (updatedTemplate) {
        console.log('Template has been published');
        console.log('ETag from server: ' + updatedTemplate.etag);
      })
      .catch(function (err) {
        console.error('Unable to publish template.');
        console.error(err);
      });
}

جافا

try {
  Template publishedTemplate = FirebaseRemoteConfig.getInstance()
          .publishTemplateAsync(template).get();
  System.out.println("Template has been published");
  // See the ETag of the published template.
  System.out.println("ETag from server: " + publishedTemplate.getETag());
} catch (ExecutionException e) {
  if (e.getCause() instanceof FirebaseRemoteConfigException) {
    FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause();
    System.out.println("Unable to publish template.");
    System.out.println(rcError.getMessage());
  }
}

REST

curl --compressed -H "Content-Type: application/json; UTF8" -H "If-Match: last-returned-etag" -H "Authorization: Bearer token" -X PUT https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -d @filename

بالنسبة إلى أمر curl هذا، يمكنك تحديد المحتوى باستخدام الرمز "@". الحرف متبوعًا باسم الملف.

يتم تضمين عمليات التخصيص والشروط لميزة "الإعداد عن بُعد" في القوالب التي تم تنزيلها، لذلك من المهم أن تكون على دراية بما يلي القيود عند محاولة النشر في مشروع مختلف:

  • لا يمكن استيراد التخصيصات من مشروع إلى آخر.

    على سبيل المثال، إذا كانت عمليات التخصيص مفعّلة في مشروعك تنزيل قالب وتعديله، فيمكنك نشره على ولكن لا يمكنك نشره في مشروع آخر ما لم تحذفه التخصيصات من القالب.

  • يمكن استيراد الشروط من مشروع إلى آخر، ولكن لاحظ أن أي قيم شرطية محددة (مثل أرقام تعريف التطبيقات أو شرائح الجمهور)، يجب أن تكون موجودة في المشروع المستهدف قبل النشر.

    على سبيل المثال، إذا كانت لديك معلمة "الإعداد عن بُعد" تستخدم شرطًا تحدّد فيه القيمة iOS للنظام الأساسي، فيمكن نشر النموذج على مشروع آخر، لأن قيم المنصة هي نفسها لأي مشروع. ومع ذلك، إذا كان يحتوي على شرط يعتمد على رقم تعريف تطبيق أو مستخدم معيّن جمهور غير موجود في المشروع المستهدف، فستفشل عملية التحقق.

  • إذا كان النموذج الذي تخطط لنشره يحتوي على شروط تعتمد على "إحصاءات Google"، يجب تفعيل "إحصاءات Google" في الهدف مشروعك.

تنزيل الإعدادات التلقائية لنموذج "الإعداد عن بُعد"

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

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

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

ننصحك بتنزيل الإعدادات التلقائية لميزة "الإعداد عن بُعد" بشكل دوري قبل أي جهاز جديد إصدار التطبيق لضمان بقاء تطبيقك وواجهة "الإعداد عن بُعد" الخلفية المزامنة.

لتنزيل ملف يحتوي على الإعدادات التلقائية للنموذج:

REST

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. انقر على زر الاختيار المقابل للملف عندما يُطلب منك ذلك. التنسيق الذي تريد تنزيله ثم انقر على تنزيل الملف.

لمزيد من المعلومات حول استيراد القيم التلقائية لميزة "الإعداد عن بُعد" إلى يمكنك الاطّلاع على: