Firebase را به پروژه C++ خود اضافه کنید

بازی‌های C++ خود را با کیت‌های توسعه نرم‌افزار Firebase C++ ما که یک رابط C++ را بر روی کیت‌های توسعه نرم‌افزار Firebase ارائه می‌دهند، قدرتمندتر کنید.

بدون نیاز به نوشتن هیچ کد بومی پلتفرم، کاملاً از طریق کد C++ خود به Firebase دسترسی داشته باشید. کیت توسعه نرم‌افزار Firebase همچنین بسیاری از اصطلاحات خاص زبان مورد استفاده توسط Firebase را به رابطی آشناتر برای توسعه‌دهندگان C++ ترجمه می‌کند.

برای اطلاعات بیشتر در مورد تقویت بازی‌هایتان با Firebase، به صفحه بازی‌های Firebase ما مراجعه کنید.

آیا قبلاً Firebase را به پروژه C++ خود اضافه کرده‌اید؟ مطمئن شوید که از آخرین نسخه Firebase C++ SDK استفاده می‌کنید.


پیش‌نیازها

  • ویرایشگر یا IDE مورد نظر خود، مانند Android Studio، IntelliJ یا VS Code را نصب کنید.

  • SDK اندروید را دریافت کنید.

  • مطمئن شوید که پروژه شما این الزامات را برآورده می‌کند:

  • یک دستگاه فیزیکی راه‌اندازی کنید یا از یک شبیه‌ساز برای اجرای برنامه خود استفاده کنید.

    • شبیه‌سازها باید از یک تصویر شبیه‌ساز با Google Play استفاده کنند.

    • برای برخی از کتابخانه‌های ++C، سرویس‌های Google Play در دستگاه کلاینت مورد نیاز است؛ لیست موجود در این صفحه را بررسی کنید.

  • با استفاده از حساب گوگل خود وارد فایربیس شوید .

مرحله 2 : ایجاد یک پروژه Firebase

قبل از اینکه بتوانید Firebase را به پروژه C++ خود اضافه کنید، باید یک پروژه Firebase ایجاد کنید تا به پروژه C++ شما متصل شود. برای کسب اطلاعات بیشتر در مورد پروژه‌های Firebase، به بخش «درک پروژه‌های Firebase» مراجعه کنید.

مرحله ۳ : برنامه خود را در Firebase ثبت کنید

برای استفاده از فایربیس در برنامه اندروید خود، باید برنامه خود را در پروژه فایربیس خود ثبت کنید. ثبت برنامه اغلب "افزودن" برنامه به پروژه شما نامیده می‌شود.

  1. به کنسول Firebase بروید.

  2. در مرکز صفحه نمای کلی پروژه، روی آیکون اندروید ( ) یا افزودن برنامه کلیک کنید تا گردش کار راه‌اندازی شود.

  3. نام بسته برنامه خود را در فیلد نام بسته اندروید وارد کنید.

  4. (اختیاری) یک نام مستعار برنامه وارد کنید، که یک شناسه داخلی و راحت است که فقط در کنسول Firebase برای شما قابل مشاهده است.

  5. روی ثبت برنامه کلیک کنید.

مرحله ۴ : فایل پیکربندی Firebase را اضافه کنید

  1. برای دریافت فایل پیکربندی اندروید فایربیس خود ، روی دانلود google-services.json کلیک کنید.

  2. پروژه ++C خود را در یک IDE باز کنید، سپس فایل پیکربندی خود را به پروژه اضافه کنید:

  3. (فقط نسخه‌های Gradle) برای فعال کردن سرویس‌های Firebase در پروژه C++ خود، افزونه google-services را به فایل build.gradle سطح بالای خود اضافه کنید.

    1. قوانینی را برای گنجاندن افزونه Google Services Gradle اضافه کنید. بررسی کنید که مخزن Maven گوگل را نیز داشته باشید.

        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.4'  // Google Services plugin
            implementation 'com.google.android.gms:18.9.0'
          }
        }
      
        allprojects {
          // ...
      
          repositories {
            // Check that you have the following line (if not, add it):
            google()  // Google's Maven repository
            // ...
          }
        }
      
    2. افزونه Google Services Gradle را اعمال کنید:

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

مراحل این بخش نمونه‌ای از نحوه اضافه کردن محصولات پشتیبانی‌شده‌ی فایربیس به پروژه‌ی ++C فایربیس شما است.

  1. کیت توسعه نرم‌افزاری Firebase C++ را دانلود کنید، سپس 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 مراجعه کنید.

کتابخانه‌های موجود برای اندروید (با استفاده از CMake)

توجه داشته باشید که کتابخانه‌های ++C برای پلتفرم‌های اپل در نسخه پلتفرم‌های اپل (iOS+) این صفحه تنظیمات فهرست شده‌اند.

محصول فایربیس منابع کتابخانه
( 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 از گزارش خرابی برای برنامه‌هایی که از کتابخانه‌های بومی اندروید استفاده می‌کنند، پشتیبانی می‌کند. برای کسب اطلاعات بیشتر، به «دریافت گزارش‌های خرابی NDK اندروید» مراجعه کنید.

سیستم‌های ساخت سفارشی

فایربیس اسکریپت generate_xml_from_google_services_json.py را برای تبدیل google-services.json به منابع .xml که می‌توانید در پروژه خود بگنجانید، ارائه می‌دهد. این اسکریپت همان تبدیلی را اعمال می‌کند که افزونه Gradle سرویس‌های گوگل پلی هنگام ساخت برنامه‌های اندروید انجام می‌دهد.

اگر با استفاده از Gradle برنامه را نمی‌سازید (مثلاً از ndk-build، makefiles، Visual Studio و غیره استفاده می‌کنید)، می‌توانید از این اسکریپت برای خودکارسازی تولید منابع رشته‌ای اندروید (Android String Resources ) استفاده کنید.

پروگارد

بسیاری از سیستم‌های ساخت اندروید از ProGuard برای ساخت در حالت انتشار استفاده می‌کنند تا اندازه برنامه را کاهش داده و از کد منبع جاوا محافظت کنند.

اگر از ProGuard استفاده می‌کنید، باید فایل‌های مربوط به کتابخانه‌های Firebase C++ که در پیکربندی ProGuard خود استفاده می‌کنید را در libs/android/*.pro اضافه کنید.

برای مثال، با 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
    }
  }
}

الزامات خدمات گوگل پلی

اکثر کتابخانه‌های Firebase C++ نیاز دارند که سرویس‌های Google Play روی دستگاه اندروید کلاینت باشند. اگر یک کتابخانه Firebase C++ در هنگام مقداردهی اولیه، kInitResultFailedMissingDependency برگرداند، به این معنی است که سرویس‌های Google Play روی دستگاه کلاینت در دسترس نیستند (به این معنی که باید به‌روزرسانی، دوباره فعال‌سازی، رفع مجوزها و غیره شود). کتابخانه Firebase تا زمانی که وضعیت روی دستگاه کلاینت اصلاح نشود، قابل استفاده نیست.

شما می‌توانید با استفاده از توابع موجود در google_play_services/availability.h متوجه شوید که چرا سرویس‌های گوگل پلی در دستگاه کلاینت در دسترس نیستند (و سعی کنید آن را برطرف کنید).

جدول زیر نشان می‌دهد که آیا سرویس‌های گوگل پلی برای هر محصول پشتیبانی‌شده‌ی فایربیس روی دستگاه کلاینت مورد نیاز است یا خیر.

کتابخانه فایربیس سی پلاس پلاس سرویس‌های گوگل پلی روی دستگاه کلاینت مورد نیاز است؟
AdMob لازم نیست (معمولاً)
Analytics لازم نیست
Authentication مورد نیاز
Cloud Firestore مورد نیاز
Cloud Functions مورد نیاز
Cloud Messaging مورد نیاز
Cloud Storage مورد نیاز
Dynamic Links مورد نیاز
Realtime Database مورد نیاز
Remote Config مورد نیاز

سرویس‌های AdMob و گوگل پلی

اکثر نسخه‌های SDK Google Mobile Ads برای اندروید می‌توانند بدون سرویس‌های گوگل پلی روی دستگاه کلاینت به درستی کار کنند. با این حال، اگر از وابستگی com.google.android.gms:play-services-ads-lite به جای وابستگی استاندارد com.google.firebase:firebase-ads که در بالا ذکر شد استفاده می‌کنید، سرویس‌های گوگل پلی مورد نیاز است .

مقداردهی اولیه AdMob فقط زمانی kInitResultFailedMissingDependency را برمی‌گرداند که هر دو مورد زیر درست باشند:

  • سرویس‌های گوگل پلی روی دستگاه کلاینت در دسترس نیست.
  • شما از com.google.android.gms:play-services-ads-lite استفاده می‌کنید.

راه‌اندازی گردش کار دسکتاپ ( بتا )

وقتی در حال ساخت یک بازی هستید، اغلب خیلی راحت‌تر است که ابتدا بازی خود را روی پلتفرم‌های دسکتاپ آزمایش کنید، سپس بعداً در مراحل توسعه، آن را روی دستگاه‌های تلفن همراه مستقر و آزمایش کنید. برای پشتیبانی از این گردش کار، ما زیرمجموعه‌ای از SDK های Firebase C++ را ارائه می‌دهیم که می‌توانند روی ویندوز، macOS، لینوکس و از درون ویرایشگر C++ اجرا شوند.

  1. برای گردش کار دسکتاپ، باید موارد زیر را تکمیل کنید:

    1. پروژه C++ خود را برای CMake پیکربندی کنید.
    2. ایجاد یک پروژه فایربیس
    3. برنامه خود (iOS یا Android) را با Firebase ثبت کنید
    4. یک فایل پیکربندی Firebase برای پلتفرم موبایل اضافه کنید
  2. یک نسخه دسکتاپ از فایل پیکربندی Firebase ایجاد کنید:

    • اگر فایل google-services.json اندروید را اضافه کرده باشید ، وقتی برنامه خود را اجرا می‌کنید، Firebase این فایل موبایل را پیدا می‌کند، سپس به طور خودکار یک فایل پیکربندی Firebase دسکتاپ ( google-services-desktop.json ) ایجاد می‌کند.

    • اگر فایل iOS GoogleService-Info.plist را اضافه کرده‌اید - قبل از اجرای برنامه، باید این فایل موبایل را به یک فایل پیکربندی Firebase دسکتاپ تبدیل کنید. برای تبدیل فایل، دستور زیر را از همان دایرکتوری که فایل GoogleService-Info.plist شما قرار دارد، اجرا کنید:

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

    این فایل پیکربندی دسکتاپ شامل شناسه پروژه C++ است که شما در گردش کار تنظیم کنسول Firebase وارد کرده‌اید. برای کسب اطلاعات بیشتر در مورد فایل‌های پیکربندی، به بخش «درک پروژه‌های Firebase» مراجعه کنید.

  3. کیت‌های توسعه نرم‌افزار Firebase را به پروژه C++ خود اضافه کنید.

    مراحل زیر به عنوان مثالی از نحوه اضافه کردن هر محصول پشتیبانی شده Firebase به پروژه C++ شما ارائه می‌شود. در این مثال، ما مراحل اضافه کردن Firebase Authentication و Firebase Realtime Database بررسی می‌کنیم.

    1. متغیر محیطی FIREBASE_CPP_SDK_DIR خود را روی محل SDK C++ Firebase از حالت فشرده خارج شده تنظیم کنید.

    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 خود را اجرا کنید.

کتابخانه‌های موجود (دسکتاپ)

کیت توسعه نرم‌افزاری C++ 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

فایربیس کتابخانه‌های دسکتاپ باقی‌مانده را به عنوان پیاده‌سازی‌های stub (غیرعملیاتی) برای راحتی هنگام ساخت برای ویندوز، macOS و لینوکس ارائه می‌دهد. بنابراین، نیازی به کامپایل مشروط کد برای هدف قرار دادن دسکتاپ ندارید.

دسکتاپ Realtime Database

کیت توسعه نرم‌افزار (SDK) Realtime Database برای دسکتاپ از REST برای دسترسی به پایگاه داده شما استفاده می‌کند، بنابراین باید ایندکس‌هایی را که با Query::OrderByChild() در دسکتاپ استفاده می‌کنید، تعریف کنید، در غیر این صورت شنونده‌های شما با شکست مواجه خواهند شد.

اطلاعات تکمیلی برای تنظیمات دسکتاپ

کتابخانه‌های ویندوز

برای ویندوز، نسخه‌های کتابخانه بر اساس موارد زیر ارائه می‌شوند:

  • پلتفرم ساخت: حالت ۳۲ بیتی (x86) در مقابل ۶۴ بیتی (x64)
  • محیط زمان اجرای ویندوز: چندرشته‌ای / MT در مقابل چندرشته‌ای DLL /MD
  • هدف: انتشار در مقابل اشکال‌زدایی

توجه داشته باشید که کتابخانه‌های زیر با استفاده از ویژوال استودیو ۲۰۱۵ و ۲۰۱۷ آزمایش شده‌اند.

هنگام ساخت برنامه‌های دسکتاپ ++C در ویندوز، کتابخانه‌های Windows SDK زیر را به پروژه خود پیوند دهید. برای اطلاعات بیشتر به مستندات کامپایلر خود مراجعه کنید.

کتابخانه فایربیس سی پلاس پلاس وابستگی‌های کتابخانه SDK ویندوز
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 (داروین)، نسخه‌های کتابخانه برای پلتفرم ۶۴ بیتی (x86_64) ارائه شده است. چارچوب‌هایی نیز برای راحتی شما ارائه شده است.

توجه داشته باشید که کتابخانه‌های macOS با استفاده از Xcode 16.2 آزمایش شده‌اند.

هنگام ساخت برنامه‌های دسکتاپ ++C در macOS، موارد زیر را به پروژه خود پیوند دهید:

  • کتابخانه سیستم pthread
  • چارچوب سیستم macOS CoreFoundation
  • چارچوب سیستم عامل macOS Foundation
  • چارچوب سیستم macOS Security
  • چارچوب سیستم macOS GSS
  • چارچوب سیستم عامل macOS Kerberos
  • چارچوب سیستم macOS SystemConfiguration

برای اطلاعات بیشتر به مستندات کامپایلر خود مراجعه کنید.

کتابخانه‌های لینوکس

برای لینوکس، نسخه‌های کتابخانه برای پلتفرم‌های ۳۲ بیتی (i386) و ۶۴ بیتی (x86_64) ارائه شده‌اند.

توجه داشته باشید که کتابخانه‌های لینوکس با استفاده از GCC 4.8.0، GCC 7.2.0 و Clang 5.0 روی اوبونتو آزمایش شده‌اند.

هنگام ساخت برنامه‌های دسکتاپ ++C در لینوکس، کتابخانه سیستم pthread را به پروژه خود پیوند دهید. برای اطلاعات بیشتر به مستندات کامپایلر خود مراجعه کنید. اگر با GCC 5 یا بالاتر برنامه می‌سازید، -D_GLIBCXX_USE_CXX11_ABI=0 را تعریف کنید.

مراحل بعدی