برنامه خود را به شبیه ساز Cloud Storage for Firebase متصل کنید

قبل از اتصال برنامه‌تان به شبیه‌ساز Cloud Storage for Firebase، مطمئن شوید که جریان کاری مجموعه شبیه‌ساز محلی Firebase را درک کرده‌اید و مجموعه شبیه‌ساز محلی را نصب و پیکربندی کرده و دستورات CLI آن را مرور می‌کنید.

یک پروژه Firebase را انتخاب کنید

مجموعه شبیه ساز محلی Firebase محصولات را برای یک پروژه Firebase تقلید می کند.

برای انتخاب پروژه مورد استفاده، قبل از شروع شبیه سازها، در CLI از firebase use . یا، می توانید پرچم --project به هر فرمان شبیه ساز ارسال کنید.

Local Emulator Suite از شبیه سازی پروژه های Firebase واقعی و پروژه های آزمایشی پشتیبانی می کند.

نوع پروژه امکانات با شبیه سازها استفاده کنید
واقعی

یک پروژه Firebase واقعی پروژه ای است که شما ایجاد و پیکربندی کرده اید (به احتمال زیاد از طریق کنسول Firebase).

پروژه های واقعی دارای منابع زنده هستند، مانند نمونه های پایگاه داده، سطل های ذخیره سازی، توابع یا هر منبع دیگری که برای آن پروژه Firebase تنظیم کرده اید.

هنگام کار با پروژه های Firebase واقعی، می توانید شبیه سازها را برای هر یک یا همه محصولات پشتیبانی شده اجرا کنید.

برای هر محصولی که شبیه‌سازی نمی‌کنید، برنامه‌ها و کد شما با منبع زنده (نمونه پایگاه داده، سطل ذخیره‌سازی، عملکرد و غیره) تعامل خواهند داشت.

نسخه ی نمایشی

یک پروژه Firebase آزمایشی هیچ پیکربندی Firebase واقعی و هیچ منبع زنده ای ندارد. این پروژه ها معمولاً از طریق نرم افزارهای کد یا آموزش های دیگر قابل دسترسی هستند.

شناسه های پروژه برای پروژه های نمایشی دارای پیشوند demo- هستند.

هنگام کار با پروژه های Firebase آزمایشی، برنامه ها و کد شما فقط با شبیه سازها تعامل دارند. اگر برنامه شما سعی کند با منبعی که شبیه ساز برای آن اجرا نمی شود تعامل داشته باشد، آن کد با شکست مواجه می شود.

توصیه می کنیم تا جایی که امکان دارد از پروژه های نمایشی استفاده کنید. مزایا عبارتند از:

  • راه اندازی آسان تر، زیرا می توانید شبیه سازها را بدون ایجاد پروژه Firebase اجرا کنید
  • ایمنی قوی تر، زیرا اگر کد شما به طور تصادفی منابع غیر شبیه سازی شده (تولید) را فراخوانی کند، هیچ شانسی برای تغییر داده ها، استفاده و صورتحساب وجود ندارد.
  • پشتیبانی آفلاین بهتر است، زیرا برای دانلود پیکربندی SDK نیازی به دسترسی به اینترنت نیست.

برنامه خود را برای صحبت با شبیه سازها ابزار کنید

پلتفرم‌های اندروید، اپل و وب SDK

پیکربندی درون‌برنامه یا کلاس‌های آزمایشی خود را برای تعامل با شبیه‌ساز Cloud Storage for Firebase به شرح زیر تنظیم کنید.

Kotlin+KTX
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
val storage = Firebase.storage
storage.useEmulator("10.0.2.2", 9199)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
FirebaseStorage storage = FirebaseStorage.getInstance();
storage.useEmulator("10.0.2.2", 9199);
سریع
Storage.storage().useEmulator(withHost: "127.0.0.1", port: 9199)

Web modular API

const { getStorage, connectStorageEmulator } = require("firebase/storage");

const storage = getStorage();
if (location.hostname === "localhost") {
  // Point to the Storage emulator running on localhost.
  connectStorageEmulator(storage, "127.0.0.1", 9199);
} 

Web namespaced API

var storage = firebase.storage();
if (location.hostname === "localhost") {
  // Point to the Storage emulator running on localhost.
  storage.useEmulator("127.0.0.1", 9199);
} 

برای آزمایش عملکردهای Cloud که توسط Cloud Storage برای رویدادهای Firebase با استفاده از شبیه‌ساز راه‌اندازی می‌شوند، نیازی به تنظیم اضافی نیست. وقتی شبیه سازهای Cloud Storage for Firebase و Cloud Functions هر دو در حال اجرا هستند، به طور خودکار با هم کار می کنند.

SDK های مدیریت

هنگامی که متغیر محیطی FIREBASE_STORAGE_EMULATOR_HOST تنظیم شود، کیت توسعه نرم افزاری مدیریت Firebase به طور خودکار به شبیه ساز Cloud Storage for Firebase متصل می شود:

export FIREBASE_STORAGE_EMULATOR_HOST="127.0.0.1:9199"

توجه داشته باشید که شبیه ساز Cloud Functions به طور خودکار از شبیه ساز Cloud Storage for Firebase آگاه است، بنابراین می توانید هنگام آزمایش ادغام بین توابع Cloud و شبیه سازهای Cloud Storage برای Firebase از این مرحله صرفنظر کنید. متغیر محیطی به طور خودکار برای Admin SDK در Cloud Storage برای Firebase تنظیم می شود.

اگر می‌خواهید کد Admin SDK شما به یک شبیه‌ساز مشترک که در محیط دیگری اجرا می‌شود متصل شود، باید همان ID پروژه‌ای را که با استفاده از Firebase CLI تنظیم کرده‌اید، مشخص کنید. می‌توانید یک شناسه پروژه را برای initializeApp به طور مستقیم ارسال کنید یا متغیر محیطی GCLOUD_PROJECT را تنظیم کنید.

Node.js Admin SDK
admin.initializeApp({ projectId: "your-project-id" });
متغیر محیطی
export GCLOUD_PROJECT="your-project-id"

واردات و صادرات داده ها

پایگاه داده و شبیه سازهای Cloud Storage برای Firebase به شما امکان می دهند داده ها را از یک نمونه شبیه ساز در حال اجرا صادر کنید. مجموعه‌ای از داده‌ها را برای استفاده در آزمایش‌های واحد یا گردش‌های کاری پیوسته یکپارچه تعریف کنید، سپس آن‌ها را صادر کنید تا بین تیم به اشتراک گذاشته شود.

firebase emulators:export ./dir

در آزمایش‌ها، هنگام راه‌اندازی شبیه‌ساز، داده‌های پایه را وارد کنید.

firebase emulators:start --import=./dir

می‌توانید به شبیه‌ساز دستور دهید در هنگام خاموش شدن، داده‌ها را صادر کند، یا یک مسیر صادراتی را مشخص کنید یا به سادگی با استفاده از مسیر ارسال شده به پرچم --import .

firebase emulators:start --import=./dir --export-on-exit

این گزینه های واردات و صادرات داده ها با فرمان firebase emulators:exec نیز کار می کنند. برای اطلاعات بیشتر به مرجع فرمان شبیه ساز مراجعه کنید.

چگونه شبیه ساز Cloud Storage for Firebase با تولید متفاوت است

برای آزمایش برنامه های سرویس گیرنده، شبیه ساز Cloud Storage for Firebase با توجه به مساحت سطح API Firebase تقریباً کاملاً با تولید هماهنگ می شود. انتظار می رود تمام دستورات Firebase بین SDK های Firebase معمولی (پلتفرم های وب، اندروید و اپل) کار کنند.

برای آزمایش برنامه های سمت سرور، محدودیت هایی وجود دارد. Firebase Admin SDK از سطح Google Cloud API استفاده می‌کند و همه نقاط پایانی این API شبیه‌سازی نمی‌شوند. به عنوان یک قاعده کلی، هر کاری که می‌توان از SDKهای کلاینت انجام داد (بارگذاری یا حذف فایل‌ها، دریافت و تنظیم متادیتا) نیز برای استفاده از SDKهای مدیریت اجرا می‌شود، اما هر چیزی فراتر از آن نیست. استثناهای قابل توجه در زیر ذکر شده است.

تفاوت با Google Cloud Storage

محصول Cloud Storage for Firebase، از جمله شبیه‌ساز Storage، زیرمجموعه‌ای از عملکرد Google Cloud Storage (GCS) را با تمرکز بر اشیاء ذخیره‌سازی ارائه می‌کند که برای توسعه برنامه‌های Firebase بسیار مفید است. Cloud Storage برای Firebase به روش‌های زیر با GCS متفاوت است:

  • Cloud Storage برای Firebase در حال حاضر Bucket API برای ایجاد، فهرست‌بندی، دریافت یا حذف سطل‌های ذخیره‌سازی پشتیبانی نمی‌کند.
  • از Google Cloud Storage Objects API ، روش‌های زیر پشتیبانی می‌شوند: copy ، delete ، get ، insert ، list ، patch ، rewrite ، update .

Cloud IAM

مجموعه Firebase Emulator تلاشی برای تکرار یا احترام به رفتارهای مرتبط با IAM برای اجرا ندارد. شبیه سازها به قوانین امنیتی Firebase ارائه شده پایبند هستند، اما در شرایطی که IAM به طور معمول مورد استفاده قرار می گیرد، به عنوان مثال برای تنظیم عملکردهای ابری که حساب سرویس را فراخوانی می کند و بنابراین مجوزها، شبیه ساز قابل پیکربندی نیست و از حساب جهانی در دسترس در دستگاه توسعه دهنده شما استفاده می کند. مشابه اجرای مستقیم یک اسکریپت محلی.

اعلان‌های Pub/Sub

شبیه‌ساز Cloud Storage for Firebase با شبیه‌ساز Cloud Pub/Sub ادغام نمی‌شود و بنابراین از ایجاد کانال‌ها/اعلان‌ها برای تغییرات شی ذخیره‌سازی پشتیبانی نمی‌کند. توصیه می‌کنیم مستقیماً از محرک‌های Cloud Functions Storage استفاده کنید.

فراداده در سطح سطل

شبیه‌ساز Cloud Storage for Firebase از هیچ پیکربندی در سطح سطل از جمله کلاس ذخیره‌سازی، پیکربندی CORS در سطح سطل، برچسب‌ها یا خط‌مشی‌های حفظ پشتیبانی نمی‌کند. Firebase قصد دارد این پشتیبانی را در طول زمان بهبود بخشد.

بعدش چی؟