قبل ربط تطبيقك بمحاكي 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)
Unity
FirebaseStorage storage = FirebaseStorage.DefaultInstance; // Connects to the Storage Emulator running on port 9199 storage.UseEmulator("127.0.0.1", 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 SDKs تلقائيًا بمحاكي 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.
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 الأساسية).
هناك قيود على اختبار التطبيقات من جهة الخادم. تستخدم حِزم 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 تكرار أي سلوك مرتبط بإدارة الهوية وإمكانية الوصول أو الالتزام به عند التشغيل. تلتزم المحاكيات بقواعد أمان Firebase المقدَّمة، ولكن في الحالات التي يتم فيها استخدام "إدارة الهوية وإمكانية الوصول" عادةً، على سبيل المثال لضبط حساب خدمة استدعاء 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 على تشغيل الدوال محليًا.