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

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

اختيار مشروع في Firebase

تحاكي "حزمة أدوات المحاكاة المحلية في Firebase" منتجات مشروع واحد على Firebase.

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

تتيح حزمة المحاكي المحلي إمكانية محاكاة مشاريع 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 لأحداث Firebase باستخدام المحاكي. عندما تكون مُحاكيات Cloud Storage for Firebase وCloud Functions قيد التشغيل، تعمل هذه الأدوات معًا تلقائيًا.

حزم SDK للمشرف

تتصل حزم SDK لمشرفي Firebase تلقائيًا بمحاكي 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 Storage for Firebase وCloud Storage for Firebase. سيتم ضبط متغيّر البيئة تلقائيًا لحزمة تطوير البرامج (SDK) الخاصة بالمشرف في Cloud Storage for Firebase.

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

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

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

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

إشعارات النشر/الاشتراك

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

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

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

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