เพิ่ม Firebase ไปยังโปรเจ็กต์ C++

ยกระดับเกม C++ ด้วย Firebase C++ SDK ซึ่งมีอินเทอร์เฟซ C++ อยู่เหนือ Firebase SDK

เข้าถึง Firebase จากโค้ด C++ โดยสมบูรณ์โดยไม่ต้องเขียนโค้ดเฉพาะแพลตฟอร์ม นอกจากนี้ Firebase SDK ยังแปลสำนวนเฉพาะภาษาหลายอย่างที่ Firebase ใช้เป็นอินเทอร์เฟซที่นักพัฒนาแอป C++ คุ้นเคยมากขึ้นด้วย

ดูข้อมูลเพิ่มเติมเกี่ยวกับการเพิ่มประสิทธิภาพเกมด้วย Firebase ได้ที่ หน้าเกมของ Firebase

หากเพิ่ม Firebase ลงในโปรเจ็กต์ C++ แล้ว ตรวจสอบว่าคุณใช้ Firebase C++ SDK เวอร์ชันล่าสุด


ข้อกำหนดเบื้องต้น

  • ติดตั้งสิ่งต่อไปนี้

    • Xcode 16.2 ขึ้นไป
    • 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. ป้อนรหัสชุดของแอปในช่องรหัสชุด

  4. (ไม่บังคับ) ป้อนข้อมูลแอปอื่นๆ ดังนี้ ชื่อเล่นของแอปและรหัส App Store

  5. คลิกลงทะเบียนแอป

ขั้นตอนที่ 4: เพิ่มไฟล์กำหนดค่า Firebase

  1. คลิกดาวน์โหลด GoogleService-Info.plist เพื่อรับไฟล์กำหนดค่าแพลตฟอร์ม Apple ของ Firebase

  2. เปิดโปรเจ็กต์ C++ ใน IDE จากนั้นลากไฟล์การกำหนดค่าไปยังรูท ของโปรเจ็กต์ C++

  3. หากได้รับข้อความแจ้ง ให้เลือกเพิ่มไฟล์กำหนดค่าไปยังเป้าหมายทั้งหมด

คุณทำงานตั้งค่าในFirebaseคอนโซลเสร็จแล้ว ดำเนินการต่อเพื่อเพิ่ม Firebase C++ SDK ด้านล่าง

ขั้นตอนที่ 5: เพิ่ม Firebase C++ SDK

ขั้นตอนในส่วนนี้เป็นตัวอย่างวิธีเพิ่มผลิตภัณฑ์ Firebase ที่รองรับลงในโปรเจ็กต์ Firebase C++

  1. ดาวน์โหลด Firebase C++ SDK แล้วแตกไฟล์ SDK ไว้ที่ใดก็ได้ที่คุณสะดวก

    Firebase C++ SDK ไม่ได้เจาะจงแพลตฟอร์ม แต่มีไลบรารีที่เจาะจงแพลตฟอร์ม

  2. เพิ่ม Pod ของ Firebase จาก SDK ที่แยกไฟล์แล้ว

    1. หากคุณยังไม่มี Podfile ให้สร้างโดยเรียกใช้คำสั่งต่อไปนี้

      cd your-app-directory
      pod init

    2. เพิ่มพ็อด Firebase ที่ต้องการใช้ในแอป ลงใน Podfile

      เปิดใช้ 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. ติดตั้งพ็อด แล้วเปิดไฟล์ .xcworkspace ใน Xcode

      pod install
      open your-app.xcworkspace

  3. เพิ่ม framework ของ Firebase จาก SDK ที่ไม่ได้ซิป

    วิธีที่ง่ายที่สุดในการเพิ่มเฟรมเวิร์กเหล่านี้มักจะเป็นการลากจากหน้าต่าง Finder ไปยังแผงProject Navigator ของ Xcode โดยตรง (แผงด้านซ้ายสุดโดยค่าเริ่มต้น หรือคลิกไอคอนไฟล์ที่ด้านซ้ายบนของ Xcode)

    1. เพิ่มเฟรมเวิร์ก C++ ของ Firebase firebase.framework ซึ่งจำเป็นต้องใช้เพื่อใช้ผลิตภัณฑ์ Firebase

    2. เพิ่มเฟรมเวิร์กสําหรับผลิตภัณฑ์ Firebase แต่ละรายการที่ต้องการใช้ เช่น หากต้องการใช้ Firebase Authentication ให้เพิ่ม firebase_auth.framework

  4. กลับไปที่คอนโซล Firebase ในเวิร์กโฟลว์การตั้งค่า ให้คลิกถัดไป

  5. หากคุณเพิ่ม Analytics ให้เรียกใช้แอปเพื่อส่งการยืนยันไปยัง Firebase ว่าคุณผสานรวม Firebase เรียบร้อยแล้ว ไม่เช่นนั้น ให้ข้ามขั้นตอนการยืนยันนี้

    บันทึกของอุปกรณ์จะแสดงการยืนยัน Firebase ว่าการเริ่มต้น เสร็จสมบูรณ์แล้ว หากคุณเรียกใช้แอปในโปรแกรมจำลองที่มีสิทธิ์เข้าถึงเครือข่าย Firebaseคอนโซลจะแจ้งให้คุณทราบว่าการเชื่อมต่อแอปเสร็จสมบูรณ์แล้ว

เรียบร้อยแล้ว แอป C++ ได้รับการลงทะเบียนและกำหนดค่าให้ใช้ผลิตภัณฑ์ Firebase แล้ว

ไลบรารีที่ใช้ได้

ดูข้อมูลเพิ่มเติมเกี่ยวกับไลบรารี C++ Firebase ได้ในเอกสารอ้างอิงและใน SDK โอเพนซอร์ส ที่เผยแพร่ใน GitHub

ไลบรารีที่ใช้ได้สำหรับแพลตฟอร์มของ Apple

โปรดทราบว่าไลบรารี C++ สำหรับ Android จะแสดงอยู่ในเวอร์ชัน Android ของหน้าการตั้งค่านี้

ผลิตภัณฑ์ Firebase แต่ละรายการมีทรัพยากร Dependency ที่แตกต่างกัน อย่าลืมเพิ่มทรัพยากร Dependency ทั้งหมดที่ระบุไว้สำหรับผลิตภัณฑ์ Firebase ที่ต้องการลงใน Podfile และโปรเจ็กต์ C++

ผลิตภัณฑ์ Firebase แต่ละรายการอาจรองรับเฉพาะแพลตฟอร์มระบบปฏิบัติการของ Apple บางรายการ (iOS, tvOS ฯลฯ) ดูว่าแพลตฟอร์มใดบ้างที่แต่ละไลบรารีรองรับได้ในดูข้อมูลเพิ่มเติมเกี่ยวกับ C++ และ Firebase

ผลิตภัณฑ์ Firebase เฟรมเวิร์กและพ็อด
AdMob (ต้องระบุ) firebase.framework
firebase_admob.framework
(ต้องระบุ) firebase_analytics.framework

pod 'FirebaseAdMob', '12.0.0'
(ต้องระบุ) pod 'FirebaseAnalytics', '12.0.0'
Analytics (ต้องระบุ) firebase.framework
firebase_analytics.framework

pod 'FirebaseAnalytics', '12.0.0'
App Check (ต้องระบุ) firebase.framework
firebase_app_check.framework

pod 'FirebaseAppCheck', '12.0.0'
Authentication (ต้องระบุ) firebase.framework
firebase_auth.framework

pod 'FirebaseAuth', '12.0.0'
Cloud Firestore (ต้องระบุ) firebase.framework
firebase_firestore.framework
firebase_auth.framework

pod 'FirebaseFirestore', '12.0.0'
pod 'FirebaseAuth', '12.0.0'
Cloud Functions (ต้องระบุ) firebase.framework
firebase_functions.framework

pod 'FirebaseFunctions', '12.0.0'
Cloud Messaging (ต้องระบุ) firebase.framework
firebase_messaging.framework
(แนะนำ) firebase_analytics.framework

pod 'FirebaseMessaging', '12.0.0'
(แนะนำ) pod 'FirebaseAnalytics', '12.0.0'
Cloud Storage (ต้องระบุ) firebase.framework
firebase_storage.framework

pod 'FirebaseStorage', '12.0.0'
Dynamic Links (ต้องระบุ) firebase.framework
firebase_dynamic_links.framework
(แนะนำ) firebase_analytics.framework

pod 'FirebaseDynamicLinks', '12.0.0'
(แนะนำ) pod 'FirebaseAnalytics', '12.0.0'
Realtime Database (ต้องระบุ) firebase.framework
firebase_database.framework

pod 'FirebaseDatabase', '12.0.0'
Remote Config (ต้องระบุ) firebase.framework
firebase_remote_config.framework
(แนะนำ) firebase_analytics.framework

pod 'FirebaseRemoteConfig', '12.0.0'
(แนะนำ) pod 'FirebaseAnalytics', '12.0.0'

ข้อมูลเพิ่มเติมสำหรับการตั้งค่าบนอุปกรณ์เคลื่อนที่

การแลกเปลี่ยนเมธอด

ใน iOS เหตุการณ์ของแอปพลิเคชันบางอย่าง (เช่น การเปิด URL และการรับ การแจ้งเตือน) กำหนดให้ตัวแทนของแอปพลิเคชันต้องใช้เมธอดที่เฉพาะเจาะจง เช่น การรับการแจ้งเตือนอาจกำหนดให้ตัวแทนแอปพลิเคชัน ของคุณใช้ 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 จะค้นหาไฟล์ mobile นี้ จากนั้นจะสร้างไฟล์การกำหนดค่า Firebase desktop โดยอัตโนมัติ (google-services-desktop.json)

    • หากคุณเพิ่มไฟล์ GoogleService-Info.plist iOS - ก่อนที่จะเรียกใช้แอป คุณต้องแปลงไฟล์ mobile นี้เป็นไฟล์การกำหนดค่า Firebase desktop หากต้องการแปลงไฟล์ ให้เรียกใช้คำสั่งต่อไปนี้จากไดเรกทอรีเดียวกับไฟล์ 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++

ไลบรารีที่พร้อมใช้งาน (เดสก์ท็อป)

Firebase C++ SDK มีการรองรับเวิร์กโฟลว์บนเดสก์ท็อป สำหรับฟีเจอร์บางส่วน ซึ่งช่วยให้ใช้ 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 มีไลบรารีเดสก์ท็อปที่เหลือเป็นการใช้งานแบบ Stub (ใช้งานไม่ได้) เพื่อความสะดวกเมื่อสร้างสำหรับ Windows, macOS และ Linux ดังนั้น คุณจึงไม่จำเป็นต้องคอมไพล์โค้ดแบบมีเงื่อนไขเพื่อกำหนดเป้าหมายไปยังเดสก์ท็อป

Realtime Database เดสก์ท็อป

Realtime Database SDK สำหรับเดสก์ท็อปใช้ REST เพื่อเข้าถึงฐานข้อมูลของคุณ ดังนั้นคุณต้องประกาศดัชนีที่คุณใช้กับ Query::OrderByChild() บนเดสก์ท็อป มิฉะนั้น Listener จะทำงานไม่สำเร็จ

ข้อมูลเพิ่มเติมสำหรับการตั้งค่าบนเดสก์ท็อป

ไลบรารีของ Windows

สำหรับ Windows ระบบจะระบุเวอร์ชันไลบรารีตามข้อมูลต่อไปนี้

  • แพลตฟอร์มการสร้าง: โหมด 32 บิต (x86) กับ 64 บิต (x64)
  • สภาพแวดล้อมรันไทม์ของ Windows: Multithreaded / MT เทียบกับ Multithreaded DLL /MD
  • เป้าหมาย: รุ่นที่เผยแพร่เทียบกับรุ่นแก้ไขข้อบกพร่อง

โปรดทราบว่าเราได้ทดสอบไลบรารีต่อไปนี้โดยใช้ Visual Studio 2015 และ 2017

เมื่อสร้างแอปเดสก์ท็อป C++ ใน Windows ให้ลิงก์ไลบรารี Windows SDK ต่อไปนี้กับโปรเจ็กต์ ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของคอมไพเลอร์

ไลบรารี C++ ของ Firebase ทรัพยากร Dependency ของไลบรารี 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 16.2 แล้ว

เมื่อสร้างแอปเดสก์ท็อป 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ไลบรารีระบบกับโปรเจ็กต์ ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของคอมไพเลอร์ หากคุณสร้างด้วย GCC 5 ขึ้นไป ให้กำหนด -D_GLIBCXX_USE_CXX11_ABI=0

ขั้นตอนถัดไป