Thành tích trong trò chơi Android

Tài liệu này sẽ hướng dẫn bạn cách sử dụng API thành tích trong ứng dụng Android để mở khóa và hiển thị các thành tích trong trò chơi của bạn. Bạn có thể tìm thấy các API trong các gói com.google.android.gms.gamescom.google.android.gms.games.achievements.

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ề thành tích của trò chơi.

Trước khi bạn bắt đầu mã hóa bằng cách sử dụng API thành tích:

Tải ứng dụng thành tích

Để bắt đầu sử dụng API thành tích, trước tiên trò chơi của bạn phải có được một đối tượng AchievementsClient. Bạn có thể thực hiện việc này bằng cách gọi phương thức Games.getAchievementClient(), sau đó truyền hoạt động và 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 bài viết Đăng nhập vào trò chơi trên Android.

Mở khóa thành tích

Để mở khoá một thành tích, hãy gọi phương thức AchievementsClient.unlock() và truyền mã thành tích vào.

Đoạn mã sau đây cho thấy cách ứng dụng của bạn có thể mở khóa các thành tích:

Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this))
    .unlock(getString(R.string.my_achievement_id));

Nếu thành tích thuộc loại tăng dần (nghĩa là bạn phải thực hiện một số bước để mở khoá thành tích), hãy gọi AchievementsClient.increment().

Đoạn mã sau đây cho thấy cách ứng dụng của bạn có thể tăng thành tích của người chơi:

Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this))
    .increment(getString(R.string.my_achievement_id), 1);

Bạn không cần phải viết thêm mã để mở khoá thành tích. Dịch vụ trò chơi của Google Play sẽ tự động mở khoá thành tích sau khi đạt đến số bước cần thiết.

Bạn nên xác định mã thành tích trong tệp strings.xml để trò chơi của bạn có thể tham chiếu thành tích theo mã tài nguyên. Khi thực hiện lệnh gọi để cập nhật và tải thành tích, bạn phải nhớ làm theo các phương pháp hay nhất này để tránh vượt quá định mức API.

Hiển thị thành tích

Để hiển thị thành tích của người chơi, hãy gọi AchievementsClient.getAchievementsIntent() để lấy Intent tạo giao diện người dùng cho thành tích mặc định. Sau đó, trò chơi của bạn có thể hiển thị giao diện người dùng bằng cách gọi startActivityForResult.

Đoạn mã sau đây cho thấy cách ứng dụng của bạn có thể hiển thị giao diện người dùng của bảng thành tích mặc định. Trong đoạn mã, RC_ACHIEVEMENT_UI là một số nguyên tuỳ ý mà trò chơi sử dụng làm mã yêu cầu.

private static final int RC_ACHIEVEMENT_UI = 9003;

private void showAchievements() {
  Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this))
      .getAchievementsIntent()
      .addOnSuccessListener(new OnSuccessListener<Intent>() {
        @Override
        public void onSuccess(Intent intent) {
          startActivityForResult(intent, RC_ACHIEVEMENT_UI);
        }
      });
}

Dưới đây là một ví dụ về giao diện người dùng của bảng thành tích mặc định.