قالبهای Remote Config مجموعهای از پارامترها و شرایط با فرمت JSON هستند که شما برای پروژه Firebase خود ایجاد کردهاید. میتوانید قالبهای کلاینت ایجاد کنید که برنامه شما از آنها مقادیر را دریافت میکند و قالبهای سرور ایجاد کنید که کلاینتهای سرور میتوانند مقادیر را از آنها دریافت کنند.
این بخش به بررسی قالبهای کلاینت میپردازد. برای آشنایی با قالبهای مخصوص سرور، روی قالبهای سرور کلیک کنید.شما میتوانید از کنسول Firebase برای تغییر و مدیریت الگو استفاده کنید. برای مشاهده محتوای الگو در قالب گرافیکی، به DevOps & Engagement > Remote Config بروید.صفحه پارامترها و صفحه شرایط .
همچنین میتوانید از 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 انجام دهید (به DevOps & Engagement > Remote Config بروید):
- فهرست کردن تمام نسخههای قالب ذخیره شده
- بازیابی یک نسخه خاص
- بازگشت به یک نسخه کلاینت خاص
- الگوهای Remote Config را از صفحه Change history حذف کنید.
در مجموع، محدودیت ۳۰۰ نسخه ذخیرهشده مادامالعمر برای هر نوع الگو (۳۰۰ الگوی کلاینت و ۳۰۰ الگوی سرور) وجود دارد که شامل شماره نسخههای ذخیرهشده برای الگوهای حذفشده نیز میشود. اگر در طول عمر یک پروژه، بیش از ۳۰۰ نسخه الگو برای هر نوع الگو منتشر کنید، نسخههای اولیه حذف میشوند و حداکثر ۳۰۰ نسخه از آن نوع حفظ میشود.
هر بار که پارامترها را بهروزرسانی میکنید، Remote Config یک الگوی Remote Config نسخهبندیشده جدید ایجاد میکند و الگوی قبلی را به عنوان نسخهای ذخیره میکند که میتوانید در صورت نیاز آن را بازیابی یا به حالت قبل برگردانید. شماره نسخهها به ترتیب از مقدار اولیه ذخیره شده توسط Remote Config افزایش مییابند. همه الگوها شامل یک فیلد version ، همانطور که نشان داده شده است، هستند که حاوی فرادادههایی درباره آن نسخه خاص است.
شما میتوانید قالبهای Remote Config را در صورت نیاز از مسیر DevOps & Engagement > Remote Config > حذف کنید.تغییر صفحه تاریخچهاز کنسول Firebase .
مدیریت نسخههای قالب Remote Config
این بخش نحوه مدیریت نسخههای الگوی Remote Config شما را شرح میدهد.
لیست کردن تمام نسخههای ذخیره شده از الگوی Remote Config
شما میتوانید لیستی از تمام نسخههای ذخیره شده از الگوی Remote Config را بازیابی کنید. برای انجام این کار:
کنسول Firebase
در کنسول Firebase ، به صفحه DevOps & Engagement > Remote Config > Parameters بروید.
نماد "ساعت" که در بالا سمت راست نمایش داده میشود را انتخاب کنید.
این صفحه تاریخچه تغییرات را باز میکند که تمام نسخههای ذخیره شده قالب را در یک منوی فهرست در سمت راست فهرست میکند.
جزئیات نمایش داده شده برای هر نسخه ذخیره شده شامل اطلاعاتی در مورد اینکه آیا تغییرات از کنسول، از 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 ، به صفحه DevOps & Engagement > Remote Config > Change history بروید.
به طور پیشفرض، صفحه، الگوی فعال فعلی را نمایش میدهد. برای مشاهده نسخه دیگری، آن را از پنل جزئیات در سمت راست انتخاب کنید.
با نگه داشتن ماوس روی منوی زمینه برای هر نسخه غیرانتخابی و انتخاب گزینه مقایسه با نسخه انتخابشده، تفاوت دقیق الگوی فعال و هر نسخه ذخیرهشده دیگر را مشاهده کنید.
رابط خط فرمان 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 ، به صفحه DevOps & Engagement > Remote Config > Change history بروید.
برای نسخههای قبلی قالب که واجد شرایط بازگشت به نسخههای قبلی هستند، دکمه گزینه را در سمت راست بالای صفحه پیدا کنید.
فقط در صورتی که مطمئن هستید که میخواهید به آن نسخه برگردید و از آن مقادیر بلافاصله برای همه برنامهها و کاربران استفاده کنید، روی آن کلیک کرده و آن را تأیید کنید.
رابط خط فرمان 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 حذف کنید. در اینجا نحوه حذف یک قالب آورده شده است:
در کنسول Firebase ، به صفحه DevOps & Engagement > Remote Config > Parameters بروید.
کلیک
تغییر تاریخ . برای حذف الگو، روی الگوی مورد نظر خود کلیک کنید.
روی «بیشتر» کلیک کنید، سپس «حذف» را انتخاب کنید. وقتی از شما خواسته شد حذف را تأیید کنید، روی «حذف» کلیک کنید.
قالبهای Remote Config را دانلود و منتشر کنید
قالبهای Remote Config را دانلود و منتشر کنید تا آنها را در سیستمهای کنترل منبع و ساخت خود ادغام کنید، بهروزرسانیهای پیکربندی را خودکار کنید و پارامترها و مقادیر را در چندین پروژه همگامسازی کنید.
میتوانید الگوی Remote Config در حال حاضر فعال است را دانلود کنید.از کنسول Firebase .سپس میتوانید فایل JSON خروجی گرفته شده را بهروزرسانی کرده و آن را در همان پروژه منتشر کنید، یا آن را در یک پروژه جدید یا موجود منتشر کنید.
فرض کنید چندین پروژه دارید که مراحل مختلف چرخه حیات توسعه نرمافزار شما را نشان میدهند، مانند محیطهای توسعه، آزمایش، مرحلهبندی و تولید. در این حالت، میتوانید با دانلود یک الگوی کاملاً آزمایششده از پروژه مرحلهبندی خود و انتشار آن در پروژه تولید، آن را از محیط مرحلهبندی به محیط تولید خود ارتقا دهید.
همچنین میتوانید از این روش برای انتقال پیکربندیها از یک پروژه به پروژه دیگر یا پر کردن یک پروژه جدید با پارامترها و مقادیر از یک پروژه از پیش تعیینشده استفاده کنید.
پارامترها و مقادیر پارامتری که به طور خاص به عنوان گونههای مختلف در یک آزمایش A/B Testing ایجاد شدهاند، در قالبهای صادر شده لحاظ نمیشوند.
برای خروجی گرفتن و وارد کردن قالبهای Remote Config :
- الگوی فعلی Remote Config Config را دانلود کنید .
- الگوی Remote Config را اعتبارسنجی کنید .
- الگوی Remote Config را منتشر کنید .
الگوی پیکربندی از راه دور فعلی را دانلود کنید
برای دانلود الگوی فعال Remote Config با فرمت JSON از دستور زیر استفاده کنید:
کنسول Firebase
در کنسول Firebase ، به صفحه DevOps & Engagement > Remote Config > Parameters or Conditions بروید.
باز کنید
منوی و دانلود فایل پیکربندی فعلی را انتخاب کنید. وقتی از شما خواسته شد، روی «دانلود فایل پیکربندی» کلیک کنید، مکانی را که میخواهید فایل در آن ذخیره شود انتخاب کنید، سپس روی «ذخیره» کلیک کنید.
رابط خط فرمان 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
در کنسول Firebase ، به صفحه DevOps & Engagement > Remote Config > Parameters or Conditions بروید.
باز کنید
منوی و گزینه انتشار از یک فایل را انتخاب کنید. وقتی از شما خواسته شد، روی مرور کلیک کنید، به فایل 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
در کنسول Firebase ، به صفحه DevOps & Engagement > Remote Config > Parameters بروید.
باز کنید
منوی و دانلود مقادیر پیشفرض را انتخاب کنید. وقتی از شما خواسته شد، روی دکمه رادیویی مربوط به فرمت فایلی که میخواهید دانلود کنید کلیک کنید و سپس روی «دانلود فایل» کلیک کنید.
برای اطلاعات بیشتر در مورد وارد کردن مقادیر پیشفرض Remote Config به برنامه خود، به موارد زیر مراجعه کنید: