تعديل الإعداد عن بُعد آليًا

يوضح هذا المستند كيفية قراءة وتعديل مجموعة المعلمات والشروط بتنسيق JSON المعروفة باسم نموذج Remote Config هذا يسمح إجراء تغييرات على القالب في الخلفية التي يمكن لتطبيق العميل جلبها باستخدام مكتبة البرامج.

باستخدام Remote Config REST API Admin SDK الموضحة في هذا الدليل، يمكنك تجاوز وإدارة النموذج في وحدة تحكم Firebase لدمج التغييرات Remote Config في عملياتك الخاصة على سبيل المثال، مع Remote Config من واجهات برمجة التطبيقات في الخلفية، يمكنك:

  • جدولة Remote Config عملية تعديل. باستخدام طلبات البيانات من واجهة برمجة التطبيقات بالتزامن مع مهمة cron، يمكنك تغيير قيم Remote Config وفقًا لجدول زمني منتظم.
  • قيم تهيئة الاستيراد المجمّع للانتقال بكفاءة من نظامك الخاص إلى نظام Firebase Remote Config.
  • استخدام Remote Config مع Cloud Functions for Firebase، وتغيير القيم في تطبيقك استنادًا إلى الأحداث التي تقع من جهة الخادم على سبيل المثال، يمكنك استخدام Remote Config للترويج لميزة جديدة في تطبيقك، ثم إيقاف هذا العرض الترويجي تلقائيًا بعد اكتشاف تفاعل كافٍ من المستخدمين مع الميزة الجديدة.

    مخطّط بياني يعرض الواجهة الخلفية لميزة "الإعداد عن بُعد" وهي تتفاعل مع الأدوات والخوادم المخصّصة

توضّح الأقسام التالية من هذا الدليل العمليات التي يمكنك تنفيذها باستخدام واجهات برمجة تطبيقات الواجهة الخلفية Remote Config. لمراجعة بعض التعليمات البرمجية التي تنفذ هذه مهام عبر واجهة برمجة تطبيقات REST، يمكنك الاطّلاع على أحد نماذج التطبيقات التالية:

تعديل الإعداد عن بُعد باستخدام حزمة تطوير البرامج (SDK) لمشرف Firebase

Admin SDK هو مجموعة من مكتبات الخوادم التي تتيح لك التفاعل مع Firebase من بيئات مميزة بالإضافة إلى تحديثات الأداء إلى Remote Config، تتيح Admin SDK إنشاء الرموز المميزة لمصادقة Firebase، والقراءة والكتابة من Realtime Database، وما إلى ذلك. لمزيد من المعلومات عن المتطلبات الأساسية والإعداد لاستخدام "Admin SDK"، يُرجى الاطّلاع على أضِف حزمة تطوير البرامج (SDK) لمشرف Firebase إلى خادمك.

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

إعداد حزمة تطوير البرامج (SDK) والموافقة على طلبات واجهة برمجة التطبيقات

عند إعداد Admin SDK بدون معلَمات، تستخدم حزمة تطوير البرامج (SDK) بيانات الاعتماد التلقائية لتطبيق Google وتقرأ الخيارات من متغير البيئة FIREBASE_CONFIG. إذا كان محتوى المتغيّر FIREBASE_CONFIG يبدأ بـ {، فسيكون تحليل ككائن JSON. وبخلاف ذلك، تفترض حزمة SDK أن السلسلة اسم ملف JSON يحتوي على الخيارات.

على سبيل المثال:

Node.js

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، ضع في اعتبارك أنها ذات إصدارات مختلفة، وأن لكل إصدار فترة محدودة منذ وقت إصداره إنشاء المحتوى إلى وقت استبداله بالتحديث: 90 يومًا، مع حدّ إجمالي من 300 نسخة مخزنة. الاطّلاع على النماذج وتحديد الإصدارات لمزيد من المعلومات.

يمكنك استخدام واجهات برمجة التطبيقات الخلفية للحصول على الإصدار النشط الحالي نموذج "Remote Config" بتنسيق JSON

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

للحصول على النموذج:

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

تعديل مَعلمات "الإعداد عن بُعد"

يمكنك تعديل مَعلمات Remote Config وإضافتها آليًا مجموعات المعلمات. على سبيل المثال، إلى مجموعة مَعلمات حالية باسم "new_القائمة" يمكنك إضافة مَعلمة للتحكّم في عرض المعلومات الموسمية:

Node.js

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.")
        );

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

تعديل شروط "الإعداد عن بُعد"

يمكنك تعديل شروط Remote Config وإضافتها آليًا. القيم الشرطية. على سبيل المثال، لإضافة شرط جديد:

Node.js

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

وفي جميع الحالات، يجب نشر النموذج صراحةً بعد وإجراء تعديلات.

توفّر واجهات برمجة التطبيقات الخلفية Remote Config العديد من الشروط والمقارنات المشغلات التي يمكنك استخدامها لتغيير سلوك ومظهر التطبيق. إلى ومعرفة المزيد عن الشروط وعوامل التشغيل المعتمدة لهذه الشروط، راجِع مرجع التعبير الشرطي.

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

اختياريًا، يمكنك التحقق من صحة التعديلات قبل نشرها، كما هو موضّح:

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

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

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

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

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

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

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

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

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

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

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

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

يصف هذا القسم الإمكانات الرئيسية Remote Config REST API على https://firebaseremoteconfig.googleapis.com. للاطّلاع على التفاصيل الكاملة، يُرجى الاطّلاع على مرجع واجهة برمجة التطبيقات.

الحصول على رمز الدخول لمصادقة طلبات واجهة برمجة التطبيقات واعتمادها

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

لمصادقة حساب خدمة وتفويضه للوصول إلى خدمات Firebase، يجب إنشاء ملف مفتاح خاص بتنسيق JSON .

لإنشاء ملف مفتاح خاص لحساب الخدمة الخاص بك:

  1. في وحدة تحكُّم Firebase، افتح. الإعدادات > حسابات الخدمة.

  2. انقر على إنشاء مفتاح خاص جديد، ثم أكِّد بالنقر على إنشاء مفتاح.

  3. خزِّن ملف JSON الذي يحتوي على المفتاح بأمان.

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

لضبط متغيّر البيئة:

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

Linux أو macOS

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

Windows

باستخدام PowerShell:

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

بعد إكمال الخطوات المذكورة أعلاه، ستظهر بيانات الاعتماد التلقائية للتطبيق (ADC) تحديد بيانات الاعتماد الخاصة بك ضمنيًا، مما يتيح لك استخدام بيانات اعتماد الحساب عند الاختبار أو التشغيل في بيئات غير تابعة لشركة Google.

يمكنك استخدام بيانات اعتماد Firebase مع مكتبة مصادقة Google لاسترداد رمز الدخول إلى 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);
      });
}

في هذا المثال، تصادق مكتبة برامج واجهة Google API على الطلب باستخدام رمز JSON المميز للويب أو JWT. لمزيد من المعلومات، يُرجى مراجعة رموز JSON المميّزة للويب

Python

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، ضع في اعتبارك أنها ذات إصدارات مختلفة، وأن لكل إصدار فترة محدودة منذ وقت إصداره إنشاء المحتوى إلى وقت استبداله بالتحديث: 90 يومًا، مع حدّ إجمالي من 300 نسخة مخزنة. الاطّلاع على النماذج وتحديد الإصدارات لمزيد من المعلومات.

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

يمكنك استخدام واجهات برمجة التطبيقات الخلفية للحصول على الإصدار النشط الحالي نموذج "Remote Config" بتنسيق JSON

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

استخدِم الأوامر التالية:

cURL

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

يعرض طلب البيانات من واجهة برمجة التطبيقات هذا JSON التالي، بالإضافة إلى عنوان منفصل ETag التي تستخدمها الطلب اللاحق.

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

اختياريًا، يمكنك التحقّق من صحة التعديلات قبل نشرها. التحقّق من صحة تعديلات النماذج من خلال الإلحاق إلى طلب النشر، تكون معلمة عنوان URL هي ?validate_only=true. في الردّ، رمز الحالة 200 وعلامة إلكترونية معدّلة باللاحقة -0 يعني أنه تم التحقق من صحة التحديث بنجاح. أي استجابة ليست 200 إلى أن بيانات JSON تحتوي على أخطاء يجب تصحيحها قبل النشر.

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

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

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

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

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

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

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

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

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

cURL

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 والشرطات الشرطية آليًا القيم. باستخدام واجهة برمجة تطبيقات REST، يجب تعديل النموذج مباشرةً لتعديله. الشروط قبل نشر النموذج.

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

تحدد التعديلات أعلاه مجموعة من الشروط أولاً، ثم تحدد القيم التلقائية والمعلمة المستندة إلى الشرط (القيم الشرطية) القيم لكل معلمة. كما يضيف أيضًا وصفًا اختياريًا لكل element; مثل تعليقات الرمز البرمجي، فهي مخصّصة لاستخدام المطوّرين ولا يتم عرضها في التطبيق. إن ETag هو يتم توفيرها أيضًا لأغراض التحكم في الإصدار.

توفّر واجهات برمجة التطبيقات الخلفية Remote Config العديد من الشروط والمقارنات المشغلات التي يمكنك استخدامها لتغيير سلوك ومظهر التطبيق. إلى ومعرفة المزيد عن الشروط وعوامل التشغيل المعتمدة لهذه الشروط، راجِع مرجع التعبير الشرطي.

رموز خطأ HTTP

رمز الحالة المعنى
200 تم التعديل بنجاح.
400 حدث خطأ أثناء التحقّق من الصحة. على سبيل المثال، قد يتضمن الطلب الذي يحتوي على أكثر من عدد المفاتيح المسموح به - 2000 - سيؤدي إلى عرض 400 (طلب غير صالح) مع رسالة الخطأ، Param count too large. ويمكن أيضًا أن يظهر رمز حالة HTTPS هذا في الحالتَين التاليتَين:
  • حدث خطأ عدم تطابق في الإصدار بسبب تعديل مجموعة القيم والشروط منذ آخر مرة استعدت فيها قيمة ETag. لحلّ هذه المشكلة، عليك استخدام الأمر GET للحصول على نموذج جديد وقيمة ETag جديدة، وتعديل النموذج، ثم الإرسال باستخدام ذلك النموذج وقيمة ETag الجديدة.
  • تم إجراء الأمر PUT (تعديل طلب النموذج Remote Config) بدون تحديد عنوان If-Match.
401 حدث خطأ في التفويض (لم يتم تقديم رمز دخول أو لم تتم إضافة Firebase Remote Config REST API إلى مشروعك في Cloud Developer Console)
403 حدث خطأ في المصادقة (تم تقديم رمز دخول غير صحيح)
500 حدث خطأ داخلي. في حالة حدوث هذا الخطأ، إرسال طلب دعم من Firebase

ويعني رمز الحالة 200 أنّ نموذج Remote Config (المَعلمات والقيم وشروط المشروع) وهي متاحة الآن للتطبيقات التي تستخدم هذا المشروع. تشير رموز الحالة الأخرى إلى أنّ السمة Remote Config القالب الذي كان موجودًا سابقًا لا يزال ساري المفعول.

بعد إرسال التعديلات على النموذج، انتقِل إلى وحدة تحكّم "Firebase" من أجل التحقق من ظهور تغييراتك على النحو المتوقع. يعد ذلك أمرًا بالغ الأهمية لأن ويؤثر ترتيب الشروط في كيفية تقييمها (الشرط الأول الذي يقيّم true).

استخدام ETag وفرض التعديلات

تستخدم واجهة برمجة التطبيقات Remote Config REST علامة الكيان (ETag) لمنع حالات السباق. وتحديثات متداخلة للموارد. لمزيد من المعلومات حول علامات ETag، راجع ETag - HTTP:

بالنسبة إلى واجهة برمجة تطبيقات REST، تنصحك Google بالتخزين المؤقت علامة ETag التي يوفّرها أحدث أمر GET، واستخدِم قيمة ETag هذه. في عنوان الطلب If-Match عند إصدار أوامر PUT. إذا كان PUT إلى رمز حالة HTTPS 409، فيجب إصدار خطأ GET جديد للحصول على علامة ETag جديدة ونموذج لاستخدامهما مع أمر PUT التالي.

ويمكنك التحايل على علامة ETag والحماية منها التي توفرها، فرض تعديل نموذج Remote Config على النحو التالي: If-Match: * ومع ذلك، لا يوصى بهذه الطريقة لأنها قد تتسبب في فقدان تعديلات على نموذج Remote Config في حال تعديل عدة عملاء نموذج Remote Config يمكن أن يحدث هذا النوع من التعارض مع العملاء الذين يستخدمون واجهة برمجة التطبيقات، أو من خلال التحديثات المتضاربة من برامج واجهة برمجة التطبيقات مستخدمان (Firebase) لوحدة التحكّم.

للحصول على إرشادات حول إدارة إصدارات نماذج Remote Config، يُرجى الاطّلاع على نماذج "الإعداد عن بُعد" والإصدارات: