Remote Config را با برنامه تغییر دهید

پیکربندی قالب‌ها با استفاده از Admin SDK، REST API و Firebase CLI. page_type: guide

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

با استفاده از Remote Config REST API ، Admin SDK ها یا Firebase CLI که در این راهنما توضیح داده شده است، می‌توانید مدیریت قالب در کنسول Firebase را کنار بگذارید تا تغییرات Remote Config را مستقیماً در فرآیندهای خود ادغام کنید. به عنوان مثال، با APIهای backend Remote Config ، می‌توانید:

  • به‌روزرسانی‌های Remote Config را زمان‌بندی کنید . با استفاده از فراخوانی‌های API همراه با یک cron job، می‌توانید مقادیر Remote Config در یک برنامه منظم تغییر دهید.
  • مقادیر پیکربندی را به صورت دسته‌ای وارد کنید تا به طور موثر از سیستم اختصاصی خود به Firebase Remote Config منتقل شوید.
  • از Remote Config با Cloud Functions for Firebase استفاده کنید و مقادیر برنامه خود را بر اساس رویدادهایی که در سمت سرور اتفاق می‌افتند تغییر دهید. به عنوان مثال، می‌توانید از Remote Config برای تبلیغ یک ویژگی جدید در برنامه خود استفاده کنید و سپس پس از تشخیص تعامل کافی افراد با ویژگی جدید، آن تبلیغ را به طور خودکار خاموش کنید.

نموداری که تعامل بخش مدیریت پیکربندی از راه دور با ابزارها و سرورهای سفارشی را نشان می‌دهد

بخش‌های بعدی این راهنما، عملیاتی را که می‌توانید با استفاده از APIهای بک‌اند Remote Config انجام دهید، شرح می‌دهد.

تغییر Remote Config با استفاده از Firebase Admin SDK

Admin SDK مجموعه‌ای از کتابخانه‌های سرور است که به شما امکان می‌دهد از محیط‌های دارای امتیاز با Firebase تعامل داشته باشید. Admin SDK علاوه بر انجام به‌روزرسانی‌ها در Remote Config ، امکان تولید و تأیید توکن‌های احراز هویت Firebase و خواندن و نوشتن از Realtime Database فراهم می‌کند. برای کسب اطلاعات بیشتر در مورد پیش‌نیازها و تنظیمات Admin SDK ، به بخش «افزودن Firebase Admin SDK به سرور خود» مراجعه کنید.

برای بررسی نمونه کدی که این وظایف را با استفاده از Admin SDK انجام می‌دهد، به یکی از برنامه‌های شروع سریع زیر مراجعه کنید:

در یک جریان معمول Remote Config ، ممکن است الگوی فعلی را دریافت کنید، برخی از پارامترها یا گروه‌های پارامتر و شرایط را تغییر دهید، الگو را اعتبارسنجی کنید و سپس آن را منتشر کنید. قبل از انجام این فراخوانی‌های API، باید درخواست‌ها را از SDK تأیید کنید.

مقداردهی اولیه SDK و تأیید درخواست‌های API

وقتی Admin SDK بدون هیچ پارامتری مقداردهی اولیه می‌کنید، SDK از اعتبارنامه‌های پیش‌فرض برنامه گوگل استفاده می‌کند و گزینه‌ها را از متغیر محیطی FIREBASE_CONFIG می‌خواند. اگر محتوای متغیر FIREBASE_CONFIG با یک { شروع شود، به عنوان یک شیء JSON تجزیه می‌شود. در غیر این صورت، SDK فرض می‌کند که رشته، نام یک فایل JSON حاوی گزینه‌ها است.

برای مثال:

نود جی اس

const admin = require('firebase-admin');
admin.initializeApp();

جاوا

FileInputStream serviceAccount = new FileInputStream("service-account.json");
FirebaseOptions options = FirebaseOptions.builder()
        .setCredentials(GoogleCredentials.fromStream(serviceAccount))
        .build();
FirebaseApp.initializeApp(options);

الگوی فعلی Remote Config را دریافت کنید

هنگام کار با قالب‌های Remote Config ، به خاطر داشته باشید که آنها نسخه‌بندی شده‌اند و هر نسخه از زمان ایجاد تا زمانی که آن را با یک به‌روزرسانی جایگزین می‌کنید، طول عمر محدودی دارد: ۹۰ روز، با محدودیت کلی ۳۰۰ نسخه ذخیره شده. برای اطلاعات بیشتر به Templates and Versioning مراجعه کنید.

شما می‌توانید از APIهای بک‌اند برای دریافت نسخه فعال فعلی الگوی Remote Config در قالب JSON استفاده کنید.

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

برای دریافت الگو:

نود جی اس

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

پارامترهای Remote Config را تغییر دهید

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

نود جی اس

function addParameterToGroup(template) {
  template.parameterGroups['new_menu'].parameters['spring_season'] = {
    defaultValue: {
      useInAppDefault: true
    },
    description: 'spring season menu visibility.',
  };
}

جاوا

template.getParameterGroups().get("new_menu").getParameters()
        .put("spring_season", new Parameter()
                .setDefaultValue(ParameterValue.inAppDefault())
                .setDescription("spring season menu visibility.")
        );

این API به شما امکان می‌دهد پارامترهای جدید و گروه‌های پارامتر ایجاد کنید، یا مقادیر پیش‌فرض، مقادیر شرطی و توضیحات را تغییر دهید. در همه موارد، باید پس از انجام تغییرات، الگو را صریحاً منتشر کنید.

تغییر شرایط Remote Config

شما می‌توانید شرایط و مقادیر شرطی Remote Config به صورت برنامه‌نویسی تغییر داده و اضافه کنید. برای مثال، برای اضافه کردن یک شرط جدید:

نود جی اس

function addNewCondition(template) {
  template.conditions.push({
    name: 'android_en',
    expression: 'device.os == \'android\' && device.country in [\'us\', \'uk\']',
    tagColor: 'BLUE',
  });
}

جاوا

template.getConditions().add(new Condition("android_en",
        "device.os == 'android' && device.country in ['us', 'uk']", TagColor.BLUE));

در همه موارد، شما باید پس از انجام تغییرات، الگو را صریحاً منتشر کنید.

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

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

به صورت اختیاری، می‌توانید قبل از انتشار به‌روزرسانی‌های خود، آنها را اعتبارسنجی کنید، همانطور که نشان داده شده است:

نود جی اس

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

این فرآیند اعتبارسنجی، خطاهایی مانند کلیدهای تکراری برای پارامترها و شرایط، نام‌های نامعتبر شرایط یا شرایط ناموجود، یا برچسب‌های با قالب نادرست را بررسی می‌کند. برای مثال، درخواستی که حاوی بیش از تعداد مجاز کلیدها - ۲۰۰۰ - باشد، پیام خطای Param count too large را برمی‌گرداند.

الگوی Remote Config را منتشر کنید

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

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

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

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

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

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

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

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

نود جی اس

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

تغییر Remote Config با استفاده از REST API

این بخش قابلیت‌های اصلی Remote Config REST API را در https://firebaseremoteconfig.googleapis.com شرح می‌دهد. برای جزئیات کامل، به مرجع API مراجعه کنید.

دریافت توکن دسترسی برای احراز هویت و مجوزدهی درخواست‌های API

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

شما می‌توانید تمام حساب‌های سرویس مربوط به پروژه Firebase خود را در ... مشاهده کنید. > برگه حساب‌های سرویس .

برای تأیید اعتبار یک حساب کاربری سرویس و اجازه دسترسی آن به سرویس‌های Firebase، باید یک فایل کلید خصوصی با فرمت JSON ایجاد کنید.

برای ایجاد یک فایل کلید خصوصی برای حساب سرویس خود:

  1. در کنسول Firebase ، به مسیر زیر بروید: > برگه حساب‌های سرویس .

  2. روی «ایجاد کلید خصوصی جدید» کلیک کنید، سپس با کلیک روی «ایجاد کلید» تأیید کنید.

  3. فایل JSON حاوی کلید را به طور ایمن ذخیره کنید.

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

برای تنظیم متغیر محیطی:

متغیر محیطی GOOGLE_APPLICATION_CREDENTIALS روی مسیر فایل JSON که حاوی کلید حساب سرویس شماست، تنظیم کنید. این متغیر فقط برای جلسه پوسته فعلی شما اعمال می‌شود، بنابراین اگر یک جلسه جدید باز کردید، دوباره متغیر را تنظیم کنید.

لینوکس یا macOS

export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"

ویندوز

با پاورشل:

$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"

پس از تکمیل مراحل فوق، اعتبارنامه‌های پیش‌فرض برنامه (ADC) قادر است به‌طور ضمنی اعتبارنامه‌های شما را تعیین کند و به شما امکان می‌دهد هنگام آزمایش یا اجرا در محیط‌های غیر گوگلی، از اعتبارنامه‌های حساب سرویس استفاده کنید.

از اعتبارنامه‌های Firebase خود به همراه کتابخانه Google Auth برای زبان مورد نظر خود استفاده کنید تا یک توکن دسترسی OAuth 2.0 کوتاه مدت دریافت کنید:

گره.js

 function getAccessToken() {
  return admin.credential.applicationDefault().getAccessToken()
      .then(accessToken => {
        return accessToken.access_token;
      })
      .catch(err => {
        console.error('Unable to get access token');
        console.error(err);
      });
}

در این مثال، کتابخانه کلاینت API گوگل، درخواست را با یک توکن وب JSON یا JWT احراز هویت می‌کند. برای اطلاعات بیشتر، به JSON web tokens مراجعه کنید.

پایتون

def _get_access_token():
  """Retrieve a valid access token that can be used to authorize requests.

  :return: Access token.
  """
  credentials = ServiceAccountCredentials.from_json_keyfile_name(
      'service-account.json', SCOPES)
  access_token_info = credentials.get_access_token()
  return access_token_info.access_token

جاوا

public static String getAccessToken() throws IOException {
  GoogleCredentials googleCredentials = GoogleCredentials
          .fromStream(new FileInputStream("service-account.json"))
          .createScoped(Arrays.asList(SCOPES));
  googleCredentials.refreshAccessToken();
  return googleCredentials.getAccessToken().getTokenValue();
}

پس از انقضای توکن دسترسی شما، متد به‌روزرسانی توکن به طور خودکار فراخوانی می‌شود تا توکن دسترسی به‌روزرسانی‌شده را بازیابی کند.

برای تأیید دسترسی به Remote Config ، دامنه https://www.googleapis.com/auth/firebase.remoteconfig را درخواست کنید.

الگوی Remote Config را تغییر دهید

هنگام کار با قالب‌های Remote Config ، به خاطر داشته باشید که آنها نسخه‌بندی شده‌اند و هر نسخه از زمان ایجاد تا زمانی که آن را با یک به‌روزرسانی جایگزین می‌کنید، طول عمر محدودی دارد: ۹۰ روز، با محدودیت کلی ۳۰۰ نسخه ذخیره شده. برای اطلاعات بیشتر به Templates and Versioning مراجعه کنید.

الگوی فعلی Remote Config را دریافت کنید

شما می‌توانید از APIهای بک‌اند برای دریافت نسخه فعال فعلی الگوی Remote Config در قالب JSON استفاده کنید.

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

از دستورات زیر استفاده کنید:

حلقه

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

این دستور، محتوای JSON را در یک فایل و هدرها (شامل Etag) را در یک فایل جداگانه خروجی می‌دهد.

درخواست HTTP خام

Host: firebaseremoteconfig.googleapis.com

GET /v1/projects/my-project-id/remoteConfig HTTP/1.1
Authorization: Bearer token
Accept-Encoding: gzip

این فراخوانی API، JSON زیر را به همراه یک هدر جداگانه که شامل ETag است و شما برای درخواست بعدی استفاده می‌کنید، برمی‌گرداند.

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

به صورت اختیاری، می‌توانید قبل از انتشار، به‌روزرسانی‌های خود را اعتبارسنجی کنید. با افزودن پارامتر ?validate_only=true به درخواست انتشار، به‌روزرسانی‌های قالب را اعتبارسنجی کنید. در پاسخ، کد وضعیت ۲۰۰ و یک etag به‌روزرسانی‌شده با پسوند -0 به این معنی است که به‌روزرسانی شما با موفقیت اعتبارسنجی شده است. هر پاسخی غیر از ۲۰۰ نشان می‌دهد که داده‌های JSON حاوی خطاهایی هستند که باید قبل از انتشار آنها را اصلاح کنید.

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

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

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

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

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

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

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

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

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

حلقه

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

درخواست HTTP خام

Host: firebaseremoteconfig.googleapis.com
PUT /v1/projects/my-project-id/remoteConfig HTTP/1.1
Content-Length: size
Content-Type: application/json; UTF8
Authorization: Bearer token
If-Match: expected ETag
Accept-Encoding: gzip
JSON_HERE

از آنجا که این یک درخواست نوشتن است، ETag توسط این دستور اصلاح می‌شود و ETag به‌روزرسانی‌شده در هدرهای پاسخ دستور PUT بعدی ارائه می‌شود.

تغییر شرایط Remote Config

شما می‌توانید شرایط و مقادیر شرطی Remote Config از طریق برنامه‌نویسی تغییر دهید. با REST API، قبل از انتشار الگو، باید مستقیماً الگو را ویرایش کنید تا شرایط را تغییر دهید.

{
  "conditions": [{
    "name": "android_english",
    "expression": "device.os == 'android' && device.country in ['us', 'uk']",
    "tagColor": "BLUE"
  }, {
    "name": "tenPercent",
    "expression": "percent <= 10",
    "tagColor": "BROWN"
  }],
  "parameters": {
    "welcome_message": {
      "defaultValue": {
        "value": "Welcome to this sample app"
      },
      "conditionalValues": {
        "tenPercent": {
          "value": "Welcome to this new sample app"
        }
      },
      "description": "The sample app's welcome message"
    },
    "welcome_message_caps": {
      "defaultValue": {
        "value": "false"
      },
      "conditionalValues": {
        "android_english": {
          "value": "true"
        }
      },
      "description": "Whether the welcome message should be displayed in all
      capital letters."
    }
  }
}

اصلاحات در قطعه کد قبلی ابتدا مجموعه‌ای از شرایط را تعریف می‌کنند و سپس مقادیر پیش‌فرض و مقادیر پارامتر مبتنی بر شرایط ( مقادیر شرطی ) را برای هر پارامتر تعریف می‌کنند. آنها همچنین یک توضیح اختیاری برای هر عنصر اضافه می‌کنند؛ مانند نظرات کد، این توضیحات برای استفاده توسعه‌دهنده هستند و در برنامه نمایش داده نمی‌شوند. یک ETag نیز برای اهداف کنترل نسخه ارائه شده است.

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

کدهای خطای HTTP

کد وضعیت معنی
۲۰۰ با موفقیت به‌روزرسانی شد
۴۰۰ یک خطای اعتبارسنجی رخ داده است. برای مثال، درخواستی که حاوی بیش از تعداد مجاز کلیدها - ۲۰۰۰ - باشد، مقدار ۴۰۰ (درخواست نامناسب) را با پیام خطا، Param count too large برمی‌گرداند. همچنین، این کد وضعیت HTTPS می‌تواند در این دو حالت رخ دهد:
  • خطای عدم تطابق نسخه رخ داده است زیرا مجموعه مقادیر و شرایط از آخرین باری که مقدار ETag را بازیابی کرده‌اید، به‌روزرسانی شده‌اند. برای رفع این مشکل، باید از دستور GET برای دریافت یک الگوی جدید و مقدار ETag استفاده کنید، الگو را به‌روزرسانی کنید و سپس با استفاده از آن الگو و مقدار ETag جدید، ارسال کنید.
  • یک دستور PUT (درخواست به‌روزرسانی الگوی Remote Config ) بدون مشخص کردن سرآیند If-Match انجام شد.
۴۰۱ خطایی در مجوزدهی رخ داده است (هیچ توکن دسترسی ارائه نشده است یا API Firebase Remote Config REST در کنسول توسعه‌دهندگان ابری به پروژه شما اضافه نشده است)
۴۰۳ خطایی در احراز هویت رخ داده است (نشانه دسترسی اشتباهی ارائه شده است)
۵۰۰ یک خطای داخلی رخ داده است. در صورت بروز این خطا، یک تیکت پشتیبانی Firebase ثبت کنید.

کد وضعیت ۲۰۰ به این معنی است که الگوی Remote Config (پارامترها، مقادیر و شرایط پروژه) به‌روزرسانی شده و اکنون برای برنامه‌هایی که از این پروژه استفاده می‌کنند در دسترس است. سایر کدهای وضعیت نشان می‌دهند که الگوی Remote Config که قبلاً وجود داشته، هنوز معتبر است.

پس از ارسال به‌روزرسانی‌ها به قالب خود، به کنسول Firebase بروید تا تأیید کنید که تغییرات شما مطابق انتظار نمایش داده می‌شوند. این امر بسیار مهم است زیرا ترتیب شرط‌ها بر نحوه ارزیابی آنها تأثیر می‌گذارد (اولین شرطی که مقدار آن true باشد، اعمال می‌شود).

استفاده از ETag و به‌روزرسانی‌های اجباری

رابط برنامه‌نویسی کاربردی REST Remote Config REST API) از یک تگ موجودیت (ETag) برای جلوگیری از شرایط رقابتی و به‌روزرسانی‌های همپوشانی منابع استفاده می‌کند. برای کسب اطلاعات بیشتر در مورد ETagها، به ETag - HTTP مراجعه کنید.

برای REST API، گوگل توصیه می‌کند که ETag ارائه شده توسط جدیدترین دستور GET را ذخیره کنید و هنگام صدور دستورات PUT از مقدار ETag در هدر درخواست If-Match استفاده کنید. اگر دستور PUT شما منجر به کد وضعیت HTTPS 409 شود، باید یک دستور GET جدید صادر کنید تا ETag و الگوی جدیدی برای استفاده با دستور PUT بعدی خود دریافت کنید.

شما می‌توانید با مجبور کردن الگوی Remote Config به به‌روزرسانی به صورت زیر، ETag و محافظتی که ارائه می‌دهد را دور بزنید: If-Match: * . با این حال، این رویکرد توصیه نمی‌شود زیرا در صورت به‌روزرسانی الگوی Remote Config توسط چندین کلاینت، خطر از دست رفتن به‌روزرسانی‌های الگوی Remote Config شما وجود دارد. این نوع تداخل می‌تواند در صورت استفاده چندین کلاینت از API یا با به‌روزرسانی‌های متناقض از کلاینت‌های API و کاربران کنسول Firebase رخ دهد.

برای راهنمایی در مورد مدیریت نسخه‌های الگوی Remote Config ، به الگوهای Remote Config و نسخه‌بندی مراجعه کنید.

تغییر Remote Config با استفاده از Firebase CLI

رابط خط Firebase به شما امکان می‌دهد قالب‌های Remote Config را بررسی، مدیریت و به حالت اولیه برگردانید، و همچنین آزمایش‌ها و به‌روزرسانی‌های Remote Config را مستقیماً از خط فرمان فهرست، بررسی و حذف کنید.

پیش‌نیازها و تنظیمات

  1. رابط خط فرمان Firebase CLI) را نصب کنید یا آن را به آخرین نسخه به‌روزرسانی کنید .

  2. وارد Firebase شوید:

    firebase login
  3. پروژه فعال خود را تنظیم کنید یا با هر دستور --project PROJECT_ID مشخص کنید:

    firebase use PROJECT_ID

مطمئن شوید که حساب کاربری یا حساب سرویس شما مجوزهای لازم IAM را دارد:

خلاصه دستورات CLI

فرماندهی توضیحات
firebase remoteconfig:versions:list نسخه‌های اخیر الگوی Remote Config را فهرست می‌کند.
firebase remoteconfig:get یک الگوی Remote Config دریافت می‌کند (به صورت اختیاری در یک فایل می‌نویسد).
firebase remoteconfig:rollback الگوی Remote Config را به نسخه قبلی برمی‌گرداند.
firebase remoteconfig:experiments:list تمام آزمایش‌های Remote Config در پروژه را فهرست می‌کند.
firebase remoteconfig:experiments:get جزئیات یک آزمایش خاص Remote Config را دریافت می‌کند.
firebase remoteconfig:experiments:delete یک آزمایش خاص Remote Config حذف می‌کند.
firebase remoteconfig:rollouts:list تمام تنظیمات Remote Config در پروژه را لیست می‌کند.
firebase remoteconfig:rollouts:get جزئیات مربوط به یک رول‌اوت خاص Remote Config را دریافت می‌کند.
firebase remoteconfig:rollouts:delete یک بخش خاص Remote Config را حذف می‌کند.

تغییر قالب‌ها و نسخه‌های Remote Config

از دستورات زیر برای بررسی، دانلود و بازگرداندن قالب‌های Remote Config و تاریخچه نسخه‌های آنها استفاده کنید:

فهرست نسخه‌های قالب

به طور پیش‌فرض، 10 نسخه اخیر از الگوی Remote Config ، شامل شماره نسخه، زمان به‌روزرسانی، مبدا به‌روزرسانی، نوع به‌روزرسانی و updateUser را فهرست می‌کند.

firebase remoteconfig:versions:list [--limit NUMBER_OF_VERSIONS]
  • --limit NUMBER_OF_VERSIONS : حداکثر تعداد نسخه‌هایی که باید برگردانده شوند. برای برگرداندن تمام نسخه‌های موجود (تا سقف ۳۰۰ نسخه ذخیره شده) 0 را مشخص کنید.

مثال‌ها:

  • ۱۰ نسخه اخیر را فهرست کنید:

    firebase remoteconfig:versions:list
  • لیست تمام نسخه‌های موجود:

    firebase remoteconfig:versions:list --limit 0
  • ۵ نسخه اخیر را فهرست کنید:

    firebase remoteconfig:versions:list --limit 5

یک الگو دریافت کنید

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

firebase remoteconfig:get [-v, --version_number VERSION_NUMBER] [-o, --output FILENAME]
  • -v, --version_number VERSION_NUMBER : شماره نسخه قالبی که قرار است بازیابی شود. در صورت حذف، به طور پیش‌فرض آخرین نسخه در نظر گرفته می‌شود.
  • -o, --output FILENAME ‎: به جای چاپ در خروجی استاندارد، فایل JSON قالب را مستقیماً در مسیر مشخص شده می‌نویسد.

مثال‌ها:

  • نمایش الگوی فعال فعلی در ترمینال:

    firebase remoteconfig:get
  • قالب فعال فعلی را در یک فایل JSON دانلود کنید:

    firebase remoteconfig:get -o remote_config_template.json
  • دانلود یک نسخه تاریخی خاص (برای مثال، نسخه ۱۲) در یک فایل:

    firebase remoteconfig:get -v 12 -o remote_config_v12.json

یک الگو را به عقب برگردانید

الگوی فعال Remote Config را به نسخه قبلی برمی‌گرداند. این یک نسخه فعال جدید ایجاد می‌کند که محتوای آن با نسخه هدف یکسان است.

firebase remoteconfig:rollback [-v, --version_number VERSION_NUMBER] [--force]
  • -v, --version_number VERSION_NUMBER : شماره نسخه هدف برای بازگشت به آن. در صورت حذف، به طور پیش‌فرض به نسخه بلافاصله قبل (نسخه فعلی منهای ۱) برمی‌گردد.
  • --force : بلافاصله و بدون درخواست تأیید تعاملی ( Y/N ) عمل عقب‌گرد را انجام می‌دهد. برای خطوط لوله CI/CD و اسکریپت‌های خودکار مفید است.

مثال‌ها:

  • با تأیید تعاملی به نسخه قبلی برگردید:

    firebase remoteconfig:rollback
  • بدون هیچ پیغامی به نسخه ۸ برگردید:

    firebase remoteconfig:rollback -v 8 --force

آزمایش‌های A/B Testing را اصلاح کنید

از دستورات زیر برای فهرست کردن، بررسی و حذف آزمایش‌های Remote Config A/B Testing مستقیماً با رابط خط فرمان (CLI) استفاده کنید:

فهرست آزمایش‌ها

تمام آزمایش‌های Remote Config برای پروژه را به همراه فیلتر و صفحه‌بندی اختیاری فهرست می‌کند.

firebase remoteconfig:experiments:list [--filter EXPRESSION] [--pageSize NUMBER] [--pageToken TOKEN]
  • --filter EXPRESSION : عبارت فیلتر برای اعمال به لیست آزمایش.
  • --pageSize NUMBER : تعداد آزمایش‌هایی که باید در هر صفحه برگردانده شوند (پیش‌فرض ۱۰ است).
  • --pageToken TOKEN : توکن مربوط به آفست صفحه هنگام بازیابی نتایج صفحه‌بندی‌شده.

مثال:

firebase remoteconfig:experiments:list

جزئیات آزمایش را دریافت کنید

جزئیات کامل یک آزمایش Remote Config مشخص شده را دریافت می‌کند.

firebase remoteconfig:experiments:get EXPERIMENT_ID

مثال:

firebase remoteconfig:experiments:get exp_promo_discount_2026

حذف یک آزمایش

آزمایش Remote Config مشخص شده را حذف می‌کند.

firebase remoteconfig:experiments:delete EXPERIMENT_ID

مثال:

firebase remoteconfig:experiments:delete exp_promo_discount_2026

اصلاح تنظیمات Remote Config

از دستورات زیر برای فهرست کردن، بررسی و حذف مستقیم رول‌اوت‌های Remote Config با استفاده از رابط خط فرمان (CLI) استفاده کنید:

فهرست‌های منتشر شده

تمام تنظیمات Remote Config برای پروژه را به همراه فیلتر و صفحه‌بندی اختیاری فهرست می‌کند.

firebase remoteconfig:rollouts:list [--filter EXPRESSION] [--pageSize NUMBER] [--pageToken TOKEN]
  • --filter EXPRESSION : عبارت فیلتر برای اعمال به لیست خروجی.
  • --pageSize NUMBER : تعداد رول‌اوت‌هایی که در هر صفحه برگردانده می‌شوند (پیش‌فرض ۱۰).
  • --pageToken TOKEN : توکن مربوط به آفست صفحه هنگام بازیابی نتایج صفحه‌بندی‌شده.

مثال:

firebase remoteconfig:rollouts:list

جزئیات انتشار را دریافت کنید

جزئیات کامل مربوط به یک رول‌اوت مشخص‌شده‌ی Remote Config را دریافت می‌کند.

firebase remoteconfig:rollouts:get ROLLOUT_ID

مثال:

firebase remoteconfig:rollouts:get rollout_new_checkout_flow

حذف یک فهرست

بخش مشخص شده‌ی Remote Config را حذف می‌کند.

firebase remoteconfig:rollouts:delete ROLLOUT_ID

مثال:

firebase remoteconfig:rollouts:delete rollout_new_checkout_flow

برای اطلاعات عمومی بیشتر در مورد دستورات Firebase CLI، به مرجع Firebase CLI مراجعه کنید.