เพิ่มประสิทธิภาพเกม C++ ด้วย Firebase C++ SDK ซึ่งมีอินเทอร์เฟซ C++ บน Firebase SDK
เข้าถึง Firebase ทั้งหมดจากโค้ด C++ โดยไม่ต้องเขียนโค้ดแบบเนทีฟของแพลตฟอร์ม นอกจากนี้ Firebase SDK ยังแปลสำนวนเฉพาะภาษาจำนวนมากที่ 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 การลงทะเบียนแอปมักเรียกว่า "การเพิ่ม" แอปลงในโปรเจ็กต์
ไปที่คอนโซล Firebase
คลิกไอคอน iOS+ ตรงกลางหน้าภาพรวมโปรเจ็กต์เพื่อเปิดเวิร์กโฟลว์การตั้งค่า
หากเพิ่มแอปลงในโปรเจ็กต์ Firebase อยู่แล้ว ให้คลิกเพิ่มแอปเพื่อแสดงตัวเลือกแพลตฟอร์ม
ป้อนรหัสกลุ่มของแอปในช่องรหัสกลุ่ม
(ไม่บังคับ) ป้อนข้อมูลอื่นๆ ของแอป ได้แก่ ชื่อเล่นของแอปและ App Store ID
คลิกลงทะเบียนแอป
ขั้นตอนที่ 4: เพิ่มไฟล์การกําหนดค่า Firebase
คลิกดาวน์โหลด GoogleService-Info.plist เพื่อรับไฟล์กําหนดค่าแพลตฟอร์ม Apple ของ Firebase
เปิดโปรเจ็กต์ C++ ใน IDE จากนั้นลากไฟล์การกําหนดค่าไปยังรูทของโปรเจ็กต์ C++
หากได้รับข้อความแจ้ง ให้เลือกเพิ่มไฟล์กำหนดค่าลงในเป้าหมายทั้งหมด
คุณตั้งค่าในคอนโซล Firebase เสร็จแล้ว ดำเนินการต่อเพื่อเพิ่ม Firebase C++ SDK ด้านล่าง
ขั้นตอนที่ 5: เพิ่ม Firebase C++ SDK
ขั้นตอนในส่วนนี้เป็นตัวอย่างวิธีเพิ่มผลิตภัณฑ์ Firebase ที่รองรับลงในโปรเจ็กต์ Firebase C++
ดาวน์โหลด Firebase C++ SDK แล้วแตกไฟล์ SDK ไว้ที่ใดก็ได้ที่คุณสะดวก
SDK Firebase C++ ไม่ได้ออกแบบมาเพื่อแพลตฟอร์มใดแพลตฟอร์มหนึ่งโดยเฉพาะ แต่มีไลบรารีสำหรับแพลตฟอร์มที่เฉพาะเจาะจง
เพิ่ม pods ของ 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'
ติดตั้งพ็อด แล้วเปิดไฟล์
.xcworkspace
ใน Xcodepod install
open your-app.xcworkspace
เพิ่ม เฟรมเวิร์ก Firebase จาก SDK ที่แตกไฟล์แล้ว
โดยปกติแล้ว วิธีเพิ่มเฟรมเวิร์กเหล่านี้ที่ง่ายที่สุดคือการลากจากหน้าต่าง
Finder
ไปยังแผงProject Navigator ของ 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 ทั้งหมดที่แสดงสำหรับผลิตภัณฑ์ Firebase ที่ต้องการลงใน Podfile และโปรเจ็กต์ C++
ผลิตภัณฑ์ Firebase แต่ละรายการอาจรองรับเฉพาะแพลตฟอร์มระบบปฏิบัติการของ Apple บางรายการ (iOS, tvOS ฯลฯ) ตรวจสอบแพลตฟอร์มที่ไลบรารีแต่ละรายการรองรับในหัวข้อดูข้อมูลเพิ่มเติมเกี่ยวกับ C++ และ Firebase
อย่างชัดเจนผลิตภัณฑ์ Firebase | เฟรมเวิร์กและพ็อด |
---|---|
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 แต่ละแอปมีตัวแทนแอปของตัวเอง 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 จะค้นหาไฟล์ mobile นี้ จากนั้นจะสร้างไฟล์การกําหนดค่า Firebase desktop (google-services-desktop.json
) โดยอัตโนมัติหากคุณเพิ่ม
GoogleService-Info.plist
ไฟล์ iOS ก่อนเรียกใช้แอป คุณต้องแปลงไฟล์ Mobile นี้เป็นไฟล์การกําหนดค่า Firebase เดสก์ท็อป หากต้องการแปลงไฟล์ ให้เรียกใช้คําสั่งต่อไปนี้จากไดเรกทอรีเดียวกับไฟล์GoogleService-Info.plist
generate_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
เป็นตำแหน่งของ Firebase C++ SDK ที่แตกไฟล์แล้วเพิ่มเนื้อหาต่อไปนี้ลงในไฟล์
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++
ไลบรารีที่ใช้ได้ (เดสก์ท็อป)
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 มีไลบรารีเดสก์ท็อปที่เหลือเป็นการใช้งานสแต็บ (ใช้งานไม่ได้) เพื่ออำนวยความสะดวกในการสร้างสำหรับ Windows, macOS และ Linux คุณจึงไม่ต้องคอมไพล์โค้ดแบบมีเงื่อนไขเพื่อกำหนดเป้าหมายไปยังเดสก์ท็อป
Realtime Database เดสก์ท็อป
Realtime Database SDK สําหรับเดสก์ท็อปใช้ REST เพื่อเข้าถึงฐานข้อมูล คุณจึงต้องประกาศดัชนีที่ใช้กับ Query::OrderByChild()
ในเดสก์ท็อป ไม่เช่นนั้น โปรแกรมฟังจะใช้งานไม่ได้
ข้อมูลเพิ่มเติมสำหรับการตั้งค่าเดสก์ท็อป
ไลบรารีของ Windows
สำหรับ Windows เวอร์ชันของไลบรารีจะขึ้นอยู่กับปัจจัยต่อไปนี้
- แพลตฟอร์มการสร้าง: โหมด 32 บิต (x86) กับ 64 บิต (x64)
- สภาพแวดล้อมรันไทม์ของ Windows: หลายเธรด / MT เทียบกับ 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 13.3.1
เมื่อสร้างแอปเดสก์ท็อป C++ ใน macOS ให้ลิงก์สิ่งต่อไปนี้กับโปรเจ็กต์
pthread
ไลบรารีระบบCoreFoundation
เฟรมเวิร์กระบบ macOSFoundation
เฟรมเวิร์กระบบ macOSSecurity
เฟรมเวิร์กระบบ macOSGSS
เฟรมเวิร์กระบบ macOSKerberos
เฟรมเวิร์กระบบ macOSSystemConfiguration
เฟรมเวิร์กระบบ 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
ขั้นตอนถัดไป
เตรียมเปิดตัวแอป
- ตั้งค่าการแจ้งเตือนเกี่ยวกับงบประมาณสำหรับโปรเจ็กต์ในคอนโซล Google Cloud
- ตรวจสอบแดชบอร์ดการใช้งานและการเรียกเก็บเงินในคอนโซล Firebase เพื่อดูภาพรวมการใช้งานโปรเจ็กต์ในบริการ Firebase หลายรายการ
- ตรวจสอบรายการตรวจสอบการเปิดตัว Firebase