Bắt đầu sử dụng Firebase trong C++

1. Tổng quan

Trong lớp học lập trình này, bạn sẽ tìm hiểu cách tích hợp C++ Firebase Games SDK vào một trò chơi Android mẫu bằng cách sử dụng Google Analytics làm ví dụ. Bạn sẽ có thể thêm tính năng mình cần, tích hợp một số logic phân tích cơ bản để đo lường tiến trình của người chơi và chia sẻ trò chơi với người thử nghiệm để nhận phản hồi ban đầu.

Hướng dẫn từng bước

Nếu bạn muốn cùng các tác giả của lớp học lập trình này thực hiện, hãy xem video này:

Kiến thức bạn sẽ học được

  • Cách thêm Firebase vào trò chơi dựa trên Android CMake.
  • Cách tìm ra phần phụ thuộc C++ và Gradle mà bạn cần.
  • Cách ghi lại sự kiện Analytics.
  • Cách gỡ lỗi sự kiện Analytics.
  • Cách chia sẻ trò chơi của bạn thông qua tính năng Phân phối ứng dụng.

Bạn cần có

  • Android Studio
  • Mã mẫu
  • Một thiết bị thử nghiệm hoặc trình mô phỏng có Dịch vụ Google Play

2. Nhận mã mẫu

Thanh toán hoặc tải xuống từ GitHub:

git clone https://github.com/FirebaseExtended/cmake-way-for-firebase.git

Tải Firebase SDK xuống

MacOS/Linux:

sh download.sh

Windows (từ PowerShell):

./download.ps1

Bạn cũng có thể tải SDK xuống theo cách thủ công. Nếu làm như vậy, bạn phải trích xuất SDK C++ của Firebase vào /third_party sao cho thư mục có tên firebase_cpp_sdkCMakeLists.txt gốc từ SDK Firebase trong đó.

3. Chạy trò chơi mẫu

Trước tiên, hãy chơi trò chơi mẫu và đảm bảo mọi thứ đều hoạt động. Trò chơi này là một trò chơi chạy vô tận đơn giản với cấp độ được tạo theo lần và một nút duy nhất để nhảy.

  1. Chọn Tệp > Mới > Nhập dự án (hoặc chọn Nhập dự án từ màn hình chờ)
  2. Mở thư mục proj.android/ có trong kho lưu trữ
  1. [Không bắt buộc] Mở proj.android/gradle.properties và phạt PROP_APP_ABI. Bạn có thể xoá tất cả trừ cấu trúc mục tiêu để giảm thời gian xây dựng. PROP_APP_ABI=x86 sẽ chỉ tạo cho trình mô phỏng PROP_APP_ABI=armeabi-v7a sẽ tạo cho hầu hết các điện thoại
  2. Nhấp vào nút Debug (Gỡ lỗi) fa7d6449514b13c3.png để tạo và chạy trò chơi. Việc này sẽ mất chút thời gian để xây dựng công cụ phát triển trò chơi Cocos2dx.

4. Thiết lập bảng điều khiển của Firebase

  1. Tạo một dự án mới trong Bảng điều khiển của Firebase. 5d2552e8450338d3.png.
  2. Đặt một tên như "Popsicle Runner"
  3. Bật Analytics 255468f27832bb18.pngs
  4. Thêm hoặc tạo một tài khoản Analytics c7fa1b1004135be3.png
  5. Thêm một ứng dụng Android mới vào dự án 984b9f20cd590597.pngS của bạn
  6. Thêm com.firebase.popsiclerunner làm tên gói.

fda079aab5b185d4.png

  1. Tải tệp google-services.json xuống rồi sao chép tệp đó vào proj.android/app 95aae8dd12033335.pngS
  1. Bỏ qua các hướng dẫn được cung cấp để thêm Firebase SDK và nhấp vào tiếp theo
  2. Bạn có thể nhấp vào "Bỏ qua bước này" khi được yêu cầu xác minh việc cài đặt

5. Thêm Firebase vào trò chơi của bạn

Thêm Firebase SDK vào CMakeLists.txt

Mở cấp độ gốc CMakeLists.txt. Tham số này phải có mã sau ở gần đầu

CMakeLists.txt

cmake_minimum_required(VERSION 3.6)

set(APP_NAME popsiclerunner)

project(${APP_NAME})

và thêm các dòng sau vào cuối tệp CMakeLists.txt đó

CMakeLists.txt

add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/third_party/firebase_cpp_sdk)
target_link_libraries(${APP_NAME} firebase_analytics firebase_app)

add_subdirectory bao gồm SDK C++ của Firebase và cung cấp cho trò chơi này

target_link_libraries Bắt đầu trò chơi với thư viện C++ của Firebase được xây dựng cho Android.

Thêm trình bổ trợ Dịch vụ của Google

Để kết nối SDK Firebase, bạn phải thêm trình bổ trợ Dịch vụ của Google vào tập lệnh bản dựng Gradle của mình. Để làm việc này, hãy mở tệp cấp dự án build.gradle (nằm trong thư mục proj.android). Và thêm classpath 'com.google.gms:google-services:4.3.3' làm phần phụ thuộc tập lệnh bản dựng.

build.gradle

buildscript {
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:4.0.1'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        classpath 'com.google.gms:google-services:4.3.3'  // Google Services plugin
    }
}

Sau đó, thêm trình bổ trợ này vào tệp build.gradle cấp mô-đun (nằm trong thư mục proj.android/app). Thêm apply plugin: 'com.google.gms.google-services' bên dưới apply plugin: 'com.android.application':

build.gradle

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'  // Google Services plugin

Định vị SDK C++ trong Gradle

Để cho Gradle biết vị trí tìm SDK C++ của Firebase, hãy thêm các dòng sau vào cuối tệp settings.gradle.

settings.gradle

gradle.ext.firebase_cpp_sdk_dir = "$settingsDir/../third_party/firebase_cpp_sdk/"
includeBuild "$gradle.ext.firebase_cpp_sdk_dir"

Thêm phần phụ thuộc Android

Để kết nối các phần phụ thuộc Android cho Firebase, hãy mở tệp gradle cấp mô-đun cho popsicle_runner (trong proj.android/app/build.gradle) rồi thêm đoạn mã sau ngay trước phần dependences { thông thường ở cuối:

build.gradle

apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle"
firebaseCpp.dependencies {
    analytics
}

AndroidX và Jetifier

Thêm tính năng hỗ trợ AndroidX và Jetifier bằng cách mở gradle.properties rồi thêm đoạn mã này vào cuối:

gradle.properties

android.useAndroidX = true
android.enableJetifier = true

Khởi chạy Firebase trong trò chơi của bạn

Khởi chạy Firebase trong trò chơi bằng cách mở Classes/AppDelegate.cpp. Thêm các lệnh #include sau đây vào đầu:

AppDelegate.cpp

#include <firebase/app.h>
#include <firebase/analytics.h>

Sau đó, hãy thêm App::Create và khởi chạy các tính năng Firebase bạn cần. Để thực hiện việc này, hãy tìm AppDelegate::applicationDidFinishLaunching và thêm mã này trước auto scene = MainMenuScene::createScene():

AppDelegate.cpp

{
    using namespace firebase;
    auto app = App::Create(JniHelper::getEnv(), JniHelper::getActivity());
    analytics::Initialize(*app);
}

Nếu gỡ lỗi trò chơi và làm mới trang tổng quan Firebase, bạn sẽ thấy một người dùng mới xuất hiện sau khoảng một phút.

6. Thêm Analytics

Ngay cả khi mới phát triển, phân tích vẫn là công cụ hữu ích để đánh giá cách người thử nghiệm beta tương tác với trò chơi. Một số số liệu phân tích được thu thập tự động (chẳng hạn như báo cáo tỷ lệ giữ chân người dùng). Tuy nhiên, bạn nên thêm các sự kiện tuỳ chỉnh được điều chỉnh cho trò chơi cụ thể của mình.

Bạn nên bắt đầu bằng cách ghi lại một sự kiện phân tích khi người chơi bắt đầu một cấp độ. Chúng ta có thể sử dụng số sự kiện bắt đầu cấp độ để xem tần suất người chơi có thể chơi lại trò chơi trong một phiên.

4b5df08c0f6b6938.pngS

Chúng tôi cũng sẽ ghi lại một sự kiện khi người chơi chết theo quãng đường họ đã đi được. Điều này sẽ cho chúng ta thấy những thay đổi mà chúng ta thực hiện thay đổi thời lượng của một phiên duy nhất như thế nào và sẽ giúp chúng ta xác định xem người chơi muốn một trò chơi ngắn/khó hơn hay một trò chơi dài hơn/dễ hơn.

Thêm tiêu đề Analytics

Mở Classes/PopsicleScene.cpp rồi thêm các tiêu đề Firebase vào trên cùng để chúng ta có thể thực hiện lệnh gọi sử dụng số liệu phân tích.

PopsicleScene.cpp

#include <firebase/analytics.h>
#include <firebase/analytics/event_names.h>

Ghi lại một sự kiện Bắt đầu cấp độ

Để ghi nhật ký một sự kiện khi Cảnh này do Cocos2dx Director triển khai, hãy tìm hàm gốc PopsicleScene::onEnter(). Nhập mã sau để ghi lại sự kiện Bắt đầu cấp độ tại đây:

PopsicleScene.cpp

using namespace firebase;
analytics::LogEvent(analytics::kEventLevelStart);

Ghi lại sự kiện Kết thúc cấp độ

Để xem thành tích của một người chơi, hãy ghi lại sự kiện Kết thúc cấp độ để biết quãng đường mà người chơi đã đi được đến khi chết. Để thực hiện việc này, hãy tìm PopsicleScene::gameOver() và thêm đoạn mã này vào cuối khối if(!_gameOver) { trước khi đặt _gameOver = true;:

PopsicleScene.cpp

{
    using namespace firebase;
    analytics::LogEvent(analytics::kEventLevelEnd, "distance", _lastDistance);
}

kEventLevelEnd là sự kiện kết thúc cấp độ. Trong khi "distance" là một "thông số sự kiện". Ở đây, chúng tôi thêm quãng đường được ghi lại gần đây nhất. Đây là quãng đường ước chừng mà người chơi đã đi được trước khi chết.

7. Kiểm thử sự kiện

Bạn có thể nhấp vào biểu tượng Gỡ lỗi fa7d6449514b13c3.png ngay bây giờ, nhưng sẽ mất thời gian để hệ thống báo cáo mọi sự kiện trên trang tổng quan Analytics. Có hai lý do cho việc này: 1) sự kiện được phân theo lô và tải lên khoảng mỗi giờ một lần để duy trì pin và 2) báo cáo được tạo mỗi 24 giờ.

Bật chế độ gỡ lỗi

Bạn vẫn có thể gỡ lỗi các sự kiện Analytics bằng cách đặt thiết bị của mình ở chế độ gỡ lỗi.

Trước tiên, hãy đảm bảo bạn đã cài đặt và thiết lập Cầu gỡ lỗi Android (ADB). Khi bạn nhập adb devices, thiết bị mà bạn sẽ thử nghiệm sẽ xuất hiện:

$ adb devices
List of devices attached
emulator-5554   device

Sau đó, hãy chạy lệnh adb shell sau:

adb shell setprop debug.firebase.analytics.app com.firebase.popsiclerunner

Thao tác này sẽ yêu cầu Firebase Analytics ghi lại sự kiện ngay lập tức và sẽ tự động loại trừ các sự kiện đó khỏi các báo cáo thông thường để tránh ảnh hưởng đến các sự kiện đang diễn ra khi thử nghiệm. Nếu sau này bạn muốn huỷ thao tác này, bạn chỉ cần viết:

adb shell setprop debug.firebase.analytics.app .none.

Xem sự kiện

Mở "DebugView" trong Bảng điều khiển của Firebase 84472ac3a7ad9aff.png.

Nhấp vào biểu tượng Gỡ lỗi fa7d6449514b13c3.png và chơi trò chơi. Bạn sẽ thấy các sự kiện mới xuất hiện gần như ngay sau khi chúng diễn ra trong trò chơi. 5e81dfa682497414.pngs

Nếu mở rộng sự kiện level_end, bạn cũng sẽ thấy "khoảng cách" tuỳ chỉnh mà bạn đã ghi nhật ký. 4451be4a6a97399c.png.

8. Tìm người kiểm thử

Tiếp theo, bạn nên để ý đến trò chơi của mình dù trò chơi đó thuộc nội bộ trong studio, giữa bạn bè thân thiết hay cộng đồng của bạn. Phân phối ứng dụng Firebase cung cấp cho bạn một cách tuyệt vời để mời người chơi chơi trò chơi của bạn.

Tạo tệp nhị phân độc lập

Trước tiên, hãy tạo một APK độc lập để chia sẻ trong phần Build > (Bản dựng >) Tạo gói / APK > Tạo(các) tệp APK 14c6bd5549cdb57a.png.

Android Studio sẽ bật lên một hộp thoại để bạn xác định vị trí của tệp đã tạo. Nếu bỏ lỡ sự kiện, bạn có thể nhấp vào "Nhật ký sự kiện" để lấy lại đường liên kết. ac730e3428689c4c.png

Tải lên Phân phối ứng dụng Firebase

  1. Mở tính năng Phân phối ứng dụng rồi nhấp vào "Bắt đầu" dcdafea94e4c1c15.png
  2. Kéo và thả tệp .apk của bạn vào hộp có nội dung "Kéo bất kỳ tệp .apk nào vào đây để tạo bản phát hành mới". 4b6f94a05391c63f.png.
  3. Nhập địa chỉ email của bạn làm người thử nghiệm đầu tiên. ce047d710befa44a.png
  4. Nhấp vào Tiếp theo.
  5. Thêm phần mô tả rồi nhấp vào Phân phối

Mời người thử nghiệm

Thay vì phải nhập thủ công từng địa chỉ email, bạn có thể tạo đường liên kết của lời mời. Khi thu hút một người dùng bằng đường liên kết mời này, bạn cũng có thể thêm họ vào nhóm người kiểm thử. Thao tác này cho phép bạn tách riêng người kiểm thử nội bộ khỏi người kiểm thử bên ngoài.

  1. Nhấp vào "Nhân viên kiểm thử và Groups" 7e380773faff4eb7.pngs
  2. Tạo nhóm mới 6b046c010b14adaf.png. và đặt tên cho nhóm đó là "Người kiểm thử Android".
  3. Nhấp vào "Mời liên kết" a7fc2c8b01b6883e.png
  4. Nhấp vào "Đường liên kết mời mới"
  5. Đặt nhóm đó ở đây trong trình đơn thả xuống. d1b289e825d93d40.png
  6. Nhấp vào "Tạo mối liên kết"
  7. Nhấp vào "Sao chép đường liên kết" và chia sẻ theo cách bạn muốn

9. Xin chúc mừng

Bạn đã thêm thành công công cụ phân tích vào trò chơi dựa trên C++, mời một số bạn bè chơi và biết cách tìm và liên kết các thư viện Firebase trong hệ thống xây dựng dựa trên CMake và Gradle phổ biến trong quá trình phát triển Android.

Nội dung đã đề cập

  • Cách thêm Firebase vào trò chơi dựa trên Android CMake.
  • Cách tìm ra phần phụ thuộc C++ và Gradle mà bạn cần.
  • Cách ghi lại sự kiện Analytics.
  • Cách gỡ lỗi sự kiện Analytics.
  • Cách chia sẻ trò chơi của bạn thông qua tính năng Phân phối ứng dụng.

Các bước tiếp theo

  • Thử đăng nhập ẩn danh người dùng và lưu điểm cao của họ trong Cơ sở dữ liệu theo thời gian thực.
  • Ghi lại các sự kiện Analytics trong trò chơi của bạn.
  • Hãy thử thêm số liệu phân tích vào trò chơi trên iOS.

Tìm hiểu thêm