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

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

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

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

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

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