Sự kiện trong trò chơi Android

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.eventcom.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:

Tải ứng dụng sự kiện

Để bắt đầu sử dụng các 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 do Dịch vụ trò chơi của Google Play tạo khi bạn xác định sự kiện trong Google Play Console lần đầu và đượ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ó cầ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);
          }
        }
      });
}