เพิ่มประสิทธิภาพให้เกม C++ ด้วย Firebase C++ SDK ซึ่งมีอินเทอร์เฟซ C++ ที่ทำงานร่วมกับ Firebase SDK
เข้าถึง Firebase ทั้งหมดจากโค้ด C++ โดยไม่ต้องเขียนโค้ดแบบเนทีฟของแพลตฟอร์ม นอกจากนี้ Firebase SDK ยังแปลสำนวนเฉพาะภาษาจำนวนมากที่ Firebase ใช้เป็นอินเทอร์เฟซที่นักพัฒนา C++ คุ้นเคยมากขึ้นด้วย
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเพิ่มประสิทธิภาพเกมด้วย Firebase ได้ที่หน้าเกม Firebase
หากเพิ่ม Firebase ลงในโปรเจ็กต์ C++ แล้ว ตรวจสอบว่าคุณใช้ SDK C++ ของ Firebase เวอร์ชันล่าสุด
ข้อกำหนดเบื้องต้น
ติดตั้งสิ่งต่อไปนี้
- Xcode 26.2 ขึ้นไป
ตรวจสอบว่าโปรเจ็กต์กำหนดเป้าหมายเป็นแพลตฟอร์มเวอร์ชันต่อไปนี้หรือใหม่กว่า
- iOS 15
- tvOS 15
ตั้งค่าอุปกรณ์จริงหรือใช้เครื่องจำลองเพื่อเรียกใช้แอป
ลงชื่อเข้าใช้ Firebase ด้วยบัญชี Google
ขั้นตอนที่ 2: สร้างโปรเจ็กต์ Firebase
ก่อนที่จะเพิ่ม Firebase ลงในโปรเจ็กต์ C++ คุณต้องสร้างโปรเจ็กต์ Firebase เพื่อเชื่อมต่อกับโปรเจ็กต์ C++ ไปที่ทำความเข้าใจโปรเจ็กต์ Firebase เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับโปรเจ็กต์ Firebase
ขั้นตอนที่ 3: ลงทะเบียนแอปกับ Firebase
หากต้องการใช้ Firebase ในแอป Apple คุณต้องลงทะเบียนแอปกับโปรเจ็กต์ Firebase การลงทะเบียนแอปมักเรียกว่าการ "เพิ่ม" แอปลงในโปรเจ็กต์
ไปที่คอนโซล Firebase
คลิกไอคอน iOS+ ตรงกลางหน้าภาพรวมโปรเจ็กต์เพื่อเปิดเวิร์กโฟลว์การตั้งค่า
หากเพิ่มแอปลงในโปรเจ็กต์ Firebase แล้ว ให้คลิกเพิ่มแอปเพื่อแสดงตัวเลือกแพลตฟอร์ม
ป้อนรหัสชุดของแอปในช่องรหัสชุด
(ไม่บังคับ) ป้อนข้อมูลอื่นๆ ของแอป ได้แก่ ชื่อเล่นของแอปและรหัส App Store
คลิกลงทะเบียนแอป
ขั้นตอนที่ 4: เพิ่มไฟล์การกำหนดค่า Firebase
คลิกดาวน์โหลด GoogleService-Info.plist เพื่อรับไฟล์การกำหนดค่า Firebase สำหรับแพลตฟอร์ม Apple
เปิดโปรเจ็กต์ C++ ใน IDE แล้วลากไฟล์การกำหนดค่าไปยังรูทของโปรเจ็กต์ C++
หากได้รับข้อความแจ้ง ให้เลือกเพิ่มไฟล์การกำหนดค่าไปยังเป้าหมายทั้งหมด
คุณตั้งค่างานในคอนโซล Firebase เสร็จแล้ว ดำเนินการต่อเพื่อเพิ่ม Firebase C++ SDK ด้านล่าง
ขั้นตอนที่ 5: เพิ่ม Firebase C++ SDK
ขั้นตอนในส่วนนี้เป็นตัวอย่างวิธีเพิ่มผลิตภัณฑ์ Firebase ที่รองรับลงในโปรเจ็กต์ Firebase C++
ดาวน์โหลด Firebase C++ SDK แล้วแตกไฟล์ SDK ไว้ในตำแหน่งที่สะดวก
SDK Firebase C++ ไม่ได้เจาะจงแพลตฟอร์ม แต่มีไลบรารีที่เจาะจงแพลตฟอร์ม
ใช้ Swift Package Manager เพื่อติดตั้งและจัดการทรัพยากร Dependency ของ Firebase Apple Platforms SDK
ใน Xcode ขณะที่โปรเจ็กต์แอปเปิดอยู่ ให้ไปที่ไฟล์ > เพิ่มทรัพยากร Dependency ของแพ็กเกจ
เมื่อได้รับข้อความแจ้ง ให้เพิ่มที่เก็บ SDK ของ Firebase สำหรับแพลตฟอร์ม Apple ดังนี้
https://github.com/firebase/firebase-ios-sdk.git
สำหรับกฎการขึ้นต่อกัน ให้เลือกเวอร์ชันที่แน่นอน แล้วป้อน
13.1.1เลือกไลบรารี Firebase ที่ต้องการใช้ในแอป (เช่น
FirebaseAuthและFirebaseDatabase) หากเปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase ให้เพิ่มFirebaseAnalyticsด้วย
เมื่อเสร็จแล้ว Xcode จะเริ่มแก้ไขและดาวน์โหลดทรัพยากร Dependency ในเบื้องหลังโดยอัตโนมัติ
เพิ่ม XCFrameworks ของ Firebase จากไดเรกทอรี
xcframeworksของ SDK ที่แตกไฟล์แล้ววิธีที่ง่ายที่สุดในการเพิ่ม XCFrameworks เหล่านี้คือการลากจากหน้าต่าง
Finderไปยังแผง Project Navigator ของ Xcode โดยตรง (แผงด้านซ้ายสุดโดยค่าเริ่มต้น หรือคลิกไอคอนไฟล์ที่ด้านซ้ายบนของ Xcode) แล้วเพิ่มลงในเป้าหมายบิลด์ของแอปเพิ่ม Firebase C++ XCFramework
firebase.xcframeworkซึ่งจำเป็นสำหรับการใช้ผลิตภัณฑ์ Firebaseเพิ่ม XCFramework สำหรับผลิตภัณฑ์ Firebase แต่ละรายการที่ต้องการใช้ เช่น หากต้องการใช้ Firebase Authentication ให้เพิ่ม
firebase_auth.xcframework
กลับไปที่คอนโซล Firebase ในเวิร์กโฟลว์การตั้งค่า ให้คลิกถัดไป
หากคุณเพิ่ม Analytics ให้เรียกใช้แอปเพื่อส่งการยืนยันไปยัง Firebase ว่าคุณผสานรวม Firebase เรียบร้อยแล้ว หากไม่ ให้ข้ามขั้นตอนการยืนยันนี้
บันทึกของอุปกรณ์จะแสดงการยืนยัน Firebase ว่าการเริ่มต้นเสร็จสมบูรณ์แล้ว หากคุณเรียกใช้แอปในโปรแกรมจำลองที่มีสิทธิ์เข้าถึงเครือข่าย คอนโซล Firebase จะแจ้งให้คุณทราบว่าการเชื่อมต่อแอปเสร็จสมบูรณ์แล้ว
เรียบร้อยแล้ว ลงทะเบียนและกำหนดค่าแอป C++ ให้ใช้ผลิตภัณฑ์ Firebase แล้ว
ไลบรารีที่ใช้ได้
ดูข้อมูลเพิ่มเติมเกี่ยวกับไลบรารี Firebase ของ C++ ในเอกสารอ้างอิงและใน SDK แบบโอเพนซอร์สที่เผยแพร่ใน GitHub
ไลบรารีที่ใช้ได้สำหรับแพลตฟอร์ม Apple
โปรดทราบว่าไลบรารี C++ สำหรับ Android จะแสดงอยู่ในหน้าการตั้งค่านี้เวอร์ชัน Android
ผลิตภัณฑ์ Firebase แต่ละรายการมีการขึ้นต่อกันที่แตกต่างกัน อย่าลืมเพิ่มทรัพยากร Dependency ทั้งหมดที่แสดงไว้สำหรับผลิตภัณฑ์ Firebase ที่เลือกโดยใช้ Swift Package Manager และในโปรเจ็กต์ C++
ผลิตภัณฑ์ Firebase แต่ละรายการอาจรองรับเฉพาะแพลตฟอร์ม Apple OS บางแพลตฟอร์ม (iOS, tvOS ฯลฯ) ตรวจสอบแพลตฟอร์มที่แต่ละไลบรารีรองรับในดูข้อมูลเพิ่มเติมเกี่ยวกับ C++ และ Firebase
| ผลิตภัณฑ์ Firebase | ไลบรารี XCFrameworks และ Swift Package Manager |
|---|---|
| Analytics |
(ต้องระบุ) firebase.xcframeworkfirebase_analytics.xcframeworkFirebaseAnalytics (13.1.1)
|
| App Check |
(ต้องระบุ) firebase.xcframeworkfirebase_app_check.xcframeworkFirebaseAppCheck (13.1.1)
|
| Authentication |
(ต้องระบุ) firebase.xcframeworkfirebase_auth.xcframeworkFirebaseAuth (13.1.1)
|
| Cloud Firestore |
(ต้องระบุ) firebase.xcframeworkfirebase_firestore.xcframeworkfirebase_auth.xcframeworkFirebaseFirestore (13.1.1)FirebaseAuth (13.1.1)
|
| Cloud Functions |
(ต้องระบุ) firebase.xcframeworkfirebase_functions.xcframeworkFirebaseFunctions (13.1.1)
|
| Cloud Messaging |
(ต้องระบุ) firebase.xcframeworkfirebase_messaging.xcframework(แนะนำ) firebase_analytics.xcframeworkFirebaseMessaging (13.1.1)(แนะนำ) FirebaseAnalytics (13.1.1)
|
| Cloud Storage |
(ต้องระบุ) firebase.xcframeworkfirebase_storage.xcframeworkFirebaseStorage (13.1.1)
|
| Realtime Database |
(ต้องระบุ) firebase.xcframeworkfirebase_database.xcframeworkFirebaseDatabase (13.1.1)
|
| Remote Config |
(ต้องระบุ) firebase.xcframeworkfirebase_remote_config.xcframework(แนะนำ) firebase_analytics.xcframeworkFirebaseRemoteConfig (13.1.1)(แนะนำ) FirebaseAnalytics (13.1.1)
|
| ไลบรารีที่เลิกใช้งานแล้วหรือไม่รองรับ | |
| Dynamic Links |
(ต้องระบุ) firebase.xcframeworkfirebase_dynamic_links.xcframework(แนะนำ) firebase_analytics.xcframeworkFirebaseDynamicLinks (13.1.1)(แนะนำ) FirebaseAnalytics (13.1.1)
|
ข้อมูลเพิ่มเติมสำหรับการตั้งค่าอุปกรณ์เคลื่อนที่
ผสานรวมโดยไม่ใช้ Swift Package Manager
หากไม่ต้องการใช้ Swift Package Manager เพื่อจัดการทรัพยากร Dependency ของ SDK สำหรับแพลตฟอร์ม Apple ของ Firebase ที่เกี่ยวข้อง โปรดดูหัวข้อผสานรวมโดยไม่ใช้ Swift Package Manager ในคู่มือการตั้งค่าแพลตฟอร์ม Apple เพื่อดูตัวเลือกการผสานรวมอื่นๆ
การแลกเปลี่ยนเมธอด
ใน iOS เหตุการณ์บางอย่างของแอปพลิเคชัน (เช่น การเปิด URL และการรับการแจ้งเตือน) กำหนดให้ผู้รับมอบสิทธิ์ของแอปพลิเคชันต้องใช้วิธีการที่เฉพาะเจาะจง ตัวอย่างเช่น การรับการแจ้งเตือนอาจต้องใช้ผู้รับมอบสิทธิ์แอปพลิเคชันเพื่อใช้ application:didReceiveRemoteNotification: เนื่องจากแอปพลิเคชัน iOS แต่ละแอปมี App Delegate ของตัวเอง Firebase จึงใช้การแลกเปลี่ยนเมธอด ซึ่งช่วยให้สามารถแทนที่เมธอดหนึ่งด้วยอีกเมธอดหนึ่ง เพื่อแนบเครื่องมือจัดการของตัวเองนอกเหนือจากที่คุณอาจติดตั้งใช้งานไว้
ไลบรารี Dynamic Links และ Cloud Messaging ต้องแนบแฮนเดิลกับตัวแทนแอปพลิเคชันโดยใช้การแลกเปลี่ยนเมธอด หากคุณใช้ผลิตภัณฑ์ Firebase เหล่านี้ ในเวลาโหลด Firebase จะระบุคลาส AppDelegate ของคุณและสลับเมธอดที่จำเป็นลงในคลาสดังกล่าว โดยเชื่อมโยงการเรียกกลับไปยังการติดตั้งใช้งานเมธอดที่มีอยู่
ตั้งค่าเวิร์กโฟลว์บนเดสก์ท็อป (เบต้า)
เมื่อสร้างเกม การทดสอบเกมบนแพลตฟอร์มเดสก์ท็อปก่อนมักจะง่ายกว่ามาก จากนั้นจึงค่อยติดตั้งใช้งานและทดสอบบนอุปกรณ์เคลื่อนที่ในภายหลังในขั้นตอนการพัฒนา เพื่อรองรับเวิร์กโฟลว์นี้ เราจึงมีชุดย่อยของ C++ SDK ของ Firebase ซึ่งทำงานได้ใน Windows, macOS, Linux และจากภายในเครื่องมือแก้ไข C++
สำหรับเวิร์กโฟลว์บนเดสก์ท็อป คุณต้องดำเนินการต่อไปนี้ให้เสร็จสมบูรณ์
- กำหนดค่าโปรเจ็กต์ C++ สำหรับ CMake
- สร้างโปรเจ็กต์ Firebase
- ลงทะเบียนแอป (iOS หรือ Android) กับ Firebase
- เพิ่มไฟล์การกำหนดค่า Firebase สำหรับแพลตฟอร์มอุปกรณ์เคลื่อนที่
สร้างไฟล์การกำหนดค่า Firebase เวอร์ชันเดสก์ท็อปโดยทำดังนี้
หากคุณเพิ่มไฟล์
google-services.jsonของ Android - เมื่อคุณเรียกใช้แอป Firebase จะค้นหาไฟล์อุปกรณ์เคลื่อนที่นี้ แล้วสร้างไฟล์การกำหนดค่า Firebase สำหรับเดสก์ท็อป (google-services-desktop.json) โดยอัตโนมัติหากคุณเพิ่มไฟล์ iOS
GoogleService-Info.plist- ก่อนเรียกใช้แอป คุณต้องแปลงไฟล์อุปกรณ์เคลื่อนที่นี้เป็นไฟล์การกำหนดค่า Firebase สำหรับเดสก์ท็อป หากต้องการแปลงไฟล์ ให้เรียกใช้คำสั่งต่อไปนี้จากไดเรกทอรีเดียวกับไฟล์GoogleService-Info.plistgenerate_xml_from_google_services_json.py --plist -i GoogleService-Info.plist
ไฟล์การกำหนดค่าเดสก์ท็อปนี้มีรหัสโปรเจ็กต์ C++ ที่คุณป้อนในเวิร์กโฟลว์การตั้งค่าคอนโซล Firebase ไปที่ทำความเข้าใจโปรเจ็กต์ Firebase เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับไฟล์การกำหนดค่า
เพิ่ม Firebase SDK ลงในโปรเจ็กต์ C++
ขั้นตอนด้านล่างเป็นตัวอย่างวิธีเพิ่มผลิตภัณฑ์ Firebase ที่รองรับลงในโปรเจ็กต์ C++ ในตัวอย่างนี้ เราจะอธิบายการเพิ่ม Firebase Authentication และ Firebase Realtime Database
ตั้งค่าตัวแปรสภาพแวดล้อม
FIREBASE_CPP_SDK_DIRเป็นตำแหน่งของ SDK C++ Firebase ที่แตกไฟล์แล้วเพิ่มเนื้อหาต่อไปนี้ลงในไฟล์
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}")
เรียกใช้แอป 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_firestorefirebase_authfirebase_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() บนเดสก์ท็อป มิฉะนั้น Listener จะทำงานไม่สำเร็จ
ข้อมูลเพิ่มเติมสำหรับการตั้งค่าบนเดสก์ท็อป
ไลบรารีของ Windows
สำหรับ Windows ระบบจะระบุเวอร์ชันของไลบรารีตามข้อมูลต่อไปนี้
- แพลตฟอร์มบิลด์: โหมด 32 บิต (x86) เทียบกับ 64 บิต (x64)
- สภาพแวดล้อมรันไทม์ของ Windows: Multithreaded / MT เทียบกับ Multithreaded DLL /MD
- เป้าหมาย: Release เทียบกับ Debug
โปรดทราบว่าไลบรารีต่อไปนี้ได้รับการทดสอบโดยใช้ Visual Studio 2015 และ 2017
เมื่อสร้างแอป C++ บนเดสก์ท็อปใน Windows ให้ลิงก์ไลบรารี Windows SDK ต่อไปนี้กับโปรเจ็กต์ของคุณ ดูข้อมูลเพิ่มเติมในเอกสารประกอบของคอมไพเลอร์
| ไลบรารี Firebase C++ | ทรัพยากร 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 26.2
เมื่อสร้างแอป C++ บนเดสก์ท็อปใน macOS ให้ลิงก์รายการต่อไปนี้กับโปรเจ็กต์
- ไลบรารีระบบ
pthreadรายการ - เฟรมเวิร์กระบบ macOS
CoreFoundation - เฟรมเวิร์กระบบ macOS
Foundation - เฟรมเวิร์กระบบ macOS
Security - เฟรมเวิร์กระบบ macOS
GSS - เฟรมเวิร์กระบบ macOS
Kerberos - เฟรมเวิร์กระบบ macOS
SystemConfiguration
ดูข้อมูลเพิ่มเติมในเอกสารประกอบของคอมไพเลอร์
ไลบรารี 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
ขั้นตอนถัดไป
สำรวจ SDK โอเพนซอร์สใน GitHub
เตรียมเปิดตัวแอปโดยทำดังนี้
- ตั้งค่าการแจ้งเตือนงบประมาณสำหรับโปรเจ็กต์ในคอนโซล Google Cloud
- ตรวจสอบแดชบอร์ดการใช้งานและการเรียกเก็บเงินในคอนโซล Firebase เพื่อดูภาพรวมการใช้งานของโปรเจ็กต์ในบริการต่างๆ ของ Firebase
- ดูรายการตรวจสอบการเปิดตัว Firebase