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

عزِّز قدرات ألعاب C++ الخاصة بنا باستخدام حزم SDK الخاصة بـ Firebase C++ التي توفر لغة C++ بالإضافة إلى حِزم تطوير البرامج (SDK) لمنصّة Firebase

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

لمزيد من المعلومات عن تحسين أداء ألعابك باستخدام Firebase، انتقِل إلى صفحة ألعاب Firebase:

هل أضفت Firebase بالفعل إلى مشروع C++ الخاص بك؟ تأكد من استخدام أحدث إصدار من حزمة تطوير البرامج (SDK) لـ Firebase C++.

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

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

قبل أن تتمكن من إضافة Firebase إلى مشروع C++ ، يجب إنشاء Firebase للاتصال بمشروع C++ الخاص بك. زيارة الموقع يمكنك فهم مشاريع Firebase للحصول على مزيد من المعلومات حول. مشاريع Firebase:

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

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

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

  2. في منتصف صفحة النظرة العامة على المشروع، انقر على رمز Android. () أو إضافة تطبيق لبدء عملية الإعداد

  3. أدخل اسم حزمة التطبيق في حقل اسم حزمة Android.

  4. (اختياري) أدخِل معلومات أخرى عن التطبيق: اسم التطبيق وشهادة توقيع تصحيح الأخطاء SHA-1

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

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

  1. انقر على تنزيل google-services.json للحصول على نظام التشغيل Firebase Android. config.

  2. افتح مشروع C++ في بيئة تطوير متكاملة (IDE)، ثم أضف ملف التهيئة إلى مشروعك:

  3. (إصدارات Gradle فقط) لتفعيل خدمات Firebase في مشروع C++ ، يجب إضافة خدمات google المكوّن الإضافي إلى ملف build.gradle ذي المستوى الأعلى.

    1. يمكنك إضافة قواعد لتضمين المكوّن الإضافي لنظام Gradle لخدمات Google. التحقّق من لديها مستودع Maven من Google أيضًا.

        buildscript {
      
          repositories {
            // Check that you have the following line (if not, add it):
            google()  // Google's Maven repository
          }
      
          dependencies {
            // ...
      
            // Add the following lines:
            classpath 'com.google.gms:google-services:4.4.2'  // Google Services plugin
            implementation 'com.google.android.gms:18.5.0'
          }
        }
      
        allprojects {
          // ...
      
          repositories {
            // Check that you have the following line (if not, add it):
            google()  // Google's Maven repository
            // ...
          }
        }
      
    2. تطبيق المكوّن الإضافي لنظام Gradle لخدمات Google:

        apply plugin: 'com.android.application'
        // Add the following line:
        apply plugin: 'com.google.gms.google-services'  // Google Services plugin
      
        android {
          // ...
        }
      
  4. لقد انتهيت من عملية الإعداد في "وحدة تحكُّم Firebase". المتابعة إلى يمكنك إضافة حِزم SDK لمنصة Firebase C++ أدناه.

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

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

  1. يمكنك تنزيل حزمة تطوير البرامج (SDK) لـ Firebase C++، ثم فك ضغط حزمة SDK في مكان مناسب.

    وحزمة SDK الخاصة بمنصة Firebase C++ ليست خاصة بالنظام الأساسي، ولكنها تحتوي على المكتبات الخاصة بأنظمة أساسية محددة.

  2. في ملف gradle.properties الخاص بمشروعك، حدِّد موقع حزمة SDK غير المضغوطة:

    systemProp.firebase_cpp_sdk.dir=full-path-to-SDK
    
  3. إلى ملف settings.gradle الخاص بمشروعك، أضِف المحتوى التالي:

    def firebase_cpp_sdk_dir = System.getProperty('firebase_cpp_sdk.dir')
    
    gradle.ext.firebase_cpp_sdk_dir = "$firebase_cpp_sdk_dir"
    includeBuild "$firebase_cpp_sdk_dir"
    
  4. إلى ملف Gradle للوحدة (على مستوى التطبيق) (عادةً app/build.gradle)، أضِف العنصر ومتابعة المحتوى.
    تضمين تبعيات المكتبة لمنتجات Firebase التي تريد استخدامها في تطبيقك.

    تفعيل الإحصاءات

    android.defaultConfig.externalNativeBuild.cmake {
    arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir"
    }
    
    # Add the dependencies for the Firebase products you want to use in your app
    # For example, to use Analytics, Firebase Authentication, and Firebase Realtime Database
    apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle"
    firebaseCpp.dependencies {
      analytics
      auth
      database
    }
    

    عدم تفعيل الإحصاءات

    android.defaultConfig.externalNativeBuild.cmake {
    arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir"
    }
    
    # Add the dependencies for the Firebase products you want to use in your app
    # For example, to use Firebase Authentication and Firebase Realtime Database
    apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle"
    firebaseCpp.dependencies {
      auth
      database
    }
    
  5. إلى ملف CMakeLists.txt الخاص بمشروعك، أضِف المحتوى التالي.
    تضمين مكتبات منتجات Firebase التي تريد استخدامها في تطبيقك.

    تفعيل الإحصاءات

    # 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 Analytics, Firebase Authentication, and Firebase Realtime Database
    set(firebase_libs
      firebase_analytics
      firebase_auth
      firebase_database
      firebase_app
    )
    target_link_libraries(${target_name} "${firebase_libs}")
    

    عدم تفعيل الإحصاءات

    # 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}")
    
  6. قم بمزامنة تطبيقك للتأكد من أن جميع التبعيات لديها الإصدارات اللازمة.

  7. إذا أضفت "إحصاءات Google"، يمكنك تشغيل تطبيقك لإرسال إثبات الملكية إلى Firebase أنك دمجت Firebase بنجاح. وبخلاف ذلك، يمكنك تخطي التحقق من هوية المعلِن.

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

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

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

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

المكتبات المتاحة لنظام التشغيل Android (باستخدام CMake)

لاحظ أن مكتبات C++ لأنظمة Apple الأساسية مدرجة على أنظمة Apple الأساسية (لإصدار iOS+ ) من صفحة الإعداد هذه.

منتج Firebase مراجع المكتبة
(firebaseCpp.dependencies
لملف build.gradle)
مراجع المكتبة
(firebase_libs
لملف CMakeLists.txt)
AdMob admob firebase_admob
(مطلوب) firebase_analytics
(مطلوب) firebase_app
إحصاءات Google analytics firebase_analytics
(مطلوب) firebase_app
فحص التطبيقات appCheck firebase_app_check
(مطلوب) firebase_app
المصادقة auth firebase_auth
(مطلوب) firebase_app
Cloud Firestore firestore firebase_firestore
(مطلوب) firebase_auth
(مطلوب) firebase_app
الوظائف السحابية functions firebase_functions
(مطلوب) firebase_app
المراسلة عبر السحابة الإلكترونية messaging firebase_messaging
(موصى بها) firebase_analytics
(مطلوب) firebase_app
التخزين في السحابة الإلكترونية storage firebase_storage
(مطلوب) firebase_app
الروابط الديناميكية dynamicLinks firebase_dynamic_links
(موصى بها) firebase_analytics
(مطلوب) firebase_app
قاعدة بيانات الوقت الفعلي database firebase_database
(مطلوب) firebase_app
الإعداد عن بُعد remoteConfig firebase_remote_config
(موصى بها) firebase_analytics
(مطلوب) firebase_app

معلومات إضافية لإعداد الجوال

الحصول على تقارير أعطال NDK

يدعم Firebase Crashlytics ميزة إعداد تقارير الأعطال للتطبيقات التي تستخدم Android المكتبات الأصلية. لمزيد من المعلومات، يُرجى مراجعة الحصول على تقارير أعطال Android NDK

أنظمة التصميم المخصّصة

يوفر Firebase النص البرمجي generate_xml_from_google_services_json.py تحويل google-services.json إلى .xml موارد يمكنك تضمينها في لمشروعك. يطبّق هذا النص البرمجي عملية التحويل نفسها التي يستخدمها Google Play الخدمات التي ينفذها المكون الإضافي Gradle عند إنشاء تطبيقات Android.

إذا لم تكن تستخدم Gradle (على سبيل المثال، يمكنك استخدام ndk-build وmakefiles Visual Studio وما إلى ذلك)، يمكنك استخدام هذا النص البرمجي لإنشاء سلسلة Android الموارد:

ProGuard

تستخدم العديد من أنظمة إصدار Android ProGuard للإصدارات وضع الإصدار لتقليص أحجام التطبيقات وحماية رمز مصدر Java.

في حال استخدام ProGuard، ستحتاج إلى إضافة الملفات في "libs/android/*.pro". المقابلة لمكتبات Firebase C++ التي تستخدمها في ProGuard التكوين.

فعلى سبيل المثال، إذا كنت تستخدم "إحصاءات Google" في أداة Gradle، سيظهر ملف build.gradle على النحو التالي:

android {
  // ...
  buildTypes {
    release {
      minifyEnabled true
      proguardFile getDefaultProguardFile('your-project-proguard-config.txt')
      proguardFile file(project.ext.your_local_firebase_sdk_dir + "/libs/android/app.pro")
      proguardFile file(project.ext.your_local_firebase_sdk_dir + "/libs/android/analytics.pro")
      // ...  and so on, for each Firebase C++ library that you're using
    }
  }
}

متطلبات "خدمات Google Play"

تتطلب معظم مكتبات Firebase C++ خدمات Google Play على جهاز Android الخاص بالعميل. في حال عرض مكتبة Firebase C++ kInitResultFailedMissingDependency عند التهيئة، يعني ذلك أن خدمات Google Play غير متاحة على جهاز عميل (ما يعني أنّه يجب تحديثه أو إعادة تفعيله أو استخدام الأذونات ثابت، وما إلى ذلك). لا يمكن استخدام مكتبة Firebase حتى يحدث الموقف على تم تصحيح جهاز العميل.

يمكنك معرفة سبب عدم توفّر "خدمات Google Play" على جهاز العميل. (وحاول إصلاحها) باستخدام الدوال في google_play_services/availability.h.

يوضح الجدول التالي ما إذا كانت "خدمات Google Play" مطلوبة على البرنامج. لكل منتج متوافق في Firebase.

مكتبة Firebase C++ هل خدمات Google Play مطلوبة على جهاز العميل؟
AdMob غير مطلوب (عادةً)
إحصاءات Google غير مطلوبة
المصادقة مطلوب
Cloud Firestore مطلوب
وظائف السحابة الإلكترونية مطلوب
خدمة المراسلة عبر السحابة الإلكترونية مطلوب
Cloud Storage مطلوب
الروابط الديناميكية مطلوب
قاعدة بيانات الوقت الفعلي مطلوب
الإعداد عن بُعد مطلوب

AdMob وخدمات Google Play

يمكن أن تعمل معظم إصدارات حزمة "SDK لإعلانات Google على الأجهزة الجوّالة" لنظام التشغيل Android بشكلٍ سليم. بدون خدمات Google Play على جهاز العميل. ومع ذلك، إذا كنت تستخدم تبعية com.google.android.gms:play-services-ads-lite، بدلاً من com.google.firebase:firebase-ads القياسية الواردة أعلاه، خدمات Google Play هي مطلوبة.

لن يعرض إعداد AdMob سوى kInitResultFailedMissingDependency عندما يكون الشرطان التاليان صحيحًا:

  • "خدمات Google Play" غير متاحة على جهاز العميل.
  • أنت تستخدم com.google.android.gms:play-services-ads-lite.

إعداد سير عمل أجهزة كمبيوتر سطح المكتب (إصدار تجريبي)

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

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

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

      # 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++.

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

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

منتج Firebase مراجع المكتبة (باستخدام أداة CMake)
فحص التطبيقات firebase_app_check
(مطلوب) firebase_app
المصادقة firebase_auth
(مطلوب) firebase_app
Cloud Firestore firebase_firestore
firebase_auth
firebase_app
الوظائف السحابية firebase_functions
(مطلوب) firebase_app
التخزين في السحابة الإلكترونية firebase_storage
(مطلوب) firebase_app
قاعدة بيانات الوقت الفعلي firebase_database
(مطلوب) firebase_app
الإعداد عن بُعد firebase_remote_config
(مطلوب) firebase_app

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

قاعدة بيانات الوقت الفعلي لسطح المكتب

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

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

مكتبات Windows

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

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

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

عند إنشاء تطبيقات سطح مكتب C++ على Windows، قم بربط حزمة SDK التالية بنظام Windows والمكتبات لمشروعك. استشر وثائق برنامج التجميع للتعرف على المزيد المعلومات.

مكتبة Firebase C++ ملحقات مكتبة SDK لنظام التشغيل Windows
فحص التطبيقات advapi32, ws2_32, crypt32
المصادقة advapi32, ws2_32, crypt32
Cloud Firestore advapi32, ws2_32, crypt32, rpcrt4, ole32, shell32
وظائف السحابة الإلكترونية advapi32, ws2_32, crypt32, rpcrt4, ole32
Cloud Storage advapi32, ws2_32, crypt32
قاعدة بيانات الوقت الفعلي advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv
الإعداد عن بُعد advapi32, ws2_32, crypt32, rpcrt4, ole32

مكتبات macOS

بالنسبة إلى نظام التشغيل macOS (Darwin)، تتوفّر إصدارات المكتبة للإصدار 64 بت (x86_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 باستخدام الإصدارات 4.8.0 من GCC وGCC 7.2.0 و Clang 5.0 على Ubuntu.

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

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