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

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

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

Firebase Local Emulator Suite محصولات را برای یک پروژه 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

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

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 for Firebase با استفاده از شبیه‌ساز راه‌اندازی می‌شوند ، نیازی به تنظیم اضافی نیست. وقتی شبیه سازهای Cloud Storage for Firebase و Cloud Functions هر دو در حال اجرا هستند، به طور خودکار با هم کار می کنند.

Admin SDK s

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

export FIREBASE_STORAGE_EMULATOR_HOST="127.0.0.1:9199"

توجه داشته باشید که شبیه ساز Cloud Functions به طور خودکار از شبیه ساز Cloud Storage for Firebase آگاه است، بنابراین می توانید هنگام آزمایش ادغام بین Cloud Functions و شبیه سازهای Cloud Storage for Firebase از این مرحله صرفنظر کنید. متغیر محیطی به طور خودکار برای Admin SDK در Cloud Storage for 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 for 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 for Firebase به روش‌های زیر با GCS متفاوت است:

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

Cloud IAM

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

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

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

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

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

بعدش چی؟