ربط تطبيقك بمحاكي 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 والويب

يمكنك إعداد الإعدادات داخل التطبيق أو فئات الاختبار للتفاعل مع الـ Cloud Storage for Firebase محاكي على النحو التالي.

Kotlin
// 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 Functions التي يتم تشغيلها بواسطة 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.

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

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

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

يوفر منتج Cloud Storage for Firebase، بما في ذلك محاكي مساحة التخزين، مجموعة فرعية من وظائف Google Cloud Storage (GCS) التي تركز على عناصر التخزين، وهي مفيدة جدًا لتطوير تطبيقات Firebase. Cloud Storage for Firebase يختلف عن 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 مع محاكي Cloud Pub/Sub، وبالتالي لا يتيح إنشاء قنوات أو إشعارات لتغييرات عناصر التخزين. ننصحك باستخدام Cloud Functions مشغّلات مساحة التخزين مباشرةً.

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

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

ما هي الخطوة التالية؟