Tài liệu hướng dẫn này trình bày cách thu thập dữ liệu người chơi trong quá trình phân tích trò chơi bằng các API sự kiện do Dịch vụ trò chơi của Google Play cung cấp. Bạn có thể tìm thấy các API này trong
com.google.android.gms.games.event
và com.google.android.gms.games
.
Trước khi bắt đầu
Nếu chưa từng có kinh nghiệm, bạn có thể xem lại các khái niệm về sự kiện của trò chơi.
Trước khi bắt đầu lập trình bằng API sự kiện, bạn hãy:
- Xác định các sự kiện cho trò chơi trong Google Play Console.
- Làm theo đề xuất danh sách kiểm tra để đăng nhập.
Tải ứng dụng sự kiện
Để có thể sử dụng API sự kiện, trước tiên, trò chơi của bạn phải có được một đối tượng EventsClient
. Bạn có thể thực hiện việc này bằng cách gọi phương thức Games.getEventsClient()
và truyền vào hoạt động cũng như GoogleSignInAccount
cho người chơi hiện tại. Để tìm hiểu cách truy xuất thông tin tài khoản người chơi, hãy xem phần Đăng nhập vào trò chơi trên Android.
Gửi sự kiện
Bạn có thể thêm mã trong trò chơi để thông báo cho Dịch vụ trò chơi của Google Play bất cứ khi nào có sự kiện mà trò chơi quan tâm.
Để gửi bản cập nhật sự kiện, hãy gọi EventsClient.increment()
với giá trị eventId
và số nguyên incrementAmount
bằng hoặc lớn hơn 0.
eventId
được tạo bởi Dịch vụ trò chơi của Google Play khi bạn xác định sự kiện lần đầu trong Google Play Console, ngoài ra còn được dùng để nhận dạng riêng sự kiện này trong trò chơi của bạn.- Bạn có thể sử dụng dữ liệu đầu vào
incrementAmount
để chỉ định quá trình định lượng của người chơi nhằm hoàn thành một số mục tiêu cụ thể trong trò chơi. Ví dụ: nếu sự kiện mà trò chơi muốn theo dõi là "Đánh bại 500 quái vật mắt ốc nhồi", thì giá trịincrementAmount
có thể là số lượng quái vật mà người chơi đã giết trong một trận chiến duy nhất.
Dưới đây là ví dụ về cách gửi một sự kiện với số lượng tăng dần là 1:
public void submitEvent(String eventId) { Games.getEventsClient(this, GoogleSignIn.getLastSignedInAccount(this)) .increment(eventId, 1); }
Truy xuất sự kiện
Bạn có thể truy xuất mọi dữ liệu sự kiện lưu trữ trong máy chủ Google cho trò chơi bằng cách gọi EventsClient.load()
. Trong lệnh gọi phương thức, hãy truyền một giá trị boolean để cho biết liệu Dịch vụ trò chơi của Google Play có nên xoá dữ liệu được lưu vào bộ nhớ đệm trên thiết bị của người dùng hay không.
Để truy xuất dữ liệu cho các sự kiện cụ thể mà bạn đã xác định trong Google Play Console, hãy gọi
EventsClient.loadByIds()
và truyền một mảng mã sự kiện vào tham số đầu vào.
Đoạn mã sau đây cho biết cách bạn có thể truy vấn Dịch vụ trò chơi của Google Play để xem danh sách tất cả sự kiện cho trò chơi của bạn:
public void loadEvents() { Games.getEventsClient(this, GoogleSignIn.getLastSignedInAccount(this)) .load(true) .addOnCompleteListener(new OnCompleteListener<AnnotatedData<EventBuffer>>() { @Override public void onComplete(@NonNull Task<AnnotatedData<EventBuffer>> task) { if (task.isSuccessful()) { // Process all the events. for (Event event : task.getResult().get()) { Log.d(TAG, "loaded event " + event.getName()); } } else { // Handle Error Exception exception = task.getException(); int statusCode = CommonStatusCodes.DEVELOPER_ERROR; if (exception instanceof ApiException) { ApiException apiException = (ApiException) exception; statusCode = apiException.getStatusCode(); } showError(statusCode); } } }); }