البيئات المتوافقة مع حزمة تطوير البرامج (SDK) لمنصّة Firebase JavaScript

البيئات المتوافقة

تتوفّر حزمة SDK لنظام التشغيل Firebase JavaScript رسميًا في البيئات التالية.

المتصفحات

منتج Firebase Edge Firefox Chrome Safari على نظام التشغيل iOS Safari
App Check
Analytics
Authentication
Cloud Firestore
(باستثناء
الثبات)

(باستثناء
الثبات
إذا كان الإصدار 10 من نظام التشغيل iOS أو إصدار أقدم)
Cloud Functions
Firebase عملية تثبيت
Cloud Messaging
(الإصدار 17 من Edge أو الإصدارات اللاحقة، باستثناء الأجهزة الجوّالة)
Cloud Storage
Performance Monitoring
Realtime Database
Remote Config
Vertex AI in Firebase

البيئات الأخرى

منتج Firebase React Native ‫Node.js (18 عامًا أو أكثر) إضافات
Chrome
كوردوفا
App Check
(باستخدام موفِّر مخصّص لإجراء عملية إثبات ملكية الجهاز الأصلي)

(باستخدام موفِّر مخصّص)
Analytics
Authentication
(راجِع ملاحظة)

(راجِع ملاحظة)

(راجِع ملاحظة)

(راجِع ملاحظة)
Cloud Firestore
(باستثناء
الثبات)

(باستثناء
الثبات)
Cloud Functions
Data Connect
Firebase عملية تثبيت
Cloud Messaging
Cloud Storage
(باستثناء
عمليات التحميل)
Performance Monitoring
Realtime Database
Remote Config
Vertex AI in Firebase

تعويض الميزات المفقودة من المتصفحات

تم تصميم حزمة SDK لنظام التشغيل Firebase JavaScript استنادًا إلى أحدث معايير منصة الويب. لا تتيح بعض المتصفحات القديمة وبيئات JavaScript جميع الميزات التي تتطلّبها Firebase. إذا كان عليك توفير هذه المتصفّحات/البيئات، يجب تحميل مكونات polyfill وفقًا لذلك.

تحدِّد الأقسام أدناه معظم مجموعات polyfill التي قد تحتاج إليها.

الإضافات المطلوبة لpolyfill

البيئات العناصر القابلة للتضمين
الإصدار 7 و8 و9 من Safari الإصدار الثابت من اللغة الإسبانية
عدد العقد أقل من 10 الإصدار الثابت من اللغة الإسبانية

الإضافات الاختيارية لpolyfill

البيئات العناصر القابلة للتضمين منتجات Firebase
  • الإصدار 10.1 من Safari أو الإصدارات الأقدم
  • الإصدار 10.3 أو إصدار أقدم من نظام التشغيل iOS
fetch
  • Authentication
  • Cloud Firestore
  • Cloud Functions
  • Performance Monitoring
  • العقدة < 18
fetch
  • Authentication
  • Cloud Firestore
  • Cloud Functions
  • Cloud Storage
  • React Native وExpo
base-64
  • Cloud Storage

الإضافات المتوافقة مع الإصدارات القديمة المقترَحة

العناصر القابلة للتضمين الترخيص
ES الإصدار الثابت MIT
fetch - `cross-fetch` - الأفضل للمتصفّحات القديمة MIT
fetch - ‏`undici` - الأفضل لـ Node.js MIT
base-64 MIT

الإعداد المطلوب لـ Polyfill في React Native وExpo

بالنسبة إلى React Native وExpo، إذا كنت تحمّل سلسلة تم ترميزها باستخدام base-64، عليك اتّباع الخطوات التالية:

ثبِّت base-64 من npm:

npm install base-64

استورِد decode من base-64 واربطه بالنطاق العام باسم atob حتى تتمكّن Cloud Storage من الوصول إليه.

import { decode } from 'base-64';

if(typeof atob === 'undefined') {
  global.atob = decode;
}

إضافة polyfills في تطبيقك

الخيار 1: (إجراء يُنصح به) استخدام أداة تجميع مدمجة مع Babel

إذا كنت تستخدم أداة تجميع، يمكنك دمجها مع Babel و @babel/preset-env للحصول على polyfills.

استخدِم دليل الإعداد التفاعلي في Babel للتعرّف على كيفية دمج Babel مع أداة تجميع الحِزم.

باستخدام Babel، لا داعي للقلق بشأن مكونات polyfills الدقيقة المطلوب تضمينها. بدلاً من ذلك، يمكنك تحديد الحد الأدنى لمتطلبات بيئة المتصفّح التي تحتاج إلى توفيرها. بعد ذلك، يضيف Babel وحدات polyfill اللازمة نيابةً عنك. يضمن Babel استيفاء متطلبات توافق المتصفّح دائمًا، حتى إذا بدأ Firebase أو رمزك البرمجي باستخدام ميزات ES الجديدة.

يحتوي @babel/preset-env على معلومات detailed حول خيارات الإعداد المتاحة لتحديد بيئة استهداف (الخيار targets) وإضافة polyfills (الخيار useBuiltIns).

الخيار 2: (غير مستحسن) إضافة polyfills يدويًا

يمكنك إضافة polyfills يدويًا باستخدام مكتبات polyfill المفضّلة لديك (مثل core-js).

import 'core-js/stable'
import 'cross-fetch/polyfill';

توفّر core-js أيضًا ملفًا شاملاً لعناصر الربط يمكنك تضمينه مباشرةً في صفحة HTML.

يمكن أن يكون هذا الخيار طريقة ملائمة لإدارة polyfills إذا كنت لا تستخدم Babel. ومع ذلك، لا ننصح باستخدام هذا الخيار الشامل في التطبيقات المخصّصة للإصدار العلني لأنّه سيتضمّن على الأرجح مكونات polyfill غير ضرورية، ما يزيد من ملف برمجي الصفحة وبالتالي وقت تحميلها.