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

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

أنظمة التشغيل 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 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 . سيتم ضبط متغيّر البيئة تلقائيًا لحزمة تطوير البرامج (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" عن 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 إلى تحسين هذا الدعم بمرور الوقت.

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