הוספת Firebase לפרויקט C++

ערכות ה-SDK של Firebase ל-C++ מספקות ממשק C++‏ על גבי ערכות ה-SDK של Firebase, ומאפשרות לשפר את המשחקים שלכם ב-C++.

אפשר לגשת ל-Firebase באופן מלא מקוד C++ בלי שתצטרכו לכתוב קוד מבוסס-פלטפורמה. ה-SDK של Firebase מתרגם גם כינויים שונים של שפה שבהם אתם משתמשים ב-Firebase לממשק שמוכר יותר למפתחי C++.

מידע נוסף על שיפור המשחקים באמצעות Firebase זמין בדף Firebase למשחקים.

כבר הוספתם את Firebase לפרויקט C++‎? חשוב לוודא שאתם משתמשים בגרסה האחרונה של Firebase C++ SDK.


דרישות מוקדמות

  • מתקינים את הרכיבים הבאים:

    • Xcode מגרסה 13.3.1 ואילך
    • CocoaPods 1.12.0 ואילך
  • צריך לוודא שהפרויקט מטרגט לגרסאות הפלטפורמה הבאות ואילך:

    • iOS 13
    • tvOS 13
  • מגדירים מכשיר פיזי או משתמשים בסימולטור כדי להריץ את האפליקציה.

  • נכנסים ל-Firebase באמצעות חשבון Google.

שלב 2: יוצרים פרויקט Firebase

לפני שמוסיפים את Firebase לפרויקט C++‎, צריך ליצור פרויקט Firebase כדי לקשר אותו לפרויקט C++‎. במאמר הסבר על הפרויקטים ב-Firebase תוכלו לקרוא מידע נוסף על פרויקטים ב-Firebase.

שלב 3: רישום האפליקציה ב-Firebase

כדי להשתמש ב-Firebase באפליקציה ל-Apple, צריך לרשום את האפליקציה לפרויקט ב-Firebase. לעיתים קרובות, רישום האפליקציה נקרא 'הוספת' האפליקציה לפרויקט.

  1. נכנסים למסוף Firebase.

  2. במרכז הדף 'סקירה כללית של הפרויקט', לוחצים על הסמל iOS+ כדי להפעיל את תהליך העבודה להגדרה.

    אם כבר הוספתם אפליקציה לפרויקט Firebase, לוחצים על הוספת אפליקציה כדי להציג את אפשרויות הפלטפורמה.

  3. מזינים את מזהה החבילה של האפליקציה בשדה bundle ID.

  4. (אופציונלי) מזינים פרטים נוספים על האפליקציה: הכינוי של האפליקציה ומזהה App Store.

  5. לוחצים על רישום האפליקציה.

שלב 4: מוסיפים את קובץ התצורה של Firebase

  1. לוחצים על Download GoogleService-Info.plist כדי לקבל את קובץ התצורה של Firebase לפלטפורמות של Apple.

  2. פותחים את פרויקט ה-C++‎ בסביבת פיתוח משולבת (IDE), וגוררים את קובץ התצורה לתיקיית השורש של פרויקט ה-C++‎.

  3. אם מוצגת בקשה, בוחרים להוסיף את קובץ התצורה לכל היעדים.

סיימתם את משימות ההגדרה במסוף Firebase. ממשיכים למטה לקטע הוספת Firebase C++ SDKs.

שלב 5: מוסיפים את ערכות ה-SDK של Firebase ל-C++

השלבים בקטע הזה הם דוגמה לאופן שבו מוסיפים מוצרי Firebase נתמכים לפרויקט Firebase ב-C++‎.

  1. מורידים את Firebase C++ SDK ומחלצים את ה-SDK למקום נוח.

    ערכת ה-SDK Firebase C++ לא ספציפית לפלטפורמה, אבל היא מכילה ספריות ספציפיות לפלטפורמה.

  2. מוסיפים Pods של Firebase מ-SDK לא דחוס.

    1. צריך ליצור Podfile אם אין עדיין:

      cd your-app-directory
      pod init

    2. מוסיפים ל-Podfile את ה-pods של 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. מתקינים את ה-pods ופותחים את הקובץ .xcworkspace ב-Xcode.

      pod install
      open your-app.xcworkspace

  3. מוסיפים את המסגרות של Firebase מה-SDK ללא האפסור.

    בדרך כלל, הדרך הקלה ביותר להוסיף את ה-frameworks היא לגרור אותן מחלון Finder ישירות לחלונית Project Navigator של Xcode (החלונית השמאלית הרחוקה, כברירת מחדל). לחלופין, לוחצים על סמל הקובץ בפינה השמאלית העליונה של Xcode.

    1. מוסיפים את מסגרת ה-C++ של Firebase‏ firebase.framework, שנדרשת לשימוש בכל מוצר של Firebase.

    2. מוסיפים את המסגרת לכל מוצר של Firebase שבו רוצים להשתמש. לדוגמה, כדי להשתמש בפונקציה Firebase Authentication צריך להוסיף את firebase_auth.framework.

  4. חוזרים למסוף Firebase, בתהליך ההגדרה לוחצים על Next.

  5. אם הוספתם את Analytics, מריצים את האפליקציה כדי לשלוח ל-Firebase אישור על כך שהשלמתם את השילוב של Firebase. אם לא, תוכלו לדלג על שלב האימות הזה.

    ביומני המכשיר יוצג האימות ב-Firebase שהאתחול הושלם. אם הפעלתם את האפליקציה במהדמה שיש לה גישה לרשת, תקבלו הודעה במסוף Firebase על כך שהחיבור לאפליקציה הושלם.

הכול מוכן האפליקציה ב-C++‎ רשומה ומוגדר בה שימוש במוצרי Firebase.

ספריות זמינות

מידע נוסף על ספריות C++ Firebase זמין במאמרי העזרה ובגרסת הקוד הפתוח של SDK ב-GitHub.

ספריות זמינות לפלטפורמות של Apple

הערה: ספריות C++‎ ל-Android מפורטות בגרסה ל-Android של דף ההגדרה הזה.

לכל מוצר של Firebase יש יחסי תלות שונים. חשוב להוסיף את כל התלויות המפורטות של מוצר Firebase הרצוי ל-Podfile ולפרויקט C++‎.

יכול להיות שכל מוצר של Firebase יתמוך רק בחלק מפלטפורמות מערכת ההפעלה של Apple (iOS,‏ tvOS וכו'). מידע נוסף על C++‎ ו-Firebase

מוצר Firebase מסגרות ו-Pods
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 וקבלת התראות), נציג האפליקציה צריך להטמיע שיטות ספציפיות. לדוגמה, יכול להיות שקבלת התראה תחייב את הנציג של האפליקציה להטמיע את application:didReceiveRemoteNotification:. מכיוון שלכל אפליקציה ב-iOS יש אפליקציה ייעודית ל-iOS, מערכת Firebase משתמשת במעבר בין שיטות, שמאפשר להחליף שיטה אחת באחרת, כדי לצרף handlers משלה, בנוסף לאלה שהטמעתם.

ספריות Dynamic Links ו-Cloud Messaging צריכות לצרף מנהלים לנציג האפליקציה באמצעות החלפת שיטות (method swizzling). אם אתם משתמשים באחד מהמוצרים האלה של 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. מוסיפים את Firebase SDK לפרויקט C++‎.

    השלבים הבאים משמשים כדוגמה להוספת מוצר Firebase נתמך לפרויקט C++‎. בדוגמה הזו נסביר איך להוסיף את Firebase Authentication ואת Firebase Realtime Database.

    1. מגדירים את משתנה הסביבה FIREBASE_CPP_SDK_DIR למיקום של Firebase C++ SDK ללא הארכיון.

    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 בגרסאות build עצמאיות למחשב ב-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, אתם יכולים להוסיף את שאר הספריות למחשבים כהטמעות "stub (לא פונקציונליות)", כדי שיהיה נוח כשמפתחים ל-Windows, ל-macOS ול-Linux. לכן, אין צורך להדר קוד באופן מותנה כדי לטרגט את שולחן העבודה.

Realtime Database למחשב

ה-SDK של Realtime Database למחשב משתמש ב-REST כדי לגשת למסד הנתונים, לכן עליכם להצהיר על המדדים שבהם אתם משתמשים עם Query::OrderByChild() במחשב, אחרת המאזינים לא יפעלו.

מידע נוסף על הגדרת מחשב

ספריות Windows

ב-Windows, גרסאות הספריות מוצגות על סמך הגורמים הבאים:

  • פלטפורמת build: מצב 32 ביט (x86) לעומת מצב 64 ביט (x64)
  • סביבת זמן ריצה של Windows: Multithreaded / MT לעומת Multithreaded DLL /MD
  • היעד: גרסה לעומת ניפוי באגים

חשוב לדעת שהספריות הבאות נבדקו באמצעות Visual Studio 2015 ו-2017.

כשמפתחים אפליקציות למחשב ב-C++ ב-Windows, צריך לקשר לפרויקט את ספריות Windows SDK הבאות. למידע נוסף, אפשר לעיין במסמכי התיעוד של המהדר.

ספריית C++ ב-Firebase יחסי תלות של ספריות Windows 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 (Darwin), יש גרסאות ספרייה של הפלטפורמה של 64 ביט (x86_64). לידיעתכם, יש גם מסגרות.

הערה: ספריות macOS נבדקו באמצעות Xcode 13.3.1.

כשמפתחים אפליקציות למחשב ב-C++‎ ב-macOS, צריך לקשר לפרויקט את הקבצים הבאים:

  • ספריית המערכת pthread
  • CoreFoundation מסגרת המערכת של macOS
  • Foundation מסגרת המערכת של macOS
  • Security מסגרת המערכת של macOS
  • GSS מסגרת המערכת של macOS
  • Kerberos מסגרת המערכת של macOS
  • מסגרת מערכת של macOS של SystemConfiguration

למידע נוסף, אפשר לעיין בתיעוד של המהדר (compiler).

ספריות Linux

ב-Linux, גרסאות הספרייה זמינות לפלטפורמות של 32 סיביות (i386) ו-64 סיביות (x86_64).

הערה: ספריות Linux נבדקו באמצעות GCC 4.8.0,‏ GCC 7.2.0 ו-Clang 5.0 ב-Ubuntu.

כשמפתחים אפליקציות למחשב ב-C++ ב-Linux, צריך לקשר את ספריית המערכת pthread לפרויקט. מידע נוסף זמין במסמכי התיעוד של המהדר. אם אתם מפתחים עם GCC 5 ואילך, צריך להגדיר את -D_GLIBCXX_USE_CXX11_ABI=0.

השלבים הבאים