قالب Remote Config مجموعه ای از پارامترها و شرایط فرمت JSON در سمت سرور است که برای پروژه Firebase خود ایجاد کرده اید. میتوانید با استفاده از کنسول Firebase که محتویات قالب را در قالب گرافیکی در زبانههای پارامترها و شرایط نمایش میدهد، الگو را تغییر داده و مدیریت کنید. همچنین میتوانید از Remote Config REST API و Admin SDK یا 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 روز منقضی می شوند. میتوانید آنها را در صورت نیاز از صفحه تاریخچه تغییر در کنسول Remote Config حذف کنید. در کل محدودیت 300 نسخه ذخیره شده مادام العمر وجود دارد که شامل شماره نسخه های ذخیره شده برای قالب های حذف شده می شود. اگر بیش از 300 نسخه قالب را در طول عمر یک پروژه منتشر کنید، اولین نسخه ها حذف می شوند و حداکثر 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": "2022-05-12T02:38:54Z",
"update_user": {
"name": "Jane Smith",
"email": "jane@developer.org",
"imageUrl": "https://lh3.googleusercontent.com/a-/..."
},
"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 را از کنسول Firebase حذف کنید. برای حذف یک الگوی Remote Config:
از صفحه Remote Config Parameters ، روی Change history کلیک کنید.
به قالبی که میخواهید حذف کنید، روی
More کلیک کنید، سپس Delete را انتخاب کنید.هنگامی که از شما خواسته شد تا حذف را تأیید کنید، روی Delete کلیک کنید.
قالب های Remote Config را دانلود و منتشر کنید
قالبهای Remote Config را دانلود و منتشر کنید تا آنها را در سیستمهای کنترل منبع خود ادغام کنید، بهروزرسانیهای پیکربندی را خودکار کنید، و پارامترها و مقادیر را در چندین پروژه همگام کنید.
می توانید الگوی Remote Config فعال کنونی را به صورت برنامه نویسی یا از کنسول Firebase دانلود کنید. سپس می توانید فایل JSON صادر شده را به روز کنید و آن را در همان پروژه منتشر کنید، یا آن را در یک پروژه جدید یا موجود منتشر کنید.
فرض کنید چندین پروژه دارید که نشان دهنده مراحل مختلف چرخه عمر توسعه نرم افزار شما هستند، مانند محیط های توسعه، آزمایش، مرحله بندی و تولید. در این صورت، می توانید یک قالب کاملاً آزمایش شده را از محیط صحنه سازی خود به محیط تولید خود با دانلود آن از پروژه صحنه سازی خود و انتشار آن در پروژه تولید خود تبلیغ کنید.
همچنین میتوانید از این روش برای انتقال پیکربندیها از یک پروژه به پروژه دیگر یا پر کردن یک پروژه جدید با پارامترها و مقادیر از یک پروژه دیگر استفاده کنید.
پارامترها و مقادیر پارامتر ایجاد شده بهطور خاص بهعنوان انواع در آزمایش A/B Testing در قالبهای صادر شده گنجانده نمیشوند.
برای صادرات و وارد کردن الگوهای Remote Config:
- قالب کنونی Remote Config Config را دانلود کنید .
- الگوی Remote Config را اعتبارسنجی کنید .
- قالب Remote Config را منتشر کنید .
الگوی پیکربندی از راه دور فعلی را دانلود کنید
می توانید قالب فعلی و فعال Remote Config را به صورت برنامه ریزی شده یا با استفاده از کنسول Firebase دانلود کنید.
برای دانلود قالب فعال Remote Config با فرمت JSON از دستورات زیر استفاده کنید:
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());
باقی مانده
curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -o filename
این دستور payload JSON را به یک فایل و هدرها (از جمله ETag) را به یک فایل headers
جداگانه خروجی می دهد.
کنسول Firebase
- از تب Remote Config Parameters یا Conditions ، منوی را باز کرده و دانلود فایل پیکربندی فعلی را انتخاب کنید.
- هنگامی که از شما خواسته شد، روی دانلود فایل پیکربندی کلیک کنید، مکانی را که میخواهید فایل را در آن ذخیره کنید انتخاب کنید، سپس روی ذخیره کلیک کنید.
Firebase CLI
firebase remoteconfig:get -o filename
الگوی Remote Config را اعتبارسنجی کنید
میتوانید بهروزرسانیهای الگوی خود را قبل از انتشار با استفاده از Firebase Admin SDK یا REST API تأیید کنید. همچنین زمانی که میخواهید از Firebase CLI یا Firebase کنسول منتشر کنید، الگوها اعتبارسنجی میشوند.
فرآیند اعتبار سنجی الگو، خطاهایی مانند کلیدهای تکراری برای پارامترها و شرایط، نامهای شرایط نامعتبر یا شرایط موجود، یا ETagهای نادرست را بررسی میکند. به عنوان مثال، درخواستی حاوی بیش از تعداد مجاز کلیدها - 2000 - پیام خطا را نشان می دهد، Param count too large
.
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()); } }
باقی مانده
اعتبارسنجی بهروزرسانیهای الگو را با افزودن پارامتر URL ?validate_only=true
به درخواست انتشار شما:
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?validate_only=true -d @filename
اگر الگوی شما با موفقیت تأیید شد، دستور curl الگوی JSON را که ارسال کردهاید برمیگرداند و در فایل headers
ذخیرهشده، یک وضعیت HTTP/2 200 و یک ETag بهروز شده با پسوند -0
پیدا خواهید کرد. اگر الگوی شما اعتبارسنجی نشده است، خطای اعتبارسنجی را در پاسخ JSON دریافت خواهید کرد و فایل headers
شما حاوی پاسخی غیر 200 (و بدون ETag) خواهد بود.
قالب Remote Config را منتشر کنید
پس از دانلود یک الگو، ایجاد هرگونه تغییر مورد نیاز در محتوای JSON و اعتبارسنجی آن، می توانید آن را در یک پروژه منتشر کنید.
انتشار یک الگو، کل قالب پیکربندی موجود را با فایل به روز شده جایگزین می کند و نسخه قالب را یک به یک افزایش می دهد. از آنجایی که کل پیکربندی جایگزین شده است، اگر پارامتری را از فایل JSON حذف کنید و آن را منتشر کنید، پارامتر از سرور حذف میشود و دیگر در دسترس مشتریان نیست.
پس از انتشار، تغییرات در پارامترها و مقادیر بلافاصله در دسترس برنامه ها و کاربران شما قرار می گیرد. در صورت لزوم، می توانید به نسخه قبلی برگردید .
برای انتشار قالب خود از دستورات زیر استفاده کنید:
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()); } }
باقی مانده
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
، می توانید با استفاده از کاراکتر "@" و به دنبال آن نام فایل، محتوا را مشخص کنید.
کنسول Firebase
- از تب Remote Config Parameters یا Conditions ، منوی را باز کرده و گزینه Publish from a file را انتخاب کنید.
- هنگامی که از شما خواسته شد، روی Browse کلیک کنید، به آن بروید و فایل Remote Config را که می خواهید منتشر کنید انتخاب کنید، سپس روی Select کلیک کنید.
- فایل تأیید میشود و در صورت موفقیتآمیز، میتوانید روی انتشار کلیک کنید تا پیکربندی فوراً در دسترس برنامهها و کاربران خود قرار گیرد.
شخصیسازیها و شرایط پیکربندی از راه دور در قالبهای دانلود شده گنجانده شدهاند، بنابراین هنگام تلاش برای انتشار در پروژهای دیگر، مهم است که از محدودیتهای زیر آگاه باشید:
شخصی سازی ها را نمی توان از پروژه ای به پروژه دیگر وارد کرد.
برای مثال، اگر شخصیسازیها را در پروژه خود فعال کردهاید و یک الگو را دانلود و ویرایش کنید، میتوانید آن را در همان پروژه منتشر کنید، اما نمیتوانید آن را در پروژه دیگری منتشر کنید، مگر اینکه شخصیسازیها را از الگو حذف کنید.
شرایط را می توان از پروژه ای به پروژه دیگر وارد کرد، اما توجه داشته باشید که هر مقدار شرطی خاص (مانند شناسه های برنامه یا مخاطبان)، باید قبل از انتشار در پروژه هدف وجود داشته باشد.
برای مثال، اگر یک پارامتر Remote Config دارید که از شرطی استفاده میکند که مقدار پلتفرم
iOS
را مشخص میکند، الگو را میتوان در پروژه دیگری منتشر کرد، زیرا مقادیر پلتفرم برای هر پروژه یکسان است. با این حال، اگر دارای شرایطی باشد که متکی به شناسه برنامه خاص یا مخاطبان کاربر است که در پروژه هدف وجود ندارد، اعتبارسنجی ناموفق خواهد بود.اگر قالبی که قصد انتشار آن را دارید دارای شرایطی باشد که به Google Analytics متکی است، Analytics باید در پروژه هدف فعال باشد.
دانلود پیش فرض قالب 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
- در برگه پارامترها ، منوی را باز کنید و مقادیر پیشفرض را دانلود کنید .
- وقتی از شما خواسته شد، روی دکمه رادیویی مطابق با فرمت فایلی که میخواهید دانلود کنید کلیک کنید و سپس روی دانلود فایل کلیک کنید.
برای اطلاعات بیشتر در مورد وارد کردن مقادیر پیشفرض Remote Config به برنامه خود، ببینید:
مقادیر پارامترهای پیش فرض درون برنامه را برای Android تنظیم کنید
مقادیر پارامترهای پیش فرض درون برنامه را برای iOS تنظیم کنید
مقادیر پارامترهای پیش فرض درون برنامه را برای Unity تنظیم کنید
مقادیر پارامترهای پیش فرض درون برنامه را برای C++ تنظیم کنید