قالب های پیکربندی از راه دور و نسخه سازی


قالب‌های Remote Config مجموعه‌ای از پارامترها و شرایط با قالب JSON هستند که برای پروژه Firebase خود ایجاد کرده‌اید. می‌توانید قالب‌های کلاینت ایجاد کنید، که برنامه شما مقادیر را از آن‌ها واکشی می‌کند، و الگوهای سرور ، که مشتریان سرور می‌توانند مقادیر را از آن‌ها واکشی کنند.

این بخش در مورد الگوهای مشتری بحث می کند. برای آشنایی با الگوهای خاص سرور، روی الگوهای سرور کلیک کنید.

شما با استفاده از کنسول Firebase که محتویات قالب را در قالب گرافیکی نمایش می دهد، الگو را تغییر داده و مدیریت می کنید.زبانه های پارامترها و شرایط

همچنین می توانید از Remote Config REST API و Admin SDK یا Firebase CLI برای تغییر و مدیریت الگوی مشتری خود استفاده کنید.

در اینجا نمونه ای از فایل قالب سرور آورده شده است:

{
  "parameters": {
    "preamble_prompt": {
      "defaultValue": {
        "value": "You are a helpful assistant who knows everything there is to know about Firebase! "
      },
      "description": "Add this prompt to the user's prompt",
      "valueType": "STRING"
    },
    "model_name": {
      "defaultValue": {
        "value": "gemini-pro-test"
      },
      "valueType": "STRING"
    },
    "generation_config": {
      "defaultValue": {
        "value": "{\"temperature\": 0.9, \"maxOutputTokens\": 2048, \"topP\": 0.9, \"topK\": 20}"
      },
      "valueType": "JSON"
    },
  },
  "version": {
    "versionNumber": "19",
    "isLegacy": true
  }
}

شما می توانید این وظایف مدیریت نسخه را با کنسول Firebase انجام دهید:

  • لیست تمام نسخه های قالب ذخیره شده
  • یک نسخه خاص را بازیابی کنید
  • به یک نسخه مشتری خاص برگردید
  • الگوهای Remote Config را از صفحه Change history حذف کنید

در مجموع محدودیت 300 نسخه ذخیره شده مادام العمر برای هر نوع الگو (300 قالب مشتری و 300 الگوی سرور) وجود دارد که شامل شماره نسخه های ذخیره شده برای الگوهای حذف شده است. اگر بیش از 300 نسخه الگو در هر نوع الگو در طول عمر پروژه منتشر کنید، نسخه های اولیه حذف می شوند و حداکثر 300 نسخه از آن نوع حفظ می شود.

هر بار که پارامترها را به‌روزرسانی می‌کنید، Remote Config یک الگوی Remote Config نسخه جدید ایجاد می‌کند و الگوی قبلی را به‌عنوان نسخه‌ای ذخیره می‌کند که می‌توانید در صورت نیاز آن را بازیابی یا به آن برگردانید. شماره نسخه ها به ترتیب از مقدار اولیه ذخیره شده توسط Remote Config افزایش می یابد. همه الگوها شامل یک فیلد version همانطور که نشان داده شده است، حاوی ابرداده در مورد آن نسخه خاص است.

می توانید الگوهای Remote Config را در صورت نیاز از قسمت حذف کنیدتاریخچه را تغییر دهیدصفحه در کنسول Remote Config .

نسخه های قالب Remote Config را مدیریت کنید

این بخش نحوه مدیریت نسخه‌های الگوی Remote Config را توضیح می‌دهد.

تمام نسخه های ذخیره شده قالب Remote Config را فهرست کنید

می توانید لیستی از تمام نسخه های ذخیره شده قالب Remote Config را بازیابی کنید. برای انجام این کار:

کنسول Firebase

در برگه پارامترها ، نماد "ساعت" نمایش داده شده در بالا سمت راست را انتخاب کنید. این صفحه تاریخچه تغییر را باز می کند که تمام نسخه های ذخیره شده الگو را در منوی لیست در سمت راست فهرست می کند.

جزئیات نمایش داده شده برای هر نسخه ذخیره شده شامل اطلاعاتی در مورد این است که آیا تغییرات از کنسول، با REST API، از یک بازگشت، یا تغییرات تدریجی ناشی از ذخیره اجباری الگو بوده است.

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

استراحت

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

یک نسخه خاص از الگوی Remote Config را بازیابی کنید

می توانید هر نسخه ذخیره شده خاصی از الگوی Remote Config را بازیابی کنید. برای بازیابی نسخه قالب ذخیره شده:

کنسول Firebase

به طور پیش فرض، پنجره جزئیات در تب Change history ، الگوی فعال فعلی را نمایش می دهد. برای مشاهده جزئیات نسخه دیگری در لیست، آن را از منوی سمت راست انتخاب کنید.

می‌توانید با نگه داشتن ماوس بر روی منوی زمینه برای هر نسخه انتخاب‌نشده و انتخاب مقایسه با نسخه انتخاب‌شده، تفاوت دقیق نسخه انتخاب‌شده فعلی و هر نسخه ذخیره‌شده دیگری را مشاهده کنید.

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

استراحت

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 می تواند الگوی فعال فعلی را بازیابی کند.

به یک نسخه ذخیره شده خاص از الگوی Remote Config برگردید

می توانید به هر نسخه ذخیره شده الگو برگردید. برای برگرداندن یک الگو:

کنسول 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());
  }
}

استراحت

برای بازگشت به یک الگوی Remote Config ذخیره شده، یک 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 به قالب فعال تبدیل می شود.

یک الگوی Remote Config را حذف کنید

می توانید الگوهای Remote Config را از کنسول Firebase حذف کنید. برای حذف یک الگوی Remote Config :

1. از صفحه Remote Config Parameters ، روی Change history کلیک کنید.
  1. به قالبی که می‌خواهید حذف کنید، روی More کلیک کنید، سپس Delete را انتخاب کنید.

  2. هنگامی که از شما خواسته شد تا حذف را تأیید کنید، روی Delete کلیک کنید.

قالب های Remote Config را دانلود و منتشر کنید

قالب‌های Remote Config را دانلود و منتشر کنید تا آنها را در سیستم‌های کنترل منبع خود ادغام کنید، به‌روزرسانی‌های پیکربندی را خودکار کنید، و پارامترها و مقادیر را در چندین پروژه همگام کنید.

می توانید الگوی Remote Config فعال فعلی را دانلود کنیداز کنسول Firebase .سپس می توانید فایل JSON صادر شده را به روز کنید و آن را در همان پروژه منتشر کنید، یا آن را در یک پروژه جدید یا موجود منتشر کنید.

فرض کنید چندین پروژه دارید که نشان دهنده مراحل مختلف چرخه عمر توسعه نرم افزار شما هستند، مانند محیط های توسعه، آزمایش، مرحله بندی و تولید. در این صورت، می توانید یک قالب کاملاً آزمایش شده را از محیط صحنه سازی خود به محیط تولید خود با دانلود آن از پروژه صحنه سازی خود و انتشار آن در پروژه تولید خود تبلیغ کنید.

همچنین می‌توانید از این روش برای انتقال پیکربندی‌ها از یک پروژه به پروژه دیگر یا پر کردن یک پروژه جدید با پارامترها و مقادیر از یک پروژه دیگر استفاده کنید.

پارامترها و مقادیر پارامتر ایجاد شده به‌طور خاص به‌عنوان انواع در آزمایش A/B Testing در قالب‌های صادر شده گنجانده نمی‌شوند.

برای صادرات و وارد کردن الگوهای Remote Config :

  1. قالب کنونی Remote Config Config را دانلود کنید .
  2. الگوی Remote Config را اعتبارسنجی کنید .
  3. قالب Remote Config را منتشر کنید .

الگوی پیکربندی از راه دور فعلی را دانلود کنید

برای دانلود قالب فعال Remote Config با فرمت JSON از موارد زیر استفاده کنید:

کنسول Firebase

  1. از تب Remote Config Parameters یا Conditions ، منوی را باز کرده و دانلود فایل پیکربندی فعلی را انتخاب کنید.
  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());

استراحت

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

این دستور payload JSON را به یک فایل و هدرها (از جمله ETag) را به یک فایل headers جداگانه خروجی می دهد.

الگوی Remote Config را اعتبارسنجی کنید

می‌توانید به‌روزرسانی‌های الگوی خود را قبل از انتشار با استفاده از Firebase Admin SDK یا REST API تأیید کنید. همچنین زمانی که می‌خواهید از Firebase CLI یا 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());
  }
}

استراحت

اعتبارسنجی به‌روزرسانی‌های الگو را با افزودن پارامتر 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 شما حاوی پاسخی غیر 200 (و بدون ETag) خواهد بود.

قالب Remote Config را منتشر کنید

پس از دانلود یک الگو، ایجاد هرگونه تغییر مورد نیاز در محتوای JSON و اعتبارسنجی آن، می توانید آن را در یک پروژه منتشر کنید.

انتشار یک الگو، کل قالب پیکربندی موجود را با فایل به روز شده جایگزین می کند و نسخه قالب را یک به یک افزایش می دهد. از آنجایی که کل پیکربندی جایگزین شده است، اگر پارامتری را از فایل JSON حذف کنید و آن را منتشر کنید، پارامتر از سرور حذف می‌شود و دیگر در دسترس مشتریان نیست.

پس از انتشار، تغییرات در پارامترها و مقادیر بلافاصله در دسترس برنامه ها و کاربران شما قرار می گیرد. در صورت لزوم، می توانید به نسخه قبلی برگردید .

برای انتشار قالب خود از دستورات زیر استفاده کنید:

کنسول Firebase

  1. از تب Remote Config Parameters یا Conditions ، منوی را باز کرده و گزینه Publish from a file را انتخاب کنید.
  2. هنگامی که از شما خواسته شد، روی Browse کلیک کنید، به آن بروید و فایل Remote Config را که می خواهید منتشر کنید انتخاب کنید، سپس روی Select کلیک کنید.
  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());
  }
}

استراحت

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 ، می توانید با استفاده از کاراکتر "@" و به دنبال آن نام فایل، محتوا را مشخص کنید.

شخصی‌سازی‌ها و شرایط Remote Config در قالب‌های دانلود شده گنجانده شده‌اند، بنابراین هنگام تلاش برای انتشار در پروژه‌ای دیگر، مهم است که از محدودیت‌های زیر آگاه باشید:

  • شخصی سازی ها را نمی توان از پروژه ای به پروژه دیگر وارد کرد.

    برای مثال، اگر شخصی‌سازی‌ها را در پروژه خود فعال کرده‌اید و یک الگو را دانلود و ویرایش کنید، می‌توانید آن را در همان پروژه منتشر کنید، اما نمی‌توانید آن را در پروژه دیگری منتشر کنید، مگر اینکه شخصی‌سازی‌ها را از الگو حذف کنید.

  • شرایط را می توان از پروژه ای به پروژه دیگر وارد کرد، اما توجه داشته باشید که هر مقدار شرطی خاص (مانند شناسه های برنامه یا مخاطبان)، باید قبل از انتشار در پروژه هدف وجود داشته باشد.

    برای مثال، اگر یک پارامتر Remote Config دارید که از شرطی استفاده می‌کند که مقدار پلتفرم iOS را مشخص می‌کند، الگو را می‌توان در پروژه دیگری منتشر کرد، زیرا مقادیر پلتفرم برای هر پروژه یکسان است. با این حال، اگر دارای شرایطی باشد که متکی به شناسه برنامه خاص یا مخاطبان کاربر است که در پروژه هدف وجود ندارد، اعتبارسنجی ناموفق خواهد بود.

  • اگر قالبی که قصد انتشار آن را دارید دارای شرایطی باشد که به Google Analytics متکی است، Analytics باید در پروژه هدف فعال باشد.

دانلود پیش فرض قالب Remote Config

از آنجایی که ممکن است برنامه شما همیشه به اینترنت متصل نباشد، باید مقادیر پیش‌فرض برنامه سمت سرویس گیرنده را برای همه پارامترهای Remote Config پیکربندی کنید. همچنین باید به صورت دوره‌ای مقادیر پیش‌فرض مشتری برنامه و مقادیر پارامتر پیش‌فرض Remote Config را همگام‌سازی کنید، زیرا ممکن است در طول زمان تغییر کنند.

همانطور که در پیوندهای مخصوص پلتفرم در انتهای این بخش توضیح داده شده است، می‌توانید به صورت دستی این پیش‌فرض‌ها را در برنامه خود تنظیم کنید یا می‌توانید با دانلود فایل‌هایی که فقط شامل جفت‌های کلید-مقدار برای همه پارامترها و مقادیر پیش‌فرض آن‌ها هستند، این فرآیند را ساده‌سازی کنید. الگوی Remote Config فعال سپس می توانید این فایل را در پروژه خود قرار دهید و برنامه خود را برای وارد کردن این مقادیر پیکربندی کنید.

می‌توانید این فایل‌ها را با فرمت XML برای برنامه‌های اندروید، فرمت فهرست اموال (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 به برنامه خود، ببینید: