قم بتوصيل تطبيقك بـ Cloud Storage for Firebase Emulator

قبل توصيل تطبيقك بـ Cloud Storage لمحاكي Firebase، تأكد من فهمك لسير عمل Firebase Local Emulator Suite الشامل ، ومن تثبيت Local Emulator Suite وتكوينه ومراجعة أوامر CLI الخاصة به.

اختر مشروع Firebase

يحاكي Firebase Local Emulator Suite المنتجات لمشروع Firebase واحد.

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

يدعم Local Emulator Suite محاكاة مشاريع Firebase الحقيقية والمشاريع التجريبية .

نوع المشروع سمات استخدم مع المحاكيات
حقيقي

مشروع Firebase الحقيقي هو المشروع الذي قمت بإنشائه وتكوينه (على الأرجح عبر وحدة تحكم Firebase).

تحتوي المشاريع الحقيقية على موارد مباشرة، مثل مثيلات قاعدة البيانات أو مجموعات التخزين أو الوظائف أو أي مورد آخر قمت بإعداده لمشروع Firebase هذا.

عند العمل مع مشاريع Firebase حقيقية، يمكنك تشغيل برامج محاكاة لأي من المنتجات المدعومة أو جميعها.

بالنسبة لأي منتجات لا تقوم بمحاكاتها، ستتفاعل تطبيقاتك والتعليمات البرمجية الخاصة بك مع المورد المباشر (مثيل قاعدة البيانات، وحاوية التخزين، والوظيفة، وما إلى ذلك).

تجريبي

لا يحتوي مشروع Firebase التجريبي على تكوين Firebase حقيقي ولا توجد موارد مباشرة. عادةً ما يتم الوصول إلى هذه المشاريع عبر Codelabs أو البرامج التعليمية الأخرى.

معرفات المشروع للمشاريع التجريبية لها البادئة demo- .

عند العمل مع مشاريع Firebase التجريبية، تتفاعل تطبيقاتك ورموزك البرمجية مع المحاكيات فقط . إذا حاول تطبيقك التفاعل مع مورد لا يعمل عليه المحاكي، فسوف يفشل هذا الرمز.

ننصحك باستخدام المشاريع التجريبية حيثما أمكن ذلك. تشمل الفوائد ما يلي:

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

قم بتجهيز تطبيقك للتحدث مع المحاكيات

منصات Android وApple ومجموعات SDK للويب

قم بإعداد التكوين داخل التطبيق أو فئات الاختبار للتفاعل مع Cloud Storage لمحاكي 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);
سويفت
Storage.storage().useEmulator(withHost: "127.0.0.1", port: 9199)

Web modular API

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 namespaced API

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 لمحاكي 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 لمحاكيات 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"

استيراد وتصدير البيانات

تتيح لك قاعدة البيانات والتخزين السحابي لمحاكيات 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 بين حزم Firebase SDK العادية (أنظمة الويب وAndroid وApple).

توجد قيود لاختبار التطبيقات من جانب الخادم. تستخدم حزم SDK الخاصة بـ Firebase Admin سطح 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 لإنشاء مجموعات التخزين أو إدراجها أو الحصول عليها أو حذفها.
  • من واجهة برمجة تطبيقات Google Cloud Storage Objects ، يتم دعم الطرق التالية: copy ، delete ، get ، insert ، list ، patch ، rewrite ، update .

سحابة IAM

لا يحاول Firebase Emulator Suite تكرار أو احترام أي سلوك متعلق بـ IAM للتشغيل. تلتزم المحاكيات بقواعد أمان Firebase المتوفرة، ولكن في المواقف التي يتم فيها استخدام IAM بشكل طبيعي، على سبيل المثال لتعيين حساب الخدمة الذي يستدعي وظائف السحابة وبالتالي الأذونات، فإن المحاكي غير قابل للتكوين وسيستخدم الحساب المتوفر عالميًا على جهاز المطور الخاص بك، يشبه تشغيل برنامج نصي محلي مباشرة.

إشعارات النشر/الفرعية

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

البيانات التعريفية على مستوى الجرافة

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

ماذا بعد؟

  • للحصول على مجموعة منسقة من مقاطع الفيديو وأمثلة تفصيلية عن كيفية الاستخدام، اتبع قائمة تشغيل تدريب Firebase Emulators .
  • نظرًا لأن الوظائف التي يتم تشغيلها هي تكامل نموذجي مع Cloud Storage for Firebase، فتعرف على المزيد حول Cloud Functions لمحاكي Firebase في Run jobs locally .