قالبهای Remote Config مجموعهای از پارامترها و شرایط با فرمت JSON هستند که شما برای پروژه Firebase خود ایجاد کردهاید. میتوانید قالبهای کلاینت ایجاد کنید که برنامه شما از آنها مقادیر را دریافت میکند و قالبهای سرور ایجاد کنید که کلاینتهای سرور میتوانند مقادیر را از آنها دریافت کنند.
این بخش به بررسی قالبهای کلاینت میپردازد. برای آشنایی با قالبهای مخصوص سرور، روی قالبهای سرور کلیک کنید.شما با استفاده از کنسول Firebase ، قالب را تغییر داده و مدیریت میکنید، که محتویات قالب را در قالب گرافیکی در ... نمایش میدهد.برگههای پارامترها و شرایط .
همچنین میتوانید از Remote Config REST API و Admin SDK یا Firebase CLI برای تغییر و مدیریت الگوی کلاینت خود استفاده کنید.
در اینجا مثالی از فایل الگوی سرور آورده شده است:
{
"parameters": {
"preamble_prompt": {
"defaultValue": {
"value": "You are a helpful assistant who knows everything there is to know about Firebase! "
},
"description": "Add this prompt to the user's prompt",
"valueType": "STRING"
},
"model_name": {
"defaultValue": {
"value": "gemini-pro-test"
},
"valueType": "STRING"
},
"generation_config": {
"defaultValue": {
"value": "{\"temperature\": 0.9, \"maxOutputTokens\": 2048, \"topP\": 0.9, \"topK\": 20}"
},
"valueType": "JSON"
},
},
"version": {
"versionNumber": "19",
"isLegacy": true
}
}
شما میتوانید این وظایف مدیریت نسخه را با کنسول Firebase انجام دهید:
- فهرست کردن تمام نسخههای قالب ذخیره شده
- بازیابی یک نسخه خاص
- بازگشت به یک نسخه کلاینت خاص
- قالبهای Remote Config را از صفحه Change history حذف کنید
در مجموع، محدودیت ۳۰۰ نسخه ذخیرهشده مادامالعمر برای هر نوع الگو (۳۰۰ الگوی کلاینت و ۳۰۰ الگوی سرور) وجود دارد که شامل شماره نسخههای ذخیرهشده برای الگوهای حذفشده نیز میشود. اگر در طول عمر یک پروژه، بیش از ۳۰۰ نسخه الگو برای هر نوع الگو منتشر کنید، نسخههای اولیه حذف میشوند و حداکثر ۳۰۰ نسخه از آن نوع حفظ میشود.
هر بار که پارامترها را بهروزرسانی میکنید، Remote Config یک الگوی Remote Config نسخهبندیشده جدید ایجاد میکند و الگوی قبلی را به عنوان نسخهای ذخیره میکند که میتوانید در صورت نیاز آن را بازیابی یا به حالت قبل برگردانید. شماره نسخهها به ترتیب از مقدار اولیه ذخیره شده توسط Remote Config افزایش مییابند. همه الگوها شامل یک فیلد version
، همانطور که نشان داده شده است، هستند که حاوی فرادادههایی درباره آن نسخه خاص است.
شما میتوانید قالبهای Remote Config را در صورت نیاز از ... حذف کنید.تغییر تاریخچهصفحه در کنسول Remote Config .
مدیریت نسخههای قالب Remote Config
این بخش نحوه مدیریت نسخههای الگوی Remote Config شما را شرح میدهد.
لیست کردن تمام نسخههای ذخیره شده از الگوی Remote Config
شما میتوانید لیستی از تمام نسخههای ذخیره شده از الگوی Remote Config را بازیابی کنید. برای انجام این کار:
کنسول Firebase
در تب پارامترها ، آیکون "ساعت" که در بالا سمت راست نمایش داده میشود را انتخاب کنید. این کار صفحه تغییر تاریخچه را باز میکند که تمام نسخههای ذخیره شده قالب را در یک فهرست در سمت راست فهرست میکند.
جزئیات نمایش داده شده برای هر نسخه ذخیره شده شامل اطلاعاتی در مورد اینکه آیا تغییرات از کنسول، از REST API، از یک عقبگرد یا اینکه تغییرات افزایشی از ذخیره اجباری الگو بودهاند، میباشد.
رابط خط Firebase
firebase remoteconfig:versions:list
از گزینه --limit
برای محدود کردن تعداد نسخههای برگردانده شده استفاده کنید. برای دریافت همه نسخهها، عدد '0' را وارد کنید.
نود جی اس
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
فهرست الگوها شامل فرادادههایی برای تمام نسخههای ذخیرهشده، از جمله زمان بهروزرسانی، کاربری که آن را ایجاد کرده و نحوهی ایجاد آن است. در اینجا مثالی از عنصر نسخه آمده است:
```json
{
"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 را بازیابی کنید. برای بازیابی یک نسخه الگوی ذخیره شده:
کنسول Firebase
به طور پیشفرض، صفحه جزئیات در تب «تغییر تاریخچه» الگوی فعال فعلی را نمایش میدهد. برای مشاهده جزئیات نسخه دیگری در لیست، آن را از منوی سمت راست انتخاب کنید.
شما میتوانید با نگه داشتن ماوس روی منوی زمینه برای هر نسخه غیرانتخابی و انتخاب گزینه «مقایسه با نسخه انتخاب شده»، تفاوت دقیق نسخه انتخاب شده فعلی و هر نسخه ذخیره شده دیگر را مشاهده کنید.
رابط خط Firebase
firebase remoteconfig:get -v VERSION_NUMBER
به صورت اختیاری، میتوانید خروجی را با استفاده از -o, FILENAME
در یک فایل مشخص بنویسید.
نود جی اس
برای بازیابی آخرین نسخه از قالب، تابع 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
معتبر است؛ نمیتوانید از آن برای تعیین شماره نسخه برای بهروزرسانیها استفاده کنید. یک درخواست get مشابه بدون پارامتر ?version_number
، الگوی فعال فعلی را بازیابی میکند.
بازگشت به یک نسخه ذخیره شده خاص از الگوی Remote Config
شما میتوانید به هر نسخه ذخیره شده از الگو برگردید. برای برگرداندن یک الگو:
کنسول Firebase
برای نسخههای قبلی قالب که واجد شرایط بازگشت به نسخه قبلی هستند، یک دکمه گزینه برای بازگشت به آن نسخه در بالا سمت راست صفحه تغییر تاریخچه نمایش داده میشود. فقط در صورتی که مطمئن هستید که میخواهید به آن نسخه برگردید و از آن مقادیر بلافاصله برای همه برنامهها و کاربران استفاده کنید، روی آن کلیک کرده و آن را تأیید کنید.
رابط خط Firebase
firebase remoteconfig:rollback -v VERSION_NUMBER
نود جی اس
// 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}'
این پاسخ شامل محتویات الگوی ذخیره شدهی فعال فعلی به همراه فرادادهی نسخهی جدید آن است.
توجه داشته باشید که این عملیات بازگشت به عقب عملاً یک نسخه شمارهگذاری شده جدید ایجاد میکند. برای مثال، بازگشت از نسخه ۱۰ به نسخه ۶ عملاً یک کپی جدید از نسخه ۶ ایجاد میکند که تنها تفاوت آن با نسخه اصلی این است که شماره نسخه آن ۱۱ است. نسخه اصلی ۶ هنوز ذخیره شده است، با فرض اینکه به تاریخ انقضای خود نرسیده باشد، و نسخه ۱۱ به عنوان الگوی فعال در نظر گرفته میشود.
حذف یک الگوی Remote Config
شما میتوانید قالبهای Remote Config را از کنسول Firebase حذف کنید. برای حذف یک قالب Remote Config :
۱. از صفحه پارامترهای Remote Config ، روی کلیک کنید. تغییر تاریخچه .برای انتخاب الگویی که میخواهید حذف کنید، روی
More کلیک کنید، سپس Delete را انتخاب کنید.وقتی از شما خواسته شد حذف را تأیید کنید، روی «حذف» کلیک کنید.
قالبهای Remote Config را دانلود و منتشر کنید
قالبهای Remote Config را دانلود و منتشر کنید تا آنها را در سیستمهای کنترل منبع و ساخت خود ادغام کنید، بهروزرسانیهای پیکربندی را خودکار کنید و پارامترها و مقادیر را در چندین پروژه همگامسازی کنید.
میتوانید الگوی Remote Config که در حال حاضر فعال است را دانلود کنید.از کنسول Firebase .سپس میتوانید فایل JSON خروجی گرفته شده را بهروزرسانی کرده و آن را در همان پروژه منتشر کنید، یا آن را در یک پروژه جدید یا موجود منتشر کنید.
فرض کنید چندین پروژه دارید که مراحل مختلف چرخه حیات توسعه نرمافزار شما را نشان میدهند، مانند محیطهای توسعه، آزمایش، مرحلهبندی و تولید. در این حالت، میتوانید با دانلود یک الگوی کاملاً آزمایششده از پروژه مرحلهبندی خود و انتشار آن در پروژه تولید، آن را از محیط مرحلهبندی به محیط تولید خود ارتقا دهید.
همچنین میتوانید از این روش برای انتقال پیکربندیها از یک پروژه به پروژه دیگر یا پر کردن یک پروژه جدید با پارامترها و مقادیر از یک پروژه از پیش تعیینشده استفاده کنید.
پارامترها و مقادیر پارامتری که به طور خاص به عنوان گونههای مختلف در یک آزمایش A/B Testing ایجاد شدهاند، در قالبهای صادر شده لحاظ نمیشوند.
برای خروجی گرفتن و وارد کردن قالبهای Remote Config :
- الگوی فعلی Remote Config Config را دانلود کنید .
- الگوی Remote Config را اعتبارسنجی کنید .
- الگوی Remote Config را منتشر کنید .
الگوی پیکربندی از راه دور فعلی را دانلود کنید
برای دانلود الگوی فعال Remote Config با فرمت JSON از دستور زیر استفاده کنید:
کنسول Firebase
- از برگه «پارامترها یا شرایط Remote Config » ، منوی را باز کنید و «دانلود فایل پیکربندی فعلی» را انتخاب کنید.
- وقتی از شما خواسته شد، روی «دانلود فایل پیکربندی» کلیک کنید، مکانی را که میخواهید فایل در آن ذخیره شود انتخاب کنید، سپس روی «ذخیره» کلیک کنید.
رابط خط Firebase
firebase remoteconfig:get -o filename
نود جی اس
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
این دستور، محتوای JSON را در یک فایل و هدرها (از جمله ETag) را در یک فایل headers
جداگانه خروجی میدهد.
اعتبارسنجی الگوی Remote Config
شما میتوانید قبل از انتشار بهروزرسانیهای قالب خود، آنها را با استفاده از Firebase Admin SDK یا REST API اعتبارسنجی کنید. قالبها همچنین هنگام تلاش برای انتشار از Firebase CLI یا کنسول Firebase اعتبارسنجی میشوند. فرآیند اعتبارسنجی قالب، خطاهایی مانند کلیدهای تکراری برای پارامترها و شرایط، نامهای نامعتبر شرایط یا شرایط ناموجود، یا ETag های با قالب نادرست را بررسی میکند. برای مثال، درخواستی که حاوی بیش از تعداد مجاز کلیدها - ۲۰۰۰ - باشد، پیام خطای Param count too large
برمیگرداند.
نود جی اس
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 حذف کرده و آن را منتشر کنید، پارامتر از سرور حذف شده و دیگر برای کلاینتها در دسترس نخواهد بود.
پس از انتشار، تغییرات در پارامترها و مقادیر بلافاصله برای برنامهها و کاربران شما در دسترس است. در صورت لزوم، میتوانید به نسخه قبلی برگردید .
برای انتشار قالب خود از دستورات زیر استفاده کنید:
کنسول Firebase
- از برگه «پارامترها یا شرایط Remote Config » ، منوی را باز کنید و «انتشار از یک فایل» را انتخاب کنید.
- وقتی از شما خواسته شد، روی مرور کلیک کنید، به فایل Remote Config که میخواهید منتشر کنید بروید و آن را انتخاب کنید، سپس روی انتخاب کلیک کنید.
- فایل اعتبارسنجی میشود و در صورت موفقیتآمیز بودن، میتوانید روی انتشار کلیک کنید تا پیکربندی بلافاصله در دسترس برنامهها و کاربران شما قرار گیرد.
نود جی اس
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
، میتوانید محتوا را با استفاده از کاراکتر "@" و به دنبال آن نام فایل مشخص کنید.
شخصیسازیها و شرایط Remote Config در قالبهای دانلود شده گنجانده شدهاند، بنابراین مهم است که هنگام تلاش برای انتشار در یک پروژه دیگر، از محدودیتهای زیر آگاه باشید:
شخصیسازیها را نمیتوان از پروژهای به پروژه دیگر وارد کرد.
برای مثال، اگر شخصیسازیها را در پروژه خود فعال کرده باشید و یک قالب را دانلود و ویرایش کنید، میتوانید آن را در همان پروژه منتشر کنید، اما نمیتوانید آن را در پروژه دیگری منتشر کنید، مگر اینکه شخصیسازیها را از قالب حذف کنید.
شرایط را میتوان از پروژهای به پروژه دیگر وارد کرد، اما توجه داشته باشید که هرگونه مقدار شرطی خاص (مانند شناسه برنامه یا مخاطبان) باید قبل از انتشار در پروژه هدف وجود داشته باشد.
برای مثال، اگر یک پارامتر Remote Config دارید که از شرطی استفاده میکند که مقدار پلتفرم
iOS
را مشخص میکند، میتوان این الگو را در پروژه دیگری منتشر کرد، زیرا مقادیر پلتفرم برای هر پروژهای یکسان است. با این حال، اگر حاوی شرطی باشد که به یک شناسه برنامه یا مخاطب کاربر خاص متکی باشد که در پروژه هدف وجود ندارد، اعتبارسنجی با شکست مواجه خواهد شد.اگر قالبی که قصد انتشار آن را دارید حاوی شرایطی است که به Google Analytics متکی است، Analytics باید در پروژه هدف فعال باشد.
دانلود پیشفرضهای قالب Remote Config
از آنجا که ممکن است برنامه شما همیشه به اینترنت متصل نباشد، باید مقادیر پیشفرض برنامه سمت کلاینت را برای همه پارامترهای Remote Config پیکربندی کنید. همچنین باید به صورت دورهای مقادیر پیشفرض کلاینت برنامه و مقادیر پیشفرض پارامترهای Remote Config backend خود را همگامسازی کنید، زیرا ممکن است با گذشت زمان تغییر کنند.
همانطور که در لینکهای مخصوص پلتفرم در انتهای این بخش توضیح داده شده است، میتوانید این پیشفرضها را به صورت دستی در برنامه خود تنظیم کنید یا میتوانید این فرآیند را با دانلود فایلهایی که فقط شامل جفتهای کلید-مقدار برای همه پارامترها و مقادیر پیشفرض آنها در الگوی فعال Remote Config هستند، ساده کنید. سپس میتوانید این فایل را در پروژه خود قرار دهید و برنامه خود را برای وارد کردن این مقادیر پیکربندی کنید.
شما میتوانید این فایلها را برای برنامههای اندروید با فرمت XML، برای برنامههای iOS با فرمت لیست ویژگیها (plist) و برای برنامههای وب با فرمت JSON دانلود کنید.
توصیه میکنیم قبل از انتشار هر نسخه جدید از برنامه، بهطور دورهای پیشفرضهای Remote Config را دانلود کنید تا از همگامسازی برنامه و Remote Config backend اطمینان حاصل شود.
برای دانلود فایلی که حاوی پیشفرضهای قالب است:
استراحت
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 به برنامه خود، به موارد زیر مراجعه کنید: