| انتخاب پلاتفرم: | iOS+ Android Web Flutter Unity C++ |
میتوانید از «پیکربندی از دور Firebase» برای تعریف پارامترها در برنامهتان و بهروزرسانی مقادیر آنها در فضای ابری استفاده کنید، که به شما امکان میدهد ظاهر و رفتار برنامهتان را بدون توزیع بهروزرسانی برنامه تغییر دهید. این راهنما شما را در مراحل شروع به کار راهنمایی میکند و چند نمونه کد ارائه میدهد.
مرحله ۱: افزودن Firebase و «کیت توسعه نرمافزار پیکربندی از دور» به برنامه
اگر قبلاً این کار را انجام ندادهاید، کیتهای توسعه نرمافزار Firebase را برای Flutter نصب و مقداردهی اولیه کنید.
برای «پیکربندی از دور»، Google Analytics برای هدفیابی شرطی نمونههای برنامه برای ویژگیهای کاربر و مخاطبان لازم است. مطمئن شوید که Google Analytics را در پروژه خود فعال کردهاید.
از فهرست راهنمای ریشه پروژه Flutter، دستور زیر را برای نصب افزایه «پیکربندی از دور» اجرا کنید:
flutter pub add firebase_remote_configهمچنین، بهعنوان بخشی از راهاندازی «پیکربندی از دور»، باید «کیت توسعه نرمافزار Firebase برای Google Analytics» را به برنامهتان اضافه کنید:
flutter pub add firebase_analyticsبازسازی پروژه:
flutter runاگر از «پیکربندی از دور» در macOS استفاده میکنید، همرسانی Keychain را در Xcode فعال کنید.
مرحله ۲: دریافت شیء تکنمونه «پیکربندی از دور»
نمونهای از شیء «پیکربندی از دور» دریافت کنید و حداقل فاصله واکشی را تنظیم کنید تا امکان بازآوری مکرر فراهم شود:
final remoteConfig = FirebaseRemoteConfig.instance;
await remoteConfig.setConfigSettings(RemoteConfigSettings(
fetchTimeout: const Duration(minutes: 1),
minimumFetchInterval: const Duration(hours: 1),
));
از شیء تکتایی برای ذخیره مقادیر پارامتر پیشفرض درونبرنامهای، واکشی مقادیر پارامتر بهروزشده از زیرینه، و کنترل زمان دردسترس قرار گرفتن مقادیر واکشیشده برای برنامه استفاده میشود.
درطول توسعه، توصیه میشود حداقل فاصله واکشی نسبتاً کوتاهی تنظیم کنید. برای اطلاعات بیشتر، Throttling (محدود کردن) را ببینید.
مرحله ۳: تنظیم مقادیر پارامتر پیشفرض درونبرنامهای
میتوانید مقدارهای پارامتر پیشفرض درونبرنامهای را در شیء «پیکربندی از دور» تنظیم کنید تا برنامهتان قبلاز اتصال به پشتیبان «پیکربندی از دور» همانطور که درنظر گرفته شده است عمل کند و مقدارهای پیشفرض درصورتیکه هیچ مقداری در پشتیبان تنظیم نشده باشد دردسترس قرار گیرد.
await remoteConfig.setDefaults(const {
"example_param_1": 42,
"example_param_2": 3.14159,
"example_param_3": true,
"example_param_4": "Hello, world!",
});
مرحله ۴: دریافت مقادیر پارامتر برای استفاده در برنامه
اکنون میتوانید مقادیر پارامتر را از شیء «پیکربندی از دور» دریافت کنید. اگر مقادیر را در زیرینه تنظیم کنید، آنها را واکشی کنید، و سپس آنها را فعال کنید، آن مقادیر برای برنامه شما دردسترس است. درغیراینصورت، مقادیر پارامتر درونبرنامهای را که بااستفاده از setDefaults() پیکربندی شده است دریافت میکنید.
برای دریافت این مقادیر، هریک از روشهای زیر را که به نوع داده موردانتظار برنامهتان نگاشت میشود فراخوانی کنید و کلید پارامتر را بهعنوان آرگومان ارائه دهید:
getBool()getDouble()getInt()getString()
مرحله ۵: تنظیم مقادیر پارامتر در زیرینه «پیکربندی از دور»
بااستفاده از کنسول Firebase یا میاناهای برنامهسازی کاربردی زیرینه «پیکربندی از دور»، میتوانید مقادیر پیشفرض سمت سرور جدیدی ایجاد کنید که مقادیر درونبرنامهای را براساس منطق شرطی یا هدفیابی کاربر موردنظرتان ملغی میکند. این بخش مراحل کنسول Firebase را برای ایجاد این مقادیر شرح میدهد.
در کنسول Firebase، به DevOps و تعامل > پیکربندی از دور بروید.
پارامترهایی با همان نام پارامترهایی که در برنامهتان تعریف کردهاید تعریف کنید. برای هر پارامتر، میتوانید مقدار پیشفرضی تنظیم کنید (که درنهایت مقدار پیشفرض درونبرنامهای مربوطه را ملغی میکند)، و همچنین میتوانید مقادیر شرطی تنظیم کنید. برای کسب اطلاعات بیشتر، به پارامترها و شرایط «پیکربندی از دور» مراجعه کنید.
مرحله ۶: واکشی و فعال کردن مقادیر
برای واکشی مقادیر پارامتر از زیرینه «پیکربندی از دور»، روش
fetch()را فراخوانی کنید. هر مقداری که در زیرینه تنظیم میکنید واکشی میشود و در شیء «پیکربندی از دور» ذخیره میشود.برای اینکه مقادیر پارامتر واکشیشده را دراختیار برنامهتان قرار دهید، متد
activate()را فراخوانی کنید.برای مواردی که میخواهید مقادیر را در یک تماس واکشی و فعال کنید، میتوانید از درخواست
fetchAndActivate()برای واکشی مقادیر از زیرینه «پیکربندی ازراهدور» و دردسترس قرار دادن آنها برای برنامه استفاده کنید:await remoteConfig.fetchAndActivate();
ازآنجاییکه این مقادیر پارامتر بهروزشده بر رفتار و ظاهر برنامه شما تأثیر میگذارد، باید مقادیر واکشیشده را در زمانی فعال کنید که تجربه روان و یکپارچهای را برای کاربرتان تضمین کند، مثلاً دفعه بعدی که کاربر برنامهتان را باز میکند. برای اطلاعات بیشتر و مثالها، استراتژیهای بار کردن «پیکربندی از دور» را ببینید.
مرحله ۷: بهروزرسانیها را بهطور همزمان بشنوید
پساز واکشی مقادیر پارامتر، میتوانید از «پیکربندی از دور» بیدرنگ برای گوش دادن به بهروزرسانیهای زیرینه «پیکربندی از دور» استفاده کنید. وقتی بهروزرسانی دردسترس باشد، «پیکربندی از دور» در زمان واقعی به دستگاههای متصل علامت میدهد و پساز انتشار نسخه جدید «پیکربندی از دور»، تغییرات را بهطور خودکار واکشی میکند.
توجه داشته باشید که «پیکربندی از دور» همزمان برای «وب» دردسترس نیست.
در برنامهتان، از
onConfigUpdatedبرای شروع گوش دادن به بهروزرسانیها و واکشی خودکار مقادیر پارامتر جدید استفاده کنید.remoteConfig.onConfigUpdated.listen((event) async { await remoteConfig.activate(); // Use the new config values here. });دفعه بعد که نسخه جدیدی از «پیکربندی از دور» خود را منتشر میکنید، دستگاههایی که برنامه شما را اجرا میکنند و منتظر تغییرات هستند پیکربندی جدید را فعال خواهند کرد.
محدودسازی
اگر برنامهای در یک دوره زمانی کوتاه دفعات زیادی واکشی کند، تماسهای واکشی محدود خواهد شد و مقدار دارایی lastFetchStatus در FirebaseRemoteConfig به RemoteConfigFetchStatus.throttle تغییر خواهد کرد.
حداقل فاصله واکشی پیشفرض برای «پیکربندی از دور» ۱۲ ساعت است، که یعنی پیکربندیها در بازه ۱۲ ساعته بیشاز یکبار از زیرینه واکشی نمیشوند، صرفنظر از اینکه چند تماس واکشی واقعاً برقرار شده است.
درطول توسعه برنامه، اگر از «پیکربندی از دور» بیدرنگ (که توصیه میکنیم) استفاده نمیکنید، ممکن است بخواهید پیکربندیها را بسیار مکرر (چندین بار در ساعت) واکشی و فعال کنید تا بتوانید درحین توسعه و آزمایش برنامه خود بهسرعت تکرار کنید. برای تطبیق با تکرار سریع در پروژهای با حداکثر ۱۰ توسعهدهنده، میتوانید موقتاً حداقل فاصله واکشی را با setConfigSettings() روی مقدار کمی تنظیم کنید.
final remoteConfig = FirebaseRemoteConfig.instance;
await remoteConfig.setConfigSettings(RemoteConfigSettings(
fetchTimeout: const Duration(minutes: 1),
minimumFetchInterval: const Duration(minutes: 5),
));