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

توضّح الأقسام التالية من هذا الدليل العمليات التي يمكنك إجراؤها باستخدام واجهات برمجة التطبيقات الخلفية Remote Config. لمراجعة بعض الرموز البرمجية التي تنفّذ هذه المهام من خلال REST API، اطّلِع على أحد تطبيقات العيّنات التالية:
- التشغيل السريع لـ Firebase Remote Config REST API في Java
- التشغيل السريع لـ REST API الخاص بالإعداد عن بُعد عبر Firebase في Node.js
- التشغيل السريع لـ REST API للإعداد عن بُعد عبر Firebase في Python
تعديل الإعداد عن بُعد باستخدام مدير SDK في Firebase
Admin SDK هي مجموعة من مكتبات الخادم التي تتيح لك التفاعل مع Firebase من بيئات مميّزة. بالإضافة إلى إجراء تحديثات على Remote Config، تتيح Admin SDK إنشاء رموز مصادقة Firebase والتحقّق منها، والقراءة والكتابة من Realtime Database، وما إلى ذلك. لمزيد من المعلومات عن Admin SDK المتطلبات الأساسية وإعدادها، اطّلِع على مقالة إضافة Firebase Admin SDK إلى خادمك.
في مسار Remote Config النموذجي، يمكنك الحصول على النموذج الحالي وتعديل بعض المَعلمات أو مجموعات المَعلمات والشروط والتحقّق من صحة النموذج ثم نشره. قبل إجراء طلبات واجهة برمجة التطبيقات هذه، عليك منح الإذن بالوصول إلى الطلبات من حزمة SDK.
تهيئة حزمة SDK ومنح الإذن بالوصول إلى طلبات واجهة برمجة التطبيقات
عند تهيئة Admin SDK بدون مَعلمات، تستخدِم حزمة SDK
بيانات الاعتماد التلقائية لتطبيق Google
وتقرأ الخيارات من متغيّر البيئة FIREBASE_CONFIG.
إذا كان محتوى المتغيّر FIREBASE_CONFIG يبدأ بـ {، سيتم تحليله ككائن JSON. وإلا، تفترض حزمة SDK أنّ السلسلة هي اسم ملف JSON يحتوي على الخيارات.
على سبيل المثال:
Node.js
const admin = require('firebase-admin'); admin.initializeApp();
Java
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); }); }
Java
Template template = FirebaseRemoteConfig.getInstance().getTemplateAsync().get(); // See the ETag of the fetched template. System.out.println("ETag from server: " + template.getETag());
تعديل مَعلمات "الإعداد عن بُعد"
يمكنك تعديل Remote Config المَعلمات و مجموعات المَعلمات وإضافتها آليًا. على سبيل المثال، يمكنك إضافة مَعلمة إلى مجموعة مَعلمات حالية باسم "new_menu" للتحكّم في عرض المعلومات الموسمية:
Node.js
function addParameterToGroup(template) { template.parameterGroups['new_menu'].parameters['spring_season'] = { defaultValue: { useInAppDefault: true }, description: 'spring season menu visibility.', }; }
Java
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', }); }
Java
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); }); }
Java
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()); } }
تتحقّق عملية التحقّق هذه من الأخطاء، مثل المفاتيح المكرّرة للمَعلمات والشروط، أو أسماء الشروط غير الصالحة أو الشروط غير المتوفّرة، أو علامات etag التي تم تنسيقها بشكلٍ غير صحيح.
على سبيل المثال، إذا كان الطلب يحتوي على أكثر من العدد المسموح به من المفاتيح، وهو 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); }); }
Java
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 API
يوضّح هذا القسم الإمكانات الرئيسية لـ
Remote Config REST API على https://firebaseremoteconfig.googleapis.com.
لمعرفة التفاصيل الكاملة، اطّلِع على مرجع واجهة برمجة التطبيقات.
الحصول على رمز دخول لمصادقة طلبات واجهة برمجة التطبيقات ومنح الإذن بالوصول إليها
تتيح مشاريع Firebase استخدام حسابات الخدمة من Google، والتي يمكنك استخدامها لاستدعاء واجهات برمجة تطبيقات خادم Firebase من خادم تطبيقك أو بيئتك الموثوق بها. إذا كنت تطوّر رمزًا برمجيًا محليًا أو تنشر تطبيقك في مقرّك، يمكنك استخدام بيانات الاعتماد التي تم الحصول عليها باستخدام حساب الخدمة هذا لمنح الإذن بالوصول إلى طلبات الخادم.
يمكنك الاطّلاع على جميع حسابات الخدمة لمشروع Firebase في الـ
لمصادقة حساب خدمة ومنحه الإذن بالوصول إلى خدمات Firebase، عليك إنشاء ملف مفتاح خاص بتنسيق JSON.
لإنشاء ملف مفتاح خاص لحساب الخدمة، اتّبِع الخطوات التالية:
في وحدة تحكّم Firebase، انتقِل إلى
الإعدادات > علامة التبويب حسابات الخدمة.انقر على إنشاء مفتاح خاص جديد، ثم أكِّد من خلال النقر على إنشاء مفتاح.
خزِّن ملف JSON الذي يحتوي على المفتاح بشكلٍ آمن.
عند منح الإذن بالوصول من خلال حساب خدمة، يتوفّر لك خياران لتوفير بيانات الاعتماد لتطبيقك. يمكنك إما ضبط متغيّر البيئة GOOGLE_APPLICATION_CREDENTIALS، أو يمكنك تمرير مسار مفتاح حساب الخدمة بشكلٍ صريح في الرمز البرمجي. الخيار الأول أكثر أمانًا وننصحك بشدة باستخدامه.
لضبط متغيّر البيئة، اتّبِع الخطوات التالية:
اضبط متغيّر البيئة GOOGLE_APPLICATION_CREDENTIALS على مسار ملف JSON الذي يحتوي على مفتاح حساب الخدمة. لا ينطبق هذا المتغيّر إلا على جلسة shell الحالية، لذا إذا فتحت جلسة جديدة، اضبط المتغيّر مرة أخرى.
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 Auth Library للغة المفضّلة لاسترداد رمز دخول قصير الأجل إلى OAuth 2.0:
node.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
Java
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 وetag معدَّل مع اللاحقة -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 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لأغراض التحكّم في الإصدار.
توفر واجهات برمجة التطبيقات الخلفية Remote Config عدة شروط وعوامل مقارنة يمكنك استخدامها لتغيير سلوك تطبيقك ومظهره. لمزيد من المعلومات عن الشروط وعوامل التشغيل المتوافقة مع هذه الشروط، اطّلع على مرجع التعبير الشرطي.
رموز خطأ HTTP
| رمز الحالة | الهدف وراء طلب البحث |
|---|---|
| 200 | تم التعديل بنجاح |
| 400 | حدث خطأ في التحقّق من الصحة. على سبيل المثال، إذا كان الطلب يحتوي على أكثر من العدد المسموح به من المفاتيح، وهو 2000، سيظهر الرمز 400 (طلب غير صالح) مع رسالة الخطأ Param count too large.
يمكن أن يحدث رمز حالة HTTPS هذا في هاتَين الحالتَين:
|
| 401 | حدث خطأ في منح الإذن بالوصول (لم يتم توفير رمز دخول أو لم تتم إضافة Firebase Remote Config REST API إلى مشروعك في Cloud Developer Console) |
| 403 | حدث خطأ في المصادقة (تم توفير رمز دخول غير صحيح) |
| 500 | حدث خطأ داخلي. إذا حدث هذا الخطأ، يُرجى إرسال تذكرة دعم إلى فريق Firebase |
يعني رمز الحالة 200 أنّه تم تعديل نموذج Remote Config (المَعلمات والقيم والشروط الخاصة بالمشروع) وأصبح متاحًا الآن للتطبيقات التي تستخدِم هذا المشروع. تشير رموز الحالة الأخرى إلى أنّ Remote Config النموذج الذي كان متوفّرًا سابقًا لا يزال ساريًا.
بعد إرسال التعديلات إلى النموذج، انتقِل إلى وحدة تحكّم Firebase للتحقّق من ظهور التغييرات على النحو المتوقّع. هذا أمر بالغ الأهمية لأنّ
ترتيب الشروط يؤثر في كيفية تقييمها (يتم تطبيق الشرط الأول الذي
يتم تقييمه على أنّه true).
استخدام ETag والتحديثات الإلزامية
يستخدِم Remote Config REST API علامة كيان (ETag) لمنع حالات التنافس والتعديلات المتداخلة على الموارد. لمزيد من المعلومات عن علامات ETag، اطّلِع على ETag - HTTP.
بالنسبة إلى REST API، تنصحك 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، اطّلِع على نماذج "الإعداد عن بُعد" والتحكّم في الإصدارات.