Check out what’s new from Firebase at Google I/O 2022. Learn more

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

الگوی Remote Config مجموعه ای از پارامترها و شرایط با فرمت JSON در سمت سرور است که برای پروژه Firebase خود ایجاد کرده اید. می توانید با استفاده از کنسول Firebase که محتویات قالب را به صورت گرافیکی در زبانه های پارامترها و شرایط نمایش می دهد، الگو را تغییر داده و مدیریت کنید. همچنین می‌توانید از Remote Config Backend API یا 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، یا Remote Config backend API، می توانید این وظایف مدیریت نسخه را انجام دهید:

  • لیست تمام نسخه های قالب ذخیره شده
  • یک نسخه خاص را بازیابی کنید
  • به یک نسخه خاص برگردید

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

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

این بخش نحوه مدیریت نسخه‌های الگوی Remote Config را توضیح می‌دهد. برای جزئیات بیشتر در مورد نحوه ایجاد، تغییر و ذخیره الگوها به صورت برنامه‌نویسی، به اصلاح پیکربندی از راه دور به صورت برنامه‌ریزی مراجعه کنید.

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

می توانید لیستی از تمام نسخه های ذخیره شده قالب 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 API، از یک بازگشت، یا تغییرات تدریجی ناشی از ذخیره اجباری الگو بوده است.

Firebase CLI

firebase remoteconfig:versions:list

از گزینه --limit برای محدود کردن تعداد نسخه های بازگردانده شده استفاده کنید. برای واکشی همه نسخه‌ها، «0» را پاس کنید.

فهرست الگوها شامل متادیتا برای همه نسخه‌های ذخیره‌شده، از جمله زمان به‌روزرسانی، کاربری که آن را ساخته است، و اینکه آیا از طریق کنسول یا REST API ساخته شده است. در اینجا مثالی از یک عنصر نسخه آورده شده است:

{
  "versions": [{
    "version_number": "6",
    "update_time": "2018-05-12T02:38:54Z",
    "update_user": {
      "email": "jane@developer.org",
    },
    "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

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

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

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

باقی مانده

برای بازگشت به یک الگوی 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}'

پاسخ حاوی محتویات قالب ذخیره شده فعال است، همراه با ابرداده نسخه جدید آن.

کنسول Firebase

برای نسخه‌های قالب قبلی واجد شرایط برای بازگشت، یک دکمه گزینه برای بازگشت به آن نسخه در سمت راست بالای صفحه تاریخچه تغییر نمایش داده می‌شود. فقط اگر مطمئن هستید که می‌خواهید به آن نسخه برگردید و فوراً از آن مقادیر برای همه برنامه‌ها و کاربران استفاده کنید، روی آن کلیک کرده و تأیید کنید.

Firebase CLI

firebase remoteconfig:rollback -v VERSION_NUMBER

توجه داشته باشید که این عملیات بازگشت به طور موثر یک نسخه شماره گذاری شده جدید ایجاد می کند. به عنوان مثال، بازگشت از نسخه 10 به نسخه 6 به طور مؤثر یک کپی جدید از نسخه 6 ایجاد می کند که تنها با نسخه اصلی تفاوت دارد که شماره نسخه آن 11 است. نسخه اصلی 6 هنوز ذخیره می شود، با این فرض که منقضی نشده است، و نسخه 11 به قالب فعال تبدیل می شود.

پیش فرض های قالب 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 به برنامه خود، ببینید: