إضافة 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 التي تريد استخدامها في تطبيقك.

    تم تفعيل Analytics.

    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
    }
    

    لم يتم تفعيل Analytics

    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 التي تريد استخدامها في تطبيقك.

    تم تفعيل Analytics.

    # 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}")
    

    لم يتم تفعيل Analytics

    # 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. في حال إضافة Analytics، يمكنك تشغيل تطبيقك لإرسال طلب إثبات الملكية إلى 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
Analytics analytics
firebase_analytics (مطلوب) firebase_app
App Check appCheck
firebase_app_check (مطلوب) firebase_app
Authentication auth
firebase_auth (مطلوب) firebase_app
Cloud Firestore firestore
firebase_firestore (مطلوب) firebase_auth
(مطلوب) firebase_app
Cloud Functions functions
firebase_functions (مطلوب) firebase_app
Cloud Messaging messaging
firebase_messaging (موصى بها) firebase_analytics
(مطلوب) firebase_app
Cloud Storage storage
firebase_storage (مطلوب) firebase_app
Dynamic Links dynamicLinks
firebase_dynamic_links (موصى بها) firebase_analytics
(مطلوب) firebase_app
Realtime Database database
firebase_database (مطلوب) firebase_app
Remote Config 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 التكوين.

فعلى سبيل المثال، في حالة استخدام Gradle، إذا كنت تستخدم Google Analytics، سيظهر ملف 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 غير مطلوب (عادةً)
Analytics غير مطلوبة
Authentication مطلوب
Cloud Firestore مطلوب
Cloud Functions مطلوب
Cloud Messaging مطلوب
Cloud Storage مطلوب
Dynamic Links مطلوب
Realtime Database مطلوب
Remote Config مطلوب

AdMob وخدمات Google Play

يمكن أن تعمل معظم إصدارات حزمة تطوير البرامج (SDK) "Google Mobile Ads" لنظام التشغيل 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 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)

تستخدم حزمة تطوير البرامج (SDK) لنظام التشغيل Realtime Database لسطح المكتب 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
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)، تتوفّر إصدارات المكتبة للإصدار 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.

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