ربط تطبيقك بمحاكي Cloud Storage for Firebase

قبل ربط تطبيقك بمحاكي Cloud Storage for Firebase، تأكَّد من فهم سير عمل Firebase Local Emulator Suite بشكل عام، وتثبيت Local Emulator Suite وضبطه ومراجعة أوامر سطر الأوامر.

اختيار مشروع على Firebase

تحاكي Firebase Local Emulator Suite المنتجات لمشروع واحد على Firebase.

لاختيار المشروع الذي تريد استخدامه، قبل بدء المحاكيات، يمكنك تشغيل firebase use في سطر الأوامر في دليل العمل. أو يمكنك تمرير العلامة --project إلى كل أمر مخصّص للمحاكي.

Local Emulator Suite يتيح محاكاة مشاريع حقيقية ومشاريع تجريبية على Firebase.

نوع المشروع الميزات الاستخدام مع المحاكيات
حقيقي

مشروع Firebase الحقيقي هو المشروع الذي أنشأته وضبطته (على الأرجح من خلال وحدة تحكّم Firebase).

تحتوي المشاريع الحقيقية على موارد نشطة، مثل نُسخ قاعدة البيانات أو حِزم التخزين أو الدوالّ أو أيّ مورد آخر أعددته لهذا المشروع على Firebase.

عند العمل مع مشاريع Firebase حقيقية، يمكنك تشغيل المحاكيات لأي أو كل المنتجات المتوافقة.

بالنسبة إلى أي منتجات لا تحاكيها، ستتفاعل تطبيقاتك ورمزك البرمجي مع المورد النشط (مثيل قاعدة البيانات، وحزمة التخزين والدالة، وما إلى ذلك).

تجريبي

لا يتضمّن المشروع التجريبي على Firebase أيّ إعدادات حقيقية على Firebase ولا يتضمّن أيّ موارد نشطة. يتم الوصول إلى هذه المشاريع عادةً من خلال دروس تطبيقية حول الترميز أو برامج تعليمية أخرى.

تبدأ أرقام تعريف المشاريع التجريبية بالبادئة demo-.

عند العمل مع مشاريع Firebase التجريبية، تتفاعل تطبيقاتك ورموزك البرمجية مع المحاكيات فقط. إذا حاول تطبيقك التفاعل مع مورد لا يعمل عليه المحاكي، سيتعطّل هذا الرمز البرمجي.

ننصحك باستخدام المشاريع التجريبية كلما أمكن. تتضمّن المزايا ما يلي:

  • إعداد أسهل، لأنّه يمكنك تشغيل المحاكيات بدون إنشاء مشروع Firebase مطلقًا
  • أمان أقوى، لأنّه إذا استدعى الرمز البرمجي عن طريق الخطأ موارد (إنتاج) غير محاكية، لن يكون هناك احتمال بتغيير البيانات واستخدامها والفوترة
  • إتاحة استخدام حزمة SDK بلا إنترنت، لأنّه ليس عليك الاتصال بالإنترنت لتنزيل إعدادات حزمة SDK

تجهيز تطبيقك للتواصل مع المحاكيات

أنظمة التشغيل Android وApple وحِزم تطوير البرامج (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);
Swift
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 ثانية

تتصل Firebase Admin SDK تلقائيًا بمحاكي Cloud Storage for Firebase عند ضبط متغيّر البيئة FIREBASE_STORAGE_EMULATOR_HOST:

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 بمحاكي مشترَك يعمل في بيئة أخرى، عليك تحديد رقم تعريف المشروع نفسه الذي ضبطته باستخدام واجهة برمجة التطبيقات Firebase CLI. يمكنك تمرير معرّف مشروع إلى initializeApp مباشرةً أو ضبط متغيّر البيئة GCLOUD_PROJECT.

حزمة تطوير البرامج (SDK) لمشرف Node.js
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 مع الإصدار العلني بشكلٍ كامل تقريبًا في ما يتعلق بمساحة عرض واجهة برمجة التطبيقات Firebase. من المتوقّع أن تعمل جميع أوامر Firebase بين حِزم تطوير البرامج (SDK) العادية لمنصّة Firebase (الويب وAndroid وأنظمة التشغيل من Apple).

هناك قيود مفروضة على اختبار التطبيقات من جهة الخادم. تستخدِم حِزم SDK للمشرف في Firebase سطح واجهة برمجة التطبيقات Google Cloud، ولا تتم محاكاة بعض نقاط النهاية لهذه الواجهة. بوجهٍ عام، يتم أيضًا تنفيذ أيّ إجراء يمكن تنفيذه من حِزم تطوير البرامج (SDK) للعملاء (مثل تحميل الملفات أو حذفها، والحصول على البيانات الوصفية وضبطها) لاستخدامه من حِزم تطوير البرامج (SDK) للمشرفين، ولكن لا يتم تنفيذ أيّ إجراء آخر. في ما يلي الاستثناءات البارزة.

الاختلافات عن Google Cloud Storage

يقدّم منتج Cloud Storage for Firebase، بما في ذلك محاكي مساحة التخزين، مجموعة فرعية من وظائف Google Cloud Storage (GCS) التي تركّز على عناصر التخزين التي تكون مفيدة جدًا لتطوير تطبيقات Firebase. Cloud Storage for Firebase يختلف عن "سحابة Google للخدمات" (GCS) في النقاط التالية:

  • لا تتيح Cloud Storage for Firebase حاليًا واجهات برمجة التطبيقات Bucket ل إنشاء أو إدراج أو الحصول على أو حذف حِزم التخزين.
  • من Google Cloud Storage Objects API، تتوفّر الطُرق التالية: copy وdelete وget وinsert وlist وpatch وrewrite وupdate.

Cloud IAM

لا تحاول مجموعة أدوات المحاكاة في Firebase تكرار أي سلوك مرتبط بإدارة الهوية وإمكانية الوصول (IAM) أو الالتزام به. تلتزم المحاكيات بقواعد أمان Firebase المقدَّمة، ولكن في الحالات التي يتم فيها استخدام إدارة الهوية وإمكانية الوصول (IAM) عادةً، على سبيل المثال لضبط Cloud Functions التي تستدعي حساب الخدمة وبالتالي الأذونات، لن يكون المحاكي قابلاً للضبط وسيستخدم الحساب المتاح على مستوى العالم على جهاز المطوّر، تمامًا مثل تشغيل نص برمجي محلي مباشرةً.

إشعارات Pub/Sub

لا يتم دمج محاكي Cloud Storage for Firebase مع محاكي Pub/Sub في السحابة الإلكترونية، وبالتالي لا يتيح إنشاء قنوات/إشعارات لتغييرات عناصر التخزين. ننصحك باستخدام Cloud Functions عوامل تشغيل مساحة التخزين مباشرةً.

البيانات الوصفية على مستوى الحزمة

لا يتيح محاكي Cloud Storage for Firebase أي إعدادات على مستوى الحزمة، بما في ذلك فئة التخزين أو إعدادات CORS على مستوى الحزمة أو التصنيفات أو سياسات الاحتفاظ. تهدف Firebase إلى تحسين هذا الدعم بمرور الوقت.

الخطوة التالية