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