เพิ่มประสิทธิภาพเกม C++ ด้วย Firebase C++ SDK ซึ่งมีอินเทอร์เฟซ C++ ที่ทำงานร่วมกับ Firebase SDK
เข้าถึง Firebase ทั้งหมดจากโค้ด C++ โดยไม่ต้องเขียนโค้ดแบบเนทีฟของแพลตฟอร์ม นอกจากนี้ Firebase SDK ยังแปลสำนวนเฉพาะภาษาจำนวนมากที่ Firebase ใช้เป็นอินเทอร์เฟซที่นักพัฒนา C++ คุ้นเคยมากขึ้นด้วย
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเพิ่มประสิทธิภาพเกมด้วย Firebase ได้ที่หน้าเกม Firebase
หากเพิ่ม Firebase ลงในโปรเจ็กต์ C++ แล้ว ตรวจสอบว่าคุณใช้ SDK C++ ของ Firebase เวอร์ชันล่าสุด
ข้อกำหนดเบื้องต้น
ติดตั้งสิ่งต่อไปนี้
- Xcode 26.2 ขึ้นไป
- CocoaPods 1.12.0 ขึ้นไป
ตรวจสอบว่าโปรเจ็กต์กำหนดเป้าหมายเป็นแพลตฟอร์มเวอร์ชันต่อไปนี้หรือใหม่กว่า
- 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++ ไม่ได้เจาะจงแพลตฟอร์ม แต่มีไลบรารีที่เจาะจงแพลตฟอร์ม
เพิ่ม pod ของ Firebase จาก SDK ที่แตกไฟล์แล้ว
สร้าง Podfile หากยังไม่มี โดยทำดังนี้
cd your-app-directory
pod init
เพิ่มพ็อด 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'
ติดตั้ง Pod แล้วเปิดไฟล์
.xcworkspaceใน Xcodepod install
open your-app.xcworkspace
เพิ่มเฟรมเวิร์ก Firebase จาก SDK ที่แตกไฟล์แล้ว
วิธีที่ง่ายที่สุดในการเพิ่มเฟรมเวิร์กเหล่านี้คือการลากจากหน้าต่าง
Finderไปยังแผงเครื่องมือนำทางโปรเจ็กต์ของ Xcode โดยตรง (แผงด้านซ้ายสุดโดยค่าเริ่มต้น หรือคลิกไอคอนไฟล์ที่ด้านซ้ายบนของ Xcode)เพิ่มเฟรมเวิร์ก Firebase C++
firebase.frameworkซึ่งจำเป็นสำหรับการใช้ผลิตภัณฑ์ Firebaseเพิ่มเฟรมเวิร์กสำหรับผลิตภัณฑ์ Firebase แต่ละรายการที่ต้องการใช้ เช่น หากต้องการใช้ Firebase Authentication ให้เพิ่ม
firebase_auth.framework
กลับไปที่คอนโซล Firebase ในเวิร์กโฟลว์การตั้งค่า ให้คลิกถัดไป
หากคุณเพิ่ม Analytics ให้เรียกใช้แอปเพื่อส่งการยืนยันไปยัง Firebase ว่าคุณได้ผสานรวม Firebase เรียบร้อยแล้ว หากไม่ ให้ข้ามขั้นตอนการยืนยันนี้
บันทึกของอุปกรณ์จะแสดงการยืนยัน Firebase ว่าการเริ่มต้นเสร็จสมบูรณ์แล้ว หากคุณเรียกใช้แอปในโปรแกรมจำลองที่มีสิทธิ์เข้าถึงเครือข่าย คอนโซล Firebase จะแจ้งให้คุณทราบว่าการเชื่อมต่อแอปเสร็จสมบูรณ์แล้ว
เรียบร้อยแล้ว ลงทะเบียนและกำหนดค่าแอป C++ ให้ใช้ผลิตภัณฑ์ Firebase แล้ว
ไลบรารีที่ใช้ได้
ดูข้อมูลเพิ่มเติมเกี่ยวกับไลบรารี Firebase ของ C++ ในเอกสารอ้างอิงและใน SDK โอเพนซอร์สที่เผยแพร่ใน GitHub
ไลบรารีที่ใช้ได้สำหรับแพลตฟอร์ม Apple
โปรดทราบว่าไลบรารี C++ สำหรับ Android จะแสดงอยู่ในหน้าการตั้งค่าเวอร์ชัน Android นี้
ผลิตภัณฑ์ Firebase แต่ละรายการมีทรัพยากร Dependency ที่แตกต่างกัน อย่าลืมเพิ่มทรัพยากร Dependency ทั้งหมดที่ระบุไว้สำหรับผลิตภัณฑ์ Firebase ที่ต้องการลงใน Podfile และโปรเจ็กต์ C++
ผลิตภัณฑ์ Firebase แต่ละรายการอาจรองรับเฉพาะแพลตฟอร์ม Apple OS บางแพลตฟอร์ม (iOS, tvOS ฯลฯ) ตรวจสอบแพลตฟอร์มที่แต่ละไลบรารีรองรับในดูข้อมูลเพิ่มเติมเกี่ยวกับ C++ และ Firebase
| ผลิตภัณฑ์ Firebase | เฟรมเวิร์กและพ็อด |
|---|---|
| Analytics |
(ต้องระบุ) firebase.frameworkfirebase_analytics.frameworkpod 'FirebaseAnalytics', '13.0.0'
|
| App Check |
(ต้องระบุ) firebase.frameworkfirebase_app_check.frameworkpod 'FirebaseAppCheck', '13.0.0'
|
| Authentication |
(ต้องระบุ) firebase.frameworkfirebase_auth.frameworkpod 'FirebaseAuth', '13.0.0'
|
| Cloud Firestore |
(ต้องระบุ) firebase.frameworkfirebase_firestore.frameworkfirebase_auth.frameworkpod 'FirebaseFirestore', '13.0.0'pod 'FirebaseAuth', '13.0.0'
|
| Cloud Functions |
(ต้องระบุ) firebase.frameworkfirebase_functions.frameworkpod 'FirebaseFunctions', '13.0.0'
|
| Cloud Messaging |
(ต้องระบุ) firebase.frameworkfirebase_messaging.framework(แนะนำ) firebase_analytics.frameworkpod 'FirebaseMessaging', '13.0.0'(แนะนำ) pod 'FirebaseAnalytics', '13.0.0'
|
| Cloud Storage |
(ต้องระบุ) firebase.frameworkfirebase_storage.frameworkpod 'FirebaseStorage', '13.0.0'
|
| Realtime Database |
(ต้องระบุ) firebase.frameworkfirebase_database.frameworkpod 'FirebaseDatabase', '13.0.0'
|
| Remote Config |
(ต้องระบุ) firebase.frameworkfirebase_remote_config.framework(แนะนำ) firebase_analytics.frameworkpod 'FirebaseRemoteConfig', '13.0.0'(แนะนำ) pod 'FirebaseAnalytics', '13.0.0'
|
| ไลบรารีที่เลิกใช้งานแล้วหรือไม่รองรับ | |
| Dynamic Links |
(ต้องระบุ) firebase.frameworkfirebase_dynamic_links.framework(แนะนำ) firebase_analytics.frameworkpod 'FirebaseDynamicLinks', '13.0.0'(แนะนำ) pod 'FirebaseAnalytics', '13.0.0'
|
ข้อมูลเพิ่มเติมสำหรับการตั้งค่าอุปกรณ์เคลื่อนที่
การแลกเปลี่ยนเมธอด
ใน iOS เหตุการณ์บางอย่างของแอปพลิเคชัน (เช่น การเปิด URL และการรับการแจ้งเตือน) กำหนดให้ผู้รับมอบสิทธิ์ของแอปพลิเคชันต้องใช้วิธีการที่เฉพาะเจาะจง ตัวอย่างเช่น การรับการแจ้งเตือนอาจต้องใช้ผู้รับมอบสิทธิ์แอปพลิเคชันเพื่อใช้ application:didReceiveRemoteNotification: เนื่องจากแอปพลิเคชัน iOS แต่ละแอปมีผู้รับมอบสิทธิ์แอปของตนเอง Firebase จึงใช้การแลกเปลี่ยนเมธอด ซึ่งช่วยให้สามารถแทนที่เมธอดหนึ่งด้วยอีกเมธอดหนึ่ง เพื่อแนบเครื่องมือจัดการของตนเองนอกเหนือจากที่คุณอาจติดตั้งใช้งานไว้
ไลบรารี Dynamic Links และ Cloud Messaging ต้องแนบแฮนเดิลกับผู้รับมอบสิทธิ์แอปพลิเคชันโดยใช้การแลกเปลี่ยนเมธอด หากคุณใช้ผลิตภัณฑ์ Firebase เหล่านี้ ในเวลาโหลด Firebase จะระบุคลาส AppDelegate ของคุณและสลับเมธอดที่จำเป็นลงในคลาสนั้น โดยเชื่อมโยงการเรียกกลับไปยังการติดตั้งใช้งานเมธอดที่มีอยู่
ตั้งค่าเวิร์กโฟลว์บนเดสก์ท็อป (เบต้า)
เมื่อสร้างเกม การทดสอบเกมบนแพลตฟอร์มเดสก์ท็อปก่อนมักจะง่ายกว่ามาก จากนั้นจึงค่อยติดตั้งใช้งานและทดสอบบนอุปกรณ์เคลื่อนที่ในขั้นตอนการพัฒนาภายหลัง เพื่อรองรับเวิร์กโฟลว์นี้ เราจึงมีชุดย่อยของ Firebase C++ SDK ที่ทำงานได้ใน Windows, macOS, Linux และจากภายในเครื่องมือแก้ไข C++
สำหรับเวิร์กโฟลว์บนเดสก์ท็อป คุณต้องดำเนินการต่อไปนี้ให้เสร็จสมบูรณ์
- กำหนดค่าโปรเจ็กต์ C++ สำหรับ CMake
- สร้างโปรเจ็กต์ Firebase
- ลงทะเบียนแอป (iOS หรือ Android) กับ Firebase
- เพิ่มไฟล์การกำหนดค่า Firebase สำหรับแพลตฟอร์มอุปกรณ์เคลื่อนที่
สร้างไฟล์การกำหนดค่า Firebase เวอร์ชันเดสก์ท็อปโดยทำดังนี้
หากคุณเพิ่มไฟล์
google-services.jsonของ Android - เมื่อคุณเรียกใช้แอป Firebase จะค้นหาไฟล์อุปกรณ์เคลื่อนที่นี้ แล้วสร้างไฟล์การกำหนดค่า Firebase (google-services-desktop.json) สำหรับเดสก์ท็อปโดยอัตโนมัติหากคุณเพิ่มไฟล์
GoogleService-Info.plistของ iOS - ก่อนเรียกใช้แอป คุณต้องแปลงไฟล์อุปกรณ์เคลื่อนที่นี้เป็นไฟล์การกำหนดค่า 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