ربط تطبيقك بمحاكي Cloud Storage for Firebase

قبل ربط تطبيقك بمحاكي Cloud Storage for Firebase، تأكَّد من أنّك تفهم سير عمل Firebase Local Emulator Suite بشكل عام، بالإضافة إلى تثبيته وضبط إعداداته Local Emulator Suite ومراجعة أوامر CLI.

اختيار مشروع في Firebase

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

لتحديد المشروع المراد استخدامه، قبل بدء تشغيل الأجهزة المحاكية، في واجهة سطر الأوامر firebase use في دليل العمل. أو يمكنك تمرير علامة "--project" على كل محاكي الأمر.

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

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

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

تحتوي المشروعات الحقيقية على موارد مباشرة، مثل مثيلات قاعدة البيانات والتخزين أو المجموعات أو الدوال أو أي مورد آخر أعددته لمنصة Firebase مشروعك.

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

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

تجريبي

لا يتضمن مشروع Firebase التجريبي أي إعداد حقيقي في Firebase لا تتوفر موارد مباشرة. عادة ما يتم الوصول إلى هذه المشروعات من خلال دروس تطبيقية حول الترميز أو برامج تعليمية أخرى.

تتضمّن أرقام تعريف المشاريع الخاصة بالمشاريع التجريبية البادئة demo-.

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

ننصحك باستخدام المشاريع التجريبية كلما أمكن ذلك. تتضمّن المزايا ما يلي:

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

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

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

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

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

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