1. Giới thiệu
Quảng cáo đóng vai trò quan trọng trong trải nghiệm người dùng tổng thể của ứng dụng. Những cách triển khai quảng cáo hiệu quả có thể giúp cải thiện trải nghiệm tổng thể của ứng dụng và thậm chí là cải thiện tỷ lệ giữ chân và mức độ tương tác của người dùng. Ví dụ: Quảng cáo có tặng thưởng cho phép bạn tặng tiền hoặc vật phẩm trong ứng dụng cho người dùng xem quảng cáo dạng video. Nhờ đó, người dùng có thể đạt được những tầm cao mới nếu không sẽ gặp khó khăn và có thể rời bỏ ứng dụng.
Tuy nhiên, việc tạo ra trải nghiệm quảng cáo tuyệt vời không hề dễ dàng. Bạn có thể có những câu hỏi như: Bạn nên hiển thị những quảng cáo này với tần suất như thế nào? Bạn nên đăng thông báo ở đâu và vào thời điểm nào? Phần thưởng đó nên là gì? Rất tiếc, câu trả lời sẽ khác nhau tuỳ theo ứng dụng và vị trí đặt quảng cáo. Không có câu trả lời nào phù hợp với mọi trường hợp.
Với Google Analytics cho Firebase, AdMob và một số công cụ mạnh mẽ và dễ sử dụng khác mà Firebase cung cấp, việc tinh chỉnh ứng dụng của bạn theo cách dựa trên dữ liệu trở nên dễ dàng và hợp lý hơn nhiều. Hôm nay, chúng tôi sẽ hướng dẫn bạn cách bắt đầu!
Sản phẩm bạn sẽ tạo ra
Lớp học lập trình này là lớp học đầu tiên trong số 3 lớp học lập trình sẽ hướng dẫn bạn cách tạo ứng dụng có tên Awesome Drawing Inspector, một trò chơi cho phép người chơi đoán tên của bản vẽ. Ví dụ này sẽ minh hoạ cách kết hợp Quảng cáo có tặng thưởng và dịch vụ Firebase vào trò chơi của mình.
Trong lớp học lập trình này, bạn sẽ tích hợp Google Analytics cho Firebase để ghi lại một số sự kiện quan trọng trong ứng dụng. Ngoài ra, bạn sẽ tìm hiểu cách đọc số liệu phân tích ứng dụng hiển thị trong bảng điều khiển của Firebase.
Kiến thức bạn sẽ học được
- Cách thiết lập Google Analytics cho Firebase trong ứng dụng
- Cách ghi lại sự kiện trong ứng dụng
- Cách đọc số liệu phân tích ứng dụng hiển thị trong bảng điều khiển của Firebase
Bạn cần có
- Unity 2018.4.4f1 trở lên
- Xcode 10 trở lên (để tạo mục tiêu cho iOS)
- Tài khoản Google
- Thiết bị thử nghiệm chạy Android 5.0 trở lên có cáp USB để kết nối thiết bị hoặc Trình mô phỏng Android chạy AVD(Thiết bị Android ảo) có hình ảnh hệ thống hỗ trợ API của Cửa hàng Play/Google
- Thiết bị iOS hoặc trình mô phỏng chạy iOS 8.0 trở lên
Bạn đánh giá mức độ trải nghiệm của mình với AdMob như thế nào?
Bạn đánh giá thế nào về mức độ trải nghiệm của mình với Firebase?
2. Thiết lập môi trường phát triển
Tải mã nguồn xuống
Nhấp vào nút sau đây để tải tất cả mã cho lớp học lập trình này:
Giải nén tệp zip đã tải xuống. Thao tác này sẽ giải nén thư mục gốc có tên admob-firebase-codelabs-unity-master
.
...hoặc sao chép kho lưu trữ GitHub từ dòng lệnh.
$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-unity
Kho lưu trữ chứa 4 thư mục như sau:
- 101-base — Đoạn mã khởi đầu mà bạn sẽ tạo trong lớp học lập trình này.
- 101-complete_and_102-base — Đoạn mã đã hoàn tất cho lớp học lập trình này & điều kiện khởi đầu cho lớp học lập trình 102.
- 102-complete — Đã hoàn thành mã cho lớp học lập trình 102.
Chuẩn bị các tệp bắt buộc
Bài kiểm tra về bản vẽ tuyệt vời sử dụng một số mã nguồn mở, bắt buộc phải có để biên dịch và chạy dự án.
Mở cửa sổ dòng lệnh rồi chuyển đến thư mục gốc của kho lưu trữ. Sau đó, chạy ./gradlew :prepareThirdPartyFiles
(gradlew.bat :prepareThirdPartyFiles
trên Windows) từ cửa sổ dòng lệnh để sao chép các tệp cần thiết vào dự án.
Nhập ứng dụng khởi đầu
Chạy Unity, chọn "Open" (Mở) trong màn hình chào mừng. Sau đó, chọn thư mục 101-base trong đoạn mã mà bạn đã tải xuống.
Bây giờ, bạn cần mở dự án trong Unity.
3. Thiết lập đơn vị quảng cáo video có tặng thưởng (Không bắt buộc)
Ứng dụng khởi đầu này đã bao gồm một Đơn vị quảng cáo dạng video có tặng thưởng chuyên biệt để thuận tiện cho bạn. Bạn hoàn toàn có thể bỏ qua bước này nếu không muốn tạo một bước mới trong tài khoản AdMob của mình.
Thiết lập cho Android
Để tạo ứng dụng AdMob mới trong tài khoản của bạn, vui lòng làm theo hướng dẫn như sau:
- Chuyển đến Bảng điều khiển AdMob.
- Trên trình đơn Apps (Ứng dụng), hãy nhấp vào "Add App" (Thêm ứng dụng).
- Khi được hỏi "Bạn đã xuất bản ứng dụng của mình trên Google Play hoặc App Store chưa", câu trả lời "KHÔNG"
- Đặt tên cho ứng dụng là "Awesome Drawing Images" (Câu đố về bản vẽ tuyệt vời) chọn "Android" làm Nền tảng, sau đó nhấp vào "Thêm".
Sau khi bạn tạo một ứng dụng AdMob trong tài khoản của mình, hãy làm theo các bước được mô tả trong phần bên dưới để tạo một Đơn vị quảng cáo dạng video có tặng thưởng mới.
- Nhấp vào trình đơn Ứng dụng trong giao diện người dùng AdMob, sau đó chọn "Bài kiểm tra bản vẽ tuyệt vời" từ danh sách ứng dụng.
- Nhấp vào trình đơn Đơn vị quảng cáo, sau đó nhấp vào THÊM ĐƠN VỊ QUẢNG CÁO để tạo Đơn vị quảng cáo dạng video có tặng thưởng mới.
- Chọn Có tặng thưởng cho định dạng Quảng cáo.
- Cung cấp tên đơn vị quảng cáo bạn muốn. Sau đó, đặt số tiền thưởng thành 1 và chọn vật phẩm thưởng thành "hint" (đây là phần thưởng mà ứng dụng hiện đang tặng cho người dùng). Và nhấp vào TẠO ĐƠN VỊ QUẢNG CÁO để tạo một đơn vị quảng cáo Video có tặng thưởng mới.
- Khi tạo xong, bạn sẽ thấy hướng dẫn như sau.
- Quay lại dự án Unity và cập nhật hằng số mã ứng dụng AdMob cũng như hằng số mã đơn vị quảng cáo thành những hằng số mà bạn đã tạo ở bước trước.
Ads/AdManager.cs
namespace AwesomeDrawingQuiz.Ads {
public class AdManager {
public const string APP_ID_ANDROID = "YOUR_ADMOB_APP_ID";
...
#elif UNITY_ANDROID
private const string APP_ID = APP_ID_ANDROID;
public const string AD_UNIT_ID = "<YOUR_AD_UNIT_ID>";
...
}
}
Thiết lập cho iOS
Để tạo ứng dụng AdMob mới trong tài khoản của bạn, vui lòng làm theo hướng dẫn như sau:
- Chuyển đến Bảng điều khiển AdMob.
- Trên trình đơn Apps (Ứng dụng), hãy nhấp vào "Add App" (Thêm ứng dụng).
- Khi được hỏi "Bạn đã xuất bản ứng dụng của mình trên Google Play hoặc App Store chưa", câu trả lời "KHÔNG"
- Đặt tên cho ứng dụng là "Awesome Drawing Images" (Câu đố về bản vẽ tuyệt vời) chọn "iOS" làm Nền tảng, sau đó nhấp vào "Thêm".
Sau khi bạn tạo một ứng dụng AdMob trong tài khoản của mình, hãy làm theo các bước được mô tả trong phần bên dưới để tạo một Đơn vị quảng cáo dạng video có tặng thưởng mới.
- Nhấp vào trình đơn Ứng dụng trong giao diện người dùng AdMob, sau đó chọn "Bài kiểm tra bản vẽ tuyệt vời" từ danh sách ứng dụng.
- Nhấp vào trình đơn Đơn vị quảng cáo, sau đó nhấp vào THÊM ĐƠN VỊ QUẢNG CÁO để tạo Đơn vị quảng cáo dạng video có tặng thưởng mới.
- Chọn Có tặng thưởng cho định dạng Quảng cáo.
- Cung cấp tên đơn vị quảng cáo bạn muốn. Sau đó, đặt số tiền thưởng thành 1 và chọn vật phẩm thưởng thành "hint" (đây là phần thưởng mà ứng dụng hiện đang tặng cho người dùng). Và nhấp vào TẠO ĐƠN VỊ QUẢNG CÁO để tạo một đơn vị quảng cáo Video có tặng thưởng mới.
- Khi tạo xong, bạn sẽ thấy hướng dẫn như sau.
- Quay lại dự án Unity và cập nhật hằng số mã ứng dụng AdMob cũng như hằng số mã đơn vị quảng cáo thành những hằng số mà bạn đã tạo ở bước trước.
Ads/AdManager.cs
namespace AwesomeDrawingQuiz.Ads {
public class AdManager {
public const string APP_ID_IOS = "YOUR_ADMOB_APP_ID";
...
#elif UNITY_IOS
private const string APP_ID = APP_ID_IOS;
public const string AD_UNIT_ID = "<YOUR_AD_UNIT_ID>";
...
}
}
4. Thêm trình bổ trợ Unity của quảng cáo trên thiết bị di động của Google
Nhập trình bổ trợ
Để phân phát Quảng cáo AdMob trên ứng dụng Unity, bạn cần thêm Trình bổ trợ Unity của quảng cáo trên thiết bị di động của Google vào dự án.
- Tải gói Trình bổ trợ Unity của Google Mobile Ads 3.18.1 xuống. (Lưu ý rằng lớp học lập trình này có thể không tương thích với phiên bản còn lại của trình bổ trợ)
- Trong dự án Unity Awesome Drawing Images (Bài kiểm tra bản vẽ tuyệt vời). Trong dự án, hãy chuyển đến Tài sản > Nhập gói > Custom Package (Gói tuỳ chỉnh).
- Nhập GoogleMobileAds.unitypackage vào dự án mà bạn đã tải xuống.
Định cấu hình mã ứng dụng AdMob
Trong trình chỉnh sửa Unity, chọn Assets > Quảng cáo trên điện thoại di động của Google > Cài đặt trong trình đơn.
Bật AdMob bằng cách đánh dấu vào hộp Đã bật trong mục Google AdMob. Sau đó, hãy nhập mã ứng dụng AdMob như sau:
- Android:
ca-app-pub-3940256099942544~3048611032
- iOS:
ca-app-pub-3940256099942544~2753522596
5. Thiết lập dự án Firebase
Tạo dự án mới từ Bảng điều khiển của Firebase
- Truy cập vào bảng điều khiển của Firebase.
- Chọn Add Project (Thêm dự án) rồi đặt tên cho dự án là "Awesome Drawing đẹp" (Bài kiểm tra bản vẽ tuyệt vời).
Thêm ứng dụng Unity
- Trên màn hình tổng quan của dự án mới, hãy nhấp vào Thêm Firebase vào ứng dụng Unity.
- Chọn hộp kiểm Đăng ký là ứng dụng iOS.
- Nhập mã nhận dạng gói iOS là: com.codelab.awesomedrawingquiz.unity
- Đặt biệt hiệu cho ứng dụng là: Awesome Drawing Images (Unity trên iOS)
- Chọn hộp kiểm Đăng ký dưới dạng ứng dụng Android.
- Nhập tên gói Android dưới dạng: com.codelab.awesomedrawingquiz.unity
- Đặt biệt hiệu cho ứng dụng là: Awesome Drawing Images (Unity trên Android)
- Chọn Đăng ký ứng dụng để đăng ký cả ứng dụng Android và iOS.
Thêm các tệp cấu hình Firebase vào dự án Unity
Tiếp theo, bạn sẽ thấy một màn hình hiển thị để bạn có thể tải tệp cấu hình chứa tất cả siêu dữ liệu Firebase cần thiết cho ứng dụng của mình xuống. Tải tệp google-service.json và GoogleService-Info.plist xuống, sau đó di chuyển cả hai tệp này vào thư mục Assets trong dự án Unity.
Thêm Firebase Analytics SDK
- Tải Firebase Unity SDK 5.5.0 xuống và giải nén ở nơi thuận tiện.
- Mở dự án Unity Awesome Drawing Images (Bài kiểm tra bản vẽ tuyệt vời), chuyển đến Assets (Thành phần) > Nhập gói > Custom Package (Gói tuỳ chỉnh).
- Trong SDK đã giải nén, hãy nhập SDK Cấu hình từ xa (
dotnet4/FirebaseAnalytics.unitypackage
). - Trong cửa sổ nhập gói Unity (Nhập gói Unity), hãy nhấp vào Import (Nhập).
6. Liên kết AdMob với dự án Firebase
Hãy hoàn tất các bước bên dưới để liên kết các ứng dụng của bạn với Firebase.
- Đăng nhập vào tài khoản AdMob tại https://apps.admob.com.
- Nhấp vào Ứng dụng trong thanh bên.
- Chọn "Câu đố về bản vẽ tuyệt vời". Nếu không thấy tên ứng dụng trong danh sách các ứng dụng gần đây, bạn có thể nhấp vào Xem tất cả các ứng dụng để tìm kiếm danh sách tất cả các ứng dụng mà bạn đã thêm vào AdMob.
- Nhấp vào Cài đặt ứng dụng trong thanh bên.
- Nhấp vào Liên kết với Firebase.
- Chọn lựa chọn "Liên kết đến dự án Firebase hiện có và tạo ứng dụng Firebase mới". Sau đó, hãy chọn dự án "Awesome Drawing Question" trên trình đơn thả xuống.
- Sau khi nhấp vào nút "TIẾP TỤC", bạn sẽ thấy thông báo "Đã liên kết thành công". Nhấp vào nút "XONG" để hoàn tất.
Sau khi bạn liên kết ứng dụng AdMob của mình với Dự án Firebase, ứng dụng này sẽ có thêm một số tính năng bổ sung cả trên bảng điều khiển của AdMob và Firebase như sau:
Thẻ doanh thu (AdMob)
Trong thẻ Doanh thu, bạn có thể nắm bắt thông tin toàn diện về tất cả các nguồn doanh thu có thể phát sinh ở cùng một nơi. Sau đây là các nguồn doanh thu được hỗ trợ:
- AdMob (Ước tính)
- Mạng quảng cáo dàn xếp (Đã quan sát được)
- Mua hàng trong ứng dụng
- Giao dịch mua hàng thương mại điện tử
Thẻ chỉ số người dùng (AdMob)
Từ thẻ chỉ số người dùng, bạn có thể thấy các thay đổi đối với trải nghiệm quảng cáo có thể tác động như thế nào đến hành vi của người dùng.
Báo cáo quảng cáo có tặng thưởng (AdMob)
Báo cáo quảng cáo có tặng thưởng cung cấp nhiều chỉ số giúp nhà xuất bản hiểu cách người dùng tương tác với quảng cáo có tặng thưởng của họ.
Thẻ Tổng doanh thu (Firebase)
Sau khi bạn liên kết ứng dụng AdMob với Firebase, thẻ Tổng doanh thu trên trang tổng quan Firebase sẽ hiển thị doanh thu từ AdMob cùng với lượt mua hàng trong ứng dụng và giao dịch mua hàng trên nền tảng thương mại điện tử.
Báo cáo sự kiện quảng cáo (Firebase)
Các sự kiện dành riêng cho quảng cáo (sự kiện lượt nhấp, lượt hiển thị và sự kiện tặng thưởng) được tự động thu thập và có sẵn để sử dụng trong Google Analytics cho Firebase.
7. Chạy dự án
Sau khi biên dịch và chạy dự án, bạn sẽ thấy màn hình sau đây khi ứng dụng khởi động.
Sau khi nhấp vào "BẮT ĐẦU TRÒ CHƠI", bạn sẽ thấy một hình vẽ trên màn hình. Nhiệm vụ của bạn là đoán tên bản vẽ bằng cách sử dụng gợi ý hiển thị ở trên cùng, từ đó bạn có thể suy ra chữ cái đầu tiên và độ dài tên của bản vẽ.
Nếu không biết tên của bản vẽ, bạn có thể bỏ qua cấp độ bằng cách nhấp vào nút "BỎ QUA".
Bạn có thể muốn có thêm gợi ý giúp bạn đoán câu trả lời. Bạn có thể nhận thêm manh mối bằng cách nhấp vào nút "HINT" rồi xem Quảng cáo dạng video có tặng thưởng. Sau khi xem xong quảng cáo, bạn sẽ nhận được thêm một chữ cái để nhận phần thưởng.
8. Thêm sự kiện ứng dụng
Để hiểu sâu sắc về hành trình của người dùng trong Bài đố vui về bản vẽ tuyệt vời,bạn sẽ xác định một số sự kiện tuỳ chỉnh theo dõi hành vi của người dùng trong trò chơi như sau:
Tên sự kiện | Được kích hoạt... | Tham số |
game_start | khi người dùng bắt đầu một trò chơi mới | không có |
level_start | khi người dùng bắt đầu một cấp độ mới (bài kiểm tra về bản vẽ mới) trong một giai đoạn. (có 6 cấp trong một giai đoạn) | level_name |
level_wrong_answer | khi người dùng gửi một câu trả lời sai | level_name |
ad_reward_prompt | khi người dùng nhấn vào nút gợi ý và được nhắc xem một Quảng cáo dạng video có tặng thưởng | ad_unit_id |
ad_reward_impression | khi người dùng bắt đầu xem một Quảng cáo dạng video có tặng thưởng | ad_unit_id |
level_success | khi người dùng gửi một câu trả lời đúng (xoá một cấp độ) | level_name, number_of_attempts, ignore_time_giây, hint_used |
level_fail | khi người dùng bỏ qua một cấp độ | level_name, number_of_attempts, ignore_time_giây, hint_used |
game_complete | khi trò chơi kết thúc | number_of_correct_answers |
Dưới đây là nội dung mô tả về từng thông số được liên kết với mỗi sự kiện:
Tên sự kiện | Tên thông số | Nội dung mô tả |
level_start | level_name | Tên của bản vẽ hiển thị trong cấp (ví dụ: "chuối") |
level_wrong_answer | level_name | Tên của bản vẽ hiển thị trong cấp (ví dụ: "chuối") |
ad_reward_prompt | ad_unit_id | Mã đơn vị quảng cáo dùng để hiển thị Quảng cáo dạng video có tặng thưởng |
ad_reward_impression | ad_unit_id | Mã đơn vị quảng cáo dùng để hiển thị Quảng cáo dạng video có tặng thưởng |
level_success | level_name | Tên của bản vẽ hiển thị trong cấp (ví dụ: "chuối") |
level_success | number_of_attempts | Số lần thử xoá một cấp |
level_success | elapsed_time_sec | Thời gian đã trôi qua để xóa một cấp độ (tính bằng giây) |
level_success | hint_used | Người dùng có sử dụng gợi ý (đã xem Quảng cáo video có tặng thưởng) hay không để xóa một cấp độ (1: đã sử dụng gợi ý / 0: xóa một cấp mà không có gợi ý) |
level_fail | level_name | Tên của bản vẽ hiển thị trong cấp (ví dụ: "chuối") |
level_fail | number_of_attempts | Số lần thử xoá một cấp |
level_fail | elapsed_time_sec | Thời gian đã trôi qua để xóa một cấp độ (tính bằng giây) |
level_fail | hint_used | Người dùng có sử dụng gợi ý (đã xem Quảng cáo video có tặng thưởng) hay không để xóa một cấp độ (1: đã sử dụng gợi ý / 0: xóa một cấp mà không có gợi ý) |
game_complete | number_of_correct_answers | Số cấp độ đã xóa trong trò chơi |
Tạo một lớp trợ giúp để ghi nhật ký sự kiện tuỳ chỉnh
Để dễ dàng ghi lại sự kiện Analytics, bạn sẽ tạo một lớp trợ giúp để quản lý sự kiện tuỳ chỉnh.
Trước tiên, hãy tạo một thư mục mới trong thư mục Assets/Scripts
rồi đặt tên là Analytics
. Sau đó, tạo một Tập lệnh C# mới rồi đặt tên cho tập lệnh đó là QuizAnalytics.cs
trong thư mục Analytics
.
Thêm mã dưới đây vào tệp QuizAnalytics.cs
.
Analytics/QuizAnalytics.cs
using Firebase.Analytics;
namespace AwesomeDrawingQuiz.Analytics {
public class QuizAnalytics {
private const string EVENT_AD_REWARD_PROMPT = "ad_reward_prompt";
private const string EVENT_AD_REWARD_IMPRESSION = "ad_reward_impression";
private const string EVENT_LEVEL_FAIL = "level_fail";
private const string EVENT_LEVEL_SUCCESS = "level_success";
private const string EVENT_LEVEL_WRONG_ANSWER = "level_wrong_answer";
private const string EVENT_GAME_START = "game_start";
private const string EVENT_GAME_COMPLETE = "game_complete";
private const string PARAM_AD_UNIT_ID = "ad_unit_id";
private const string PARAM_ELAPSED_TIME_SEC = "elapsed_time_sec";
private const string PARAM_HINT_USED = "hint_used";
private const string PARAM_NUMBER_OF_ATTEMPTS = "number_of_attempts";
private const string PARAM_NUMBER_OF_CORRECT_ANSWERS = "number_of_correct_answers";
public const string SCREEN_MAIN = "main";
public const string SCREEN_GAME = "game";
public static void LogGameStart() {
FirebaseAnalytics.LogEvent(EVENT_GAME_START);
}
public static void LogLevelStart(string levelName) {
FirebaseAnalytics.LogEvent(FirebaseAnalytics.EventLevelStart,
FirebaseAnalytics.ParameterLevelName, levelName);
}
public static void LogLevelWrongAnswer(string levelName) {
FirebaseAnalytics.LogEvent(EVENT_LEVEL_WRONG_ANSWER,
FirebaseAnalytics.ParameterLevelName, levelName);
}
public static void LogAdRewardPrompt(string adUnitId) {
FirebaseAnalytics.LogEvent(EVENT_AD_REWARD_PROMPT, PARAM_AD_UNIT_ID, adUnitId);
}
public static void LogAdRewardImpression(string adUnitId) {
FirebaseAnalytics.LogEvent(EVENT_AD_REWARD_IMPRESSION, PARAM_AD_UNIT_ID, adUnitId);
}
public static void LogLevelSuccess(
string levelName, int numberOfAttemps, int elapsedTimeInSec, bool hintUsed
) {
FirebaseAnalytics.LogEvent(EVENT_LEVEL_SUCCESS, new Parameter[] {
new Parameter(FirebaseAnalytics.ParameterLevelName, levelName),
new Parameter(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttemps),
new Parameter(PARAM_ELAPSED_TIME_SEC, elapsedTimeInSec),
new Parameter(PARAM_HINT_USED, hintUsed ? 1 : 0)
});
}
public static void LogLevelFail(
string levelName, int numberOfAttempts, int elapsedTimeInSec, bool hintUsed
) {
FirebaseAnalytics.LogEvent(EVENT_LEVEL_FAIL, new Parameter[] {
new Parameter(FirebaseAnalytics.ParameterLevelName, levelName),
new Parameter(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttempts),
new Parameter(PARAM_ELAPSED_TIME_SEC, elapsedTimeInSec),
new Parameter(PARAM_HINT_USED, hintUsed ? 1 : 0)
});
}
public static void LogGameComplete(int numberOfCorrectAnswers) {
FirebaseAnalytics.LogEvent(EVENT_GAME_COMPLETE,
PARAM_NUMBER_OF_CORRECT_ANSWERS, numberOfCorrectAnswers);
}
public static void SetScreenName(string screenName) {
FirebaseAnalytics.SetCurrentScreen(screenName, null);
}
}
}
Ghi lại các sự kiện phân tích trong trò chơi
Mở tệp Game.cs
trong thư mục Assets/Scripts/Scenes
. Để sử dụng lớp QuizAnalytics
nằm trong không gian tên AwesomeDrawingQuiz.Analytics
, hãy thêm lệnh sử dụng như sau.
Scenes/Game.cs
using AwesomeDrawingQuiz.Ads;
// TODO: Import AwesomeDrawingQuiz.Analytics (101)
using AwesomeDrawingQuiz.Analytics;
...
namespace AwesomeDrawingQuiz.Scene {
...
}
Tiếp theo, trong hàm Start()
, hãy gọi QuizAnalytics.SetScreenName()
để đổi tên của màn hình hiện tại. Ngoài ra, hãy gọi QuizAnalytics.LogGameStart()
để cho biết một trò chơi đã bắt đầu.
Scenes/Game.cs
void Start () {
// TODO: Log screen name (101)
QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_GAME);
...
SetHintButtonEnabled(false);
// TODO: Log game_start event (101)
QuizAnalytics.LogGameStart();
...
}
Tiếp theo, trong các hàm callback, hãy thêm các lệnh gọi để ghi lại các sự kiện tuỳ chỉnh như sau:
Scenes/Game.cs
public void OnClickHint() {
// TODO: Log ad_reward_prompt event (101)
QuizAnalytics.LogAdRewardPrompt(AdManager.AD_UNIT_ID);
...
}
...
public void OnAdStarted(object sender, EventArgs args) {
// TODO: Log ad_reward_impression event (101)
QuizAnalytics.LogAdRewardImpression(AdManager.AD_UNIT_ID);
}
...
public void OnGameOver(object sender, GameOverEventArgs args) {
// TODO: Log game_complete event (101)
QuizAnalytics.LogGameComplete(args.NumCorrectAnswers);
...
}
public void OnLevelCleared(object sender, LevelClearEventArgs args) {
// TODO: Log level_success event (101)
QuizAnalytics.LogLevelSuccess(
args.Drawing.word, args.NumAttempts, args.ElapsedTimeInSeconds, args.IsHintUsed);
...
}
public void OnLevelSkipped(object sender, LevelSkipEventArgs args) {
// TODO: Log level_fail event (101)
QuizAnalytics.LogLevelFail(
args.Drawing.word, args.NumAttempts, args.ElapsedTimeInSeconds, args.IsHintUsed);
}
public void OnNewLevel(object sender, NewLevelEventArgs args) {
// TODO: Log level_start event (101)
QuizAnalytics.LogLevelStart(args.Drawing.word);
...
}
public void OnWrongAnwser(object sender, WrongAnswerEventArgs args) {
// TODO: Log level_wrong_answer event (101)
QuizAnalytics.LogLevelWrongAnswer(args.Drawing.word);
...
}
Cuối cùng, hãy cập nhật tệp Main.cs trong thư mục Assets/Scripts/Scenes
. Bạn nên đảm bảo rằng Firebase đã sẵn sàng trước khi gọi bất kỳ phương thức nào trong SDK Firebase.
Scenes/Main.cs
using AwesomeDrawingQuiz.Ads;
// TODO: Import AwesomeDrawingQuiz.Analytics (101)
using AwesomeDrawingQuiz.Analytics;
...
namespace AwesomeDrawingQuiz.Scene {
public class Main : MonoBehaviour {
...
void Start () {
Screen.sleepTimeout = SleepTimeout.SystemSetting;
#if UNITY_ANDROID
// Disable 'Start a game' button until
// Firebase dependencies are ready to use on the Android
buttonStartGame.interactable = false;
// TODO: Check Google Play Services on Android (101)
// Check Google Play Services on Android device is up to date
Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
var dependencyStatus = task.Result;
if (dependencyStatus == Firebase.DependencyStatus.Available) {
Debug.Log("All Firebase services are available");
// TODO: Set screen name (101)
QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_MAIN);
} else {
throw new System.InvalidOperationException(System.String.Format(
"Could not resolve all Firebase dependencies: {0}", dependencyStatus));
}
}).ContinueWith(task => {
// Enable 'Start a game' button
UnityMainThreadDispatcher.Instance()
.Enqueue(() => buttonStartGame.interactable = true);
});
#else
// TODO: Set screen name (101)
QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_MAIN);
#endif
}
...
}
}
9. Gỡ lỗi sự kiện Analytics
Bạn có thể sử dụng DebugView để xác minh các sự kiện đang được ghi lại chính xác. DebugView cho phép bạn xem dữ liệu sự kiện thô do ứng dụng của bạn ghi lại trên các thiết bị phát triển gần như theo thời gian thực.
Điều này rất hữu ích cho mục đích xác thực trong giai đoạn phát triển đo lường và có thể giúp bạn phát hiện các lỗi và sai sót trong việc triển khai phân tích.
Bật chế độ gỡ lỗi trên Android
Thông thường, các sự kiện được ghi lại trong ứng dụng của bạn sẽ được nhóm lại với nhau trong khoảng một giờ và được tải lên cùng nhau. Để xác thực việc triển khai Analytics một cách nhanh chóng, bạn cần bật chế độ Gỡ lỗi trên thiết bị phát triển để tải các sự kiện lên với độ trễ tối thiểu.
Trước tiên, hãy mở công cụ Terminal trong Android Studio. Thanh công cụ này nằm ở thanh công cụ dưới cùng.
Sau đó, thực thi lệnh sau (đảm bảo rằng thiết bị Android thử nghiệm đã được kết nối với máy tính hoặc Trình mô phỏng Android đang chạy):
adb shell setprop debug.firebase.analytics.app com.google.codelab.awesomedrawingquiz
Hành vi này sẽ tồn tại cho đến khi bạn tắt chế độ Gỡ lỗi rõ ràng bằng cách thực thi lệnh sau:
adb shell setprop debug.firebase.analytics.app .none.
Bật chế độ gỡ lỗi trên iOS
Để bật chế độ Gỡ lỗi Analytics trên thiết bị phát triển của bạn, hãy chỉ định đối số dòng lệnh sau trong Xcode:
-FIRDebugEnabled
Hành vi này sẽ tồn tại cho đến khi bạn tắt chế độ Gỡ lỗi bằng cách chỉ định đối số dòng lệnh sau:
-FIRDebugDisabled
Gỡ lỗi sự kiện Analytics bằng DebugView
Sau khi bạn bật chế độ Gỡ lỗi trên thiết bị thử nghiệm, hãy chuyển đến bảng điều khiển của Firebase rồi chọn DebugView trên trình đơn. Sau đó, trên thiết bị thử nghiệm, hãy chơi trò chơi để xem các sự kiện đang được ghi lại và hiển thị trên báo cáo DebugView.
Bạn có thể xem thông tin chi tiết về từng sự kiện bằng cách nhấp vào tên sự kiện. Ví dụ: ảnh chụp màn hình sau đây cho thấy thông tin chi tiết về thông số liên quan đến sự kiện level_start
.
Vui lòng tham khảo bài viết trên trung tâm trợ giúp DebugView để biết thêm chi tiết.
10. Bật tính năng báo cáo thông số
Theo mặc định, Google Analytics cho Firebase sẽ thu thập tổng số sự kiện, nhưng bạn cần phải bật tính năng báo cáo cho các thông số tuỳ chỉnh một cách rõ ràng cho từng thông số sự kiện mà bạn quan tâm. Sau khi bạn bật tính năng này, Google Analytics cho Firebase sẽ hiển thị các thẻ bổ sung để hiển thị số liệu thống kê cho các thông số tuỳ chỉnh.
Cách đăng ký các thông số tùy chỉnh cho một sự kiện:
- Chuyển đến bảng điều khiển của Firebase rồi chọn dự án Bài kiểm tra bản vẽ tuyệt vời mà bạn đã tạo trước đó.
- Nhấp vào Sự kiện trong trình đơn điều hướng.
- Trong hàng chứa sự kiện bạn muốn sửa đổi, hãy nhấp vào > Chỉnh sửa báo cáo thông số.
- Trong trường Nhập tên thông số, hãy nhập tên của thông số mà bạn muốn đăng ký.
Lưu ý: Nếu không tìm thấy thông số trùng khớp, bạn chỉ cần nhập tên thông số rồi nhấp vào THÊM. 5. Hãy tham khảo bảng bên dưới và đặt trường Loại thành Văn bản hoặc Số tương ứng. Đối với các thông số dạng số, hãy nhớ đặt trường Đơn vị đo lường. 6. Nhấp vào nút LƯU để hoàn tất quá trình thiết lập.
Bật tính năng báo cáo thông số cho từng sự kiện được liệt kê bên dưới.
Tên sự kiện | Tên thông số | Loại thông số | Đơn vị đo lường |
level_start | level_name | Văn bản | Không áp dụng |
level_wrong_answer | level_name | Văn bản | Không áp dụng |
level_success | level_name | Văn bản | Không áp dụng |
level_success | number_of_attempts | Số | Tiêu chuẩn |
level_success | elapsed_time_sec | Số | Giây |
level_success | hint_used | Số | Tiêu chuẩn |
level_fail | level_name | Văn bản | Không áp dụng |
level_fail | number_of_attempts | Số | Tiêu chuẩn |
level_fail | elapsed_time_sec | Số | Giây |
level_fail | hint_used | Số | Tiêu chuẩn |
game_complete | number_of_correct_answers | Số | Tiêu chuẩn |
Ví dụ sau đây minh hoạ chế độ thiết lập tính năng báo cáo thông số tuỳ chỉnh cho sự kiện level_success
:
Sau khi hoàn tất việc thiết lập tính năng báo cáo thông số, bạn sẽ có thể xem các thông số liên quan đến mỗi sự kiện đã bật tính năng báo cáo thông số.
11. Nhận thông tin chi tiết từ Báo cáo sự kiện
Khi đã thêm một số sự kiện vào trò chơi, bạn sẽ có thể trả lời các câu hỏi liên quan đến hành vi của người dùng trong trò chơi. Dưới đây là một vài thông tin chi tiết mà bạn có thể nhận được từ báo cáo sự kiện Firebase.
Cấp nào có nhiều câu trả lời sai nhất?
Để trả lời câu hỏi này, bạn nên tìm hiểu có bao nhiêu sự kiện level_wrong_answer
đã được kích hoạt cho mỗi cấp.
Nhấp vào biểu tượng level_wrong_answer
trong báo cáo sự kiện. Trong báo cáo sự kiện level_wrong_answer
, hãy tìm thẻ level_name
. Bạn sẽ thấy các giá trị liên kết với tham số level_name
trên thẻ đó như sau.
Theo ảnh chụp màn hình ở trên, bạn có thể dễ dàng nhận ra khuôn khổ có nhiều câu trả lời sai nhất, tức là khó hơn cho người dùng so với các cấp độ khác.
Bằng cách sử dụng thông tin chi tiết mà bạn có được từ đây, bạn có thể quyết định không cung cấp các cấp độ khó cho người dùng mới làm quen để duy trì tỷ lệ giữ chân cao.
Bạn đã thử trung bình bao nhiêu lần để xoá một cấp độ?
Trong Bài kiểm tra về bản vẽ tuyệt vời, người dùng có thể gửi câu trả lời cho mỗi cấp bao nhiêu tuỳ thích.
Vì bạn đã bật tính năng báo cáo thông số cho thông số number_of_attempts
trong sự kiện level_success
, nên bạn có thể xem các chỉ số chi tiết cho thông số đó.
Nhấp vào sự kiện level_success
trong báo cáo sự kiện. Trong báo cáo sự kiện level_success
, hãy tìm thẻ number_of_attemps
. Bạn sẽ thấy số lần thử trung bình trên thẻ đó như sau:
Bạn có thể sử dụng thông tin chi tiết từ đây để tối ưu hoá độ khó trung bình của trò chơi. Ví dụ: nếu số lượt chơi trung bình quá gần 1, bạn có thể cân nhắc việc tăng độ khó của trò chơi một chút.
Người dùng có thử giải câu hỏi bằng cách nhận gợi ý, mặc dù cuối cùng họ chưa hoàn thành được một cấp độ nào đó không?
Khi người dùng quyết định bỏ qua một cấp, sự kiện level_fail
sẽ được kích hoạt. Có thể có nhiều lý do cho quyết định của người dùng.
Tuy nhiên, vì trò chơi có thể cung cấp cho họ gợi ý sau khi họ xem Quảng cáo video có tặng thưởng, nên điều quan trọng là phải biết liệu người dùng có cố gắng hoàn thành cấp độ đó với sự trợ giúp của gợi ý hay không.
Nhấp vào sự kiện level_fail
trong báo cáo sự kiện. Trong báo cáo sự kiện level_fail
, hãy tìm thẻ hint_used
. Bạn sẽ thấy số lượng thông số sự kiện trung bình là hint_used
. Lưu ý khi sử dụng gợi ý, gợi ý sẽ được đặt thành 1 và đặt thành 0 khi không sử dụng gợi ý.
Nếu các con số trên thẻ hint_used
gần bằng 0, thì đó là tín hiệu cho thấy phần thưởng (gợi ý) chưa thật hấp dẫn đối với người dùng. Ngoài ra, bạn sẽ mất cơ hội tăng doanh thu từ Quảng cáo dạng video có tặng thưởng.
Do đó, bạn nên cân nhắc tạo phần thưởng hữu ích hơn cho người dùng để người dùng có thể tương tác với trò chơi sâu hơn cũng như tăng doanh thu từ Quảng cáo dạng video có tặng thưởng.
Trung bình, có bao nhiêu cấp bị xoá trong mỗi trò chơi?
Có tổng cộng 6 cấp độ cho mỗi trò chơi trong Bài đố vui về bản vẽ tuyệt vời. Sau khi người dùng hoàn thành 6 cấp (bất kể họ đã xóa hay không vượt qua được mỗi cấp), hệ thống sẽ kích hoạt sự kiện game_complete
bằng thông số number_of_correct_answers
.
Vì number_of_correct_answers
cho biết số cấp mà người dùng đã xoá (đưa ra câu trả lời chính xác), nên bạn có thể tìm thấy câu trả lời bằng cách xem xét các chỉ số của tham số number_of_correct_answers
.
Nhấp vào game_complete
sự kiện trong báo cáo sự kiện. Trong báo cáo sự kiện game_complete, tìm thẻ number_of_correct_answers
. Bạn sẽ thấy số lượng thông số sự kiện trung bình là number_of_correct_answers
.
Nếu số lần vượt qua cấp độ trung bình quá thấp, bạn nên cân nhắc việc sắp xếp lại trò chơi để giúp mọi người vượt qua một cấp độ, nhờ đó họ có thể tiếp tục chơi trò chơi của bạn mà không mất sự hứng thú.
12. Đã xong!
Bạn đã hoàn thành Lớp học lập trình Unity 101 của AdMob + Firebase. Bạn có thể tìm thấy mã đã hoàn chỉnh cho lớp học lập trình này trên thư mục 101-complete_and_102-base.
Trong phần tiếp theo của Lớp học lập trình AdMob và Firebase, bạn sẽ tìm hiểu cách sử dụng phễu để trực quan hoá quy trình của sự kiện ứng dụng. Ngoài ra, bài viết này sẽ đề cập đến cách sử dụng Cấu hình từ xa và thử nghiệm A/B để tối ưu hoá giá trị thông số trong trò chơi mà không cần cập nhật ứng dụng.