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