يوضّح هذا المستند كيف يمكنك قراءة مجموعة المَعلمات والشروط المنسَّقة بتنسيق 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
- دليل البدء السريع لواجهة Firebase Remote Config REST API في Python
تعديل "الإعداد عن بُعد" باستخدام حزمة تطوير البرامج (SDK) للمشرف في Firebase
Admin SDK هي مجموعة من مكتبات الخادم التي تتيح لك التفاعل مع Firebase من بيئات ذات امتيازات. بالإضافة إلى إجراء التعديلات على Remote Config، تتيح Admin SDK إنشاء رموز مميّزة لمصادقة Firebase وإثبات صحتها، والقراءة والكتابة من Realtime Database، وما إلى ذلك. لمزيد من المعلومات عن Admin SDK المتطلبات الأساسية والإعداد، يُرجى الاطّلاع على إضافة حزمة تطوير البرامج (SDK) لمنصة Firebase Admin إلى الخادم.
في عملية 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
عند العمل باستخدام نماذج 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 ذات التنسيق الخاطئ.
على سبيل المثال، إذا كان الطلب يتضمّن عددًا من المفاتيح يتجاوز العدد المسموح به، وهو 2,000، ستظهر رسالة الخطأ 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
يوضّح هذا القسم الإمكانات الرئيسية لواجهة برمجة تطبيقات REST الخاصة بـ Remote Config على https://firebaseremoteconfig.googleapis.com
.
للاطّلاع على التفاصيل الكاملة، يُرجى الرجوع إلى مرجع واجهة برمجة التطبيقات.
الحصول على رمز دخول للمصادقة على طلبات واجهة برمجة التطبيقات واعتمادها
تتيح مشاريع Firebase استخدام حسابات الخدمة من Google، والتي يمكنك استخدامها لاستدعاء واجهات برمجة التطبيقات لخادم 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 للغتك المفضّلة من أجل استرداد رمز وصول قصير الأمد عبر بروتوكول 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
يمكنك استخدام واجهات برمجة التطبيقات الخلفية للحصول على الإصدار النشط الحالي من نموذج 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 تتضمّن أخطاء يجب تصحيحها قبل النشر.
تعديل نموذج Remote Config
بعد استرداد نموذج ومراجعة محتوى 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 | حدث خطأ في عملية التحقّق. على سبيل المثال، إذا كان الطلب يتضمّن عددًا من المفاتيح يتجاوز العدد المسموح به وهو 2,000، سيتم عرض رمز الحالة 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 في "وحدة تحكّم Google Play".
للحصول على إرشادات حول إدارة إصدارات نموذج Remote Config، اطّلِع على نماذج Remote Config وإصداراتها.