إضافة Firebase إلى مشروع C++ الخاص بك

يمكنك تحسين أداء ألعاب C++ باستخدام حِزم تطوير البرامج (SDK) لـ Firebase C++ التي توفّر واجهة C++ على حِزم تطوير البرامج (SDK) لـ Firebase.

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

يمكنك الاطّلاع على مزيد من المعلومات عن تحسين أداء ألعابك باستخدام Firebase على صفحة ألعاب Firebase.

هل سبق لك إضافة Firebase إلى مشروع C++؟ تأكَّد من استخدام أحدث إصدار من حزمة Firebase C++ SDK.


المتطلبات الأساسية

  • ثبِّت ما يلي:

    • ‫Xcode 13.3.1 أو إصدار أحدث
    • ‫CocoaPods 1.12.0 أو إصدار أحدث
  • تأكَّد من أنّ مشروعك يستهدف إصدارات المنصة التالية أو الإصدارات الأحدث:

    • الإصدار 13 من نظام التشغيل iOS
    • tvOS 13
  • يمكنك إعداد جهاز فعلي أو استخدام المحاكي لتشغيل تطبيقك.

  • سجِّل الدخول إلى Firebase باستخدام حسابك على Google.

الخطوة 2: إنشاء مشروع على Firebase

قبل أن تتمكّن من إضافة Firebase إلى مشروع C++، عليك إنشاء مشروع Firebase للربط بمشروع C++. انتقِل إلى مقالة فهم مشاريع Firebase للاطّلاع على مزيد من المعلومات عن مشاريع Firebase.

الخطوة 3: تسجيل تطبيقك في Firebase

لاستخدام Firebase في تطبيقك على أجهزة Apple، عليك تسجيل تطبيقك باستخدام مشروعك على Firebase. غالبًا ما يُشار إلى عملية تسجيل تطبيقك باسم "إضافة" تطبيقك إلى مشروعك.

  1. انتقِل إلى وحدة تحكّم Firebase.

  2. في وسط صفحة النظرة العامة على المشروع، انقر على رمز iOS+ لبدء سير عمل الإعداد.

    إذا سبق لك إضافة تطبيق إلى مشروعك على Firebase، انقر على إضافة تطبيق لعرض خيارات المنصة.

  3. أدخِل معرّف حزمة تطبيقك في حقل معرّف الحزمة.

  4. (اختياري) أدخِل معلومات التطبيق الأخرى: الاسم المعرِّف للتطبيق ورقم تعريف التطبيق في App Store.

  5. انقر على تسجيل التطبيق.

الخطوة 4: إضافة ملف إعدادات Firebase

  1. انقر على تنزيل GoogleService-Info.plist للحصول على ملف إعدادات Firebase لمنصّات Apple.

  2. افتح مشروع C++ في بيئة تطوير متكاملة، ثم اسحب ملف الإعدادات إلى جذر مشروع C++.

  3. اختَر إضافة ملف الإعدادات إلى جميع الاستهدافات إذا طُلب منك ذلك.

اكتملت مهام الإعداد في وحدة تحكّم Firebase. تابِع إلى إضافة حِزم تطوير البرامج (SDK) لمنصّة Firebase C++ أدناه.

الخطوة 5: إضافة حِزم تطوير البرامج (SDK) لمنصّة Firebase C++

تقدّم الخطوات الواردة في هذا القسم مثالاً على كيفية إضافة منتجات Firebase المتوافقة إلى مشروع Firebase C++.

  1. نزِّل حزمة SDK لنظام التشغيل Firebase C++، ثم فك ضغط حزمة SDK في مكان مناسب.

    لا تقتصر حزمة SDK Firebase C++ على منصة معيّنة، ولكنها تحتوي على مكتبات مخصّصة للمنصة.

  2. أضِف مجموعات Firebase من حزمة تطوير البرامج (SDK) غير المضغوطة.

    1. أنشئ Podfile في حال عدم توفّر ملف:

      cd your-app-directory
      pod init

    2. أضِف إلى ملف Podfile مجموعات Firebase التي تريد استخدامها في تطبيقك.

      تم تفعيل Analytics

      # Add the Firebase pod for Google Analytics
      pod 'FirebaseAnalytics'
      # Add the pods for any other Firebase products you want to use in your app # For example, to use Firebase Authentication and Firebase Realtime Database pod 'FirebaseAuth' pod 'FirebaseDatabase'

      لم يتم تفعيل Analytics

      # Add the pods for the Firebase products you want to use in your app
      # For example, to use Firebase Authentication and Firebase Realtime Database
      pod 'FirebaseAuth'
      pod 'FirebaseDatabase'
    3. ثبِّت وحدات pod، ثم افتح ملف .xcworkspace في Xcode.

      pod install
      open your-app.xcworkspace

  3. أضِف أُطر عمل Firebase من حزمة تطوير البرامج (SDK) التي تم فك ضغطها.

    عادةً ما تكون أسهل طريقة لإضافة هذه الإطارات هي سحبها من نافذة Finder مباشرةً إلى لوحة Project Navigator (مستكشف المشاريع) في Xcode (اللوحة في أقصى يمين الشاشة تلقائيًا، أو انقر على رمز الملف في أعلى يمين Xcode).

    1. أضِف إطار عمل Firebase C++ firebase.framework، وهو مطلوب لاستخدام أي منتج من منتجات Firebase.

    2. أضِف إطار العمل لكل منتج من منتجات Firebase التي تريد استخدامها. على سبيل المثال، لاستخدام Firebase Authentication، أضِف firebase_auth.framework.

  4. في وحدة تحكّم Firebase، انقر على التالي في سير عمل الإعداد.

  5. إذا أضفت Analytics، شغِّل تطبيقك لإرسال إثبات إلى Firebase بأنّك دمجت Firebase بنجاح. بخلاف ذلك، يمكنك تخطّي خطوة التحقّق هذه.

    ستعرض سجلات جهازك عملية إثبات ملكية Firebase التي اكتملت عملية الإعداد. إذا شغّلت تطبيقك على محاكي يتيح الوصول إلى الشبكة، تُعلمك وحدة تحكّم Firebase بإكمال عملية ربط التطبيق.

اكتملت عملية الإعداد. تم تسجيل تطبيقك المكتوب بلغة C++ وضبطه لاستخدام منتجات Firebase.

المكتبات المتاحة

يمكنك الاطّلاع على مزيد من المعلومات حول مكتبات Firebase لـ C++ في المستندات المرجعية وفي إصدار حِزم تطوير البرامج (SDK) المفتوحة المصدر على GitHub.

المكتبات المتاحة لمنصّات Apple

يُرجى العلم أنّ مكتبات C++ لنظام التشغيل Android مُدرَجة في إصدار Android من صفحة الإعداد.

ولكل منتج من منتجات Firebase تبعيات مختلفة. احرص على إضافة جميع التبعيات المُدرَجة لمنتج Firebase المطلوب إلى ملف Podfile وملف برمجة C++.

قد لا يتوافق كل منتج من منتجات Firebase إلا مع مجموعة محدّدة من أنظمة التشغيل من Apple (iOS وtvOS وما إلى ذلك). يمكنك الاطّلاع على المنصات المتوافقة مع كل مكتبة في مقالة مزيد من المعلومات عن C++ وFirebase.

منتج Firebase الإطارات الأساسية والوحدات
AdMob (مطلوبة) firebase.framework
firebase_admob.framework
(مطلوبة) firebase_analytics.framework

pod 'FirebaseAdMob', '11.4.2'
(مطلوبة) pod 'FirebaseAnalytics', '11.4.2'
Analytics (مطلوب) firebase.framework
firebase_analytics.framework

pod 'FirebaseAnalytics', '11.4.2'
App Check (مطلوب) firebase.framework
firebase_app_check.framework

pod 'FirebaseAppCheck', '11.4.2'
Authentication (مطلوب) firebase.framework
firebase_auth.framework

pod 'FirebaseAuth', '11.4.2'
Cloud Firestore (مطلوبة) firebase.framework
firebase_firestore.framework
firebase_auth.framework

pod 'FirebaseFirestore', '11.4.2'
pod 'FirebaseAuth', '11.4.2'
Cloud Functions (مطلوب) firebase.framework
firebase_functions.framework

pod 'FirebaseFunctions', '11.4.2'
Cloud Messaging (مطلوبة) firebase.framework
firebase_messaging.framework
(مُقترَحة) firebase_analytics.framework

pod 'FirebaseMessaging', '11.4.2'
(مُقترَحة) pod 'FirebaseAnalytics', '11.4.2'
Cloud Storage (مطلوب) firebase.framework
firebase_storage.framework

pod 'FirebaseStorage', '11.4.2'
Dynamic Links (مطلوبة) firebase.framework
firebase_dynamic_links.framework
(مُقترَحة) firebase_analytics.framework

pod 'FirebaseDynamicLinks', '11.4.2'
(مُقترَحة) pod 'FirebaseAnalytics', '11.4.2'
Realtime Database (مطلوب) firebase.framework
firebase_database.framework

pod 'FirebaseDatabase', '11.4.2'
Remote Config (مطلوبة) firebase.framework
firebase_remote_config.framework
(مُقترَحة) firebase_analytics.framework

pod 'FirebaseRemoteConfig', '11.4.2'
(مُقترَحة) pod 'FirebaseAnalytics', '11.4.2'

معلومات إضافية حول إعداد الأجهزة الجوّالة

تغيير وظيفة الإجراء

على نظام التشغيل iOS، تتطلّب بعض أحداث التطبيقات (مثل فتح عناوين URL وتلقّي الإشعارات) من مفوّض التطبيق تنفيذ methods معيّنة. على سبيل المثال، قد يتطلّب تلقّي إشعار أن ينفِّذ application:didReceiveRemoteNotification: المفوَّض لتطبيقك. بما أنّ كل تطبيق iOS لديه مفوّض تطبيق خاص به، تستخدم Firebase تبديل الطريقة، الذي يسمح باستبدال طريقة بأخرى، لإرفاق معالِجاتها الخاصة بالإضافة إلى أيّ معالِجات قد نفّذتها.

تحتاج مكتبتا Dynamic Links وCloud Messaging إلى إرفاق عناصر المعالجة بمفوّض التطبيق باستخدام ميزة تبديل الطرق. إذا كنت تستخدِم أيًا من منتجات Firebase هذه، ستحدِّد Firebase فئة AppDelegate في وقت التحميل وتُغيّر الأساليب المطلوبة فيها، وتُنشئ سلسلة طلبات إعادة الاتصال بتنفيذ الطريقة الحالية.

إعداد سير عمل على الكمبيوتر المكتبي (إصدار تجريبي)

عند إنشاء لعبة، غالبًا ما يكون من الأسهل اختبارها على منصات الكمبيوتر المكتبي أولاً، ثم نشرها واختبارها على الأجهزة الجوّالة في مرحلة التطوير اللاحقة. لدعم سير العمل هذا، نوفّر مجموعة فرعية من حِزم SDK الخاصة بـ Firebase C++ والتي يمكن تشغيلها على Windows وmacOS وLinux ومن داخل محرِّر C++.

  1. بالنسبة إلى سير العمل على أجهزة الكمبيوتر المكتبي، عليك إكمال ما يلي:

    1. اضبط مشروع C++ ليكون متوافقًا مع CMake.
    2. إنشاء مشروع على Firebase
    3. تسجيل تطبيقك (iOS أو Android) في Firebase
    4. إضافة ملف إعدادات Firebase لمنصّة الأجهزة الجوّالة
  2. أنشئ إصدارًا مخصّصًا لأجهزة الكمبيوتر المكتبي من ملف إعدادات Firebase:

    • في حال إضافة ملف google-services.json لنظام التشغيل Android: عند تشغيل تطبيقك، ترصد Firebase موقع هذا الملف المتوافق مع الأجهزة الجوّالة، ثم تنشئ تلقائيًا ملف إعدادات لأجهزة الكمبيوتر المكتبي في Firebase (google-services-desktop.json).

    • في حال إضافة ملف GoogleService-Info.plist لنظام التشغيل iOS: قبل تشغيل تطبيقك، عليك تحويل هذا الملف المخصّص للأجهزة الجوّالة إلى ملف إعدادات لأجهزة الكمبيوتر في Firebase. لتحويل الملف، نفِّذ الأمر التالي من الدليل نفسه الذي يتضمّن ملف GoogleService-Info.plist:

      generate_xml_from_google_services_json.py --plist -i GoogleService-Info.plist

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

  3. أضِف حِزم تطوير البرامج (SDK) لمنصّة Firebase إلى مشروع C++.

    تقدّم الخطوات أدناه مثالاً على كيفية إضافة أي منتج متوافق من Firebase إلى مشروعك المكتوب بلغة C++. في هذا المثال، سنشرح كيفية إضافة Firebase Authentication وFirebase Realtime Database.

    1. اضبط متغيّر البيئة FIREBASE_CPP_SDK_DIR على الموقع الجغرافي لحزمة SDK غير المضغوطة من Firebase C++.

    2. أضِف المحتوى التالي إلى ملف CMakeLists.txt في مشروعك، بما في ذلك المكتبات لمنتجات Firebase التي تريد استخدامها. على سبيل المثال، لاستخدام Firebase Authentication وFirebase Realtime Database:

      # Add Firebase libraries to the target using the function from the SDK.
      add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL)
      
      # The Firebase C++ library `firebase_app` is required,
      # and it must always be listed last.
      
      # Add the Firebase SDKs for the products you want to use in your app
      # For example, to use Firebase Authentication and Firebase Realtime Database
      set(firebase_libs firebase_auth firebase_database firebase_app)
      target_link_libraries(${target_name} "${firebase_libs}")
      
  4. شغِّل تطبيق C++.

المكتبات المتاحة (أجهزة الكمبيوتر المكتبي)

تتضمّن حزمة تطوير البرامج (SDK) لمنصّة Firebase C++ دعم سير العمل على أجهزة الكمبيوتر المكتبي لمجموعة فرعية من الميزات، ما يتيح استخدام أجزاء معيّنة من Firebase في إصدارات مستقلة لأجهزة الكمبيوتر المكتبي على نظام التشغيل Windows وmacOS وLinux.

منتج Firebase مراجع المكتبة (باستخدام CMake)
App Check firebase_app_check
(مطلوبة) firebase_app
Authentication firebase_auth
(مطلوبة) firebase_app
Cloud Firestore firebase_firestore
firebase_auth
firebase_app
Cloud Functions firebase_functions
(مطلوبة) firebase_app
Cloud Storage firebase_storage
(مطلوبة) firebase_app
Realtime Database firebase_database
(مطلوبة) firebase_app
Remote Config firebase_remote_config
(مطلوبة) firebase_app

توفّر Firebase مكتبات أجهزة الكمبيوتر المكتبي المتبقية كعمليات تنفيذ مقتضبة (غير وظيفية) للتيسير عند الإنشاء لنظام التشغيل Windows وmacOS وLinux. لذلك، لا تحتاج إلى تجميع الرمز بشكل مشروط لاستهداف أجهزة الكمبيوتر المكتبي.

Realtime Database الكمبيوتر المكتبي

تستخدم حزمة Realtime Database SDK لأجهزة الكمبيوتر المكتبي واجهة برمجة التطبيقات REST للوصول إلى قاعدة بياناتك، لذا عليك الإفصاح عن الفهارس التي تستخدمها مع Query::OrderByChild() على أجهزة الكمبيوتر المكتبي وإلا لن تعمل أدوات الاستماع.

معلومات إضافية حول إعداد الكمبيوتر المكتبي

مكتبات Windows

بالنسبة إلى نظام التشغيل Windows، يتم توفير إصدارات المكتبة استنادًا إلى ما يلي:

  • منصة الإنشاء: وضع 32 بت (x86) مقابل وضع 64 بت (x64)
  • بيئة التشغيل في Windows: تطبيقات متعددة المعالجة / MT مقارنةً بمكتبات DLL متعددة المعالجة /MD
  • الاستهداف: الإصدار العادي مقابل الإصدار التجريبي

يُرجى العِلم أنّه تم اختبار المكتبات التالية باستخدام Visual Studio 2015 و2017.

عند إنشاء تطبيقات سطح المكتب المكتوبة بلغة C++ على نظام التشغيل Windows، عليك ربط مكتبات حزمة تطوير البرامج (SDK) التالية لنظام التشغيل Windows بمشروعك. يمكنك الرجوع إلى مستندات المُجمِّع للحصول على مزيد من المعلومات.

مكتبة Firebase C++ العناصر التابعة لمكتبة حزمة تطوير البرامج (SDK) لنظام التشغيل Windows
App Check advapi32, ws2_32, crypt32
Authentication advapi32, ws2_32, crypt32
Cloud Firestore advapi32, ws2_32, crypt32, rpcrt4, ole32, shell32
Cloud Functions advapi32, ws2_32, crypt32, rpcrt4, ole32
Cloud Storage advapi32, ws2_32, crypt32
Realtime Database advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv
Remote Config advapi32, ws2_32, crypt32, rpcrt4, ole32

مكتبات نظام التشغيل macOS

بالنسبة إلى نظام التشغيل macOS (Darwin)، يتم توفير إصدارات المكتبة للنظام الأساسي (x86_64) بسعة 64 بت. نوفّر أيضًا إطارات عمل لتسهيل الأمر عليك.

يُرجى العِلم أنّه تم اختبار مكتبات macOS باستخدام Xcode 13.3.1.

عند إنشاء تطبيقات C++ للكمبيوتر المكتبي على نظام التشغيل macOS، عليك ربط ما يلي بمشروعك:

  • مكتبة نظام pthread
  • CoreFoundation إطار عمل نظام التشغيل macOS
  • Foundation إطار عمل نظام التشغيل macOS
  • Security إطار عمل نظام التشغيل macOS
  • GSS إطار عمل نظام التشغيل macOS
  • Kerberos إطار عمل نظام التشغيل macOS
  • SystemConfiguration إطار عمل نظام التشغيل macOS

يمكنك الرجوع إلى مستندات المُجمِّع للحصول على مزيد من المعلومات.

مكتبات Linux

بالنسبة إلى نظام التشغيل Linux، يتم توفير إصدارات المكتبة لأنظمة التشغيل المتوافقة مع 32 بت (i386) و64 بت (x86_64).

يُرجى العِلم أنّه تم اختبار مكتبات Linux باستخدام GCC 4.8.0 وGCC 7.2.0 و Clang 5.0 على Ubuntu.

عند إنشاء تطبيقات سطح المكتب المكتوبة بلغة C++ على نظام التشغيل Linux، عليك ربط مكتبة النظام pthread بمشروعك. يمكنك الرجوع إلى مستندات المُجمِّع للحصول على مزيد من المعلومات. إذا كنت بصدد إنشاء التطبيق باستخدام الإصدار 5 من GCC أو إصدار أحدث، حدِّد -D_GLIBCXX_USE_CXX11_ABI=0.

الخطوات التالية