Bảng xếp hạng trong trò chơi Android

Sau khi ngừng sử dụng API Đăng nhập bằng Google, chúng tôi sẽ xoá SDK trò chơi phiên bản 1 vào năm 2026. Sau tháng 2 năm 2025, bạn sẽ không thể phát hành các trò chơi mới tích hợp với SDK trò chơi phiên bản 1 trên Google Play. Thay vào đó, bạn nên sử dụng SDK trò chơi v2.
Mặc dù các trò chơi hiện có tích hợp với phiên bản 1 của trò chơi trước đó sẽ tiếp tục hoạt động trong vài năm, nhưng bạn nên di chuyển sang phiên bản 2 kể từ tháng 6 năm 2025.
Hướng dẫn này dành cho việc sử dụng SDK Dịch vụ trò chơi của Play phiên bản 1. Để biết thông tin về phiên bản SDK mới nhất, hãy xem tài liệu về phiên bản 2.

Tài liệu này sẽ hướng dẫn bạn cách sử dụng API bảng xếp hạng trong một ứng dụng Android để tạo bảng xếp hạng hình ảnh, ghi lại điểm của người chơi và so sánh với điểm số của người chơi trong các phiên chơi trước đó. 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.leaderboards.

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ề bảng xếp hạng của trò chơi.

Trước khi bắt đầu lập trình bằng API bảng xếp hạng, bạn hãy:

Tải ứng dụng bảng xếp hạng

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

Cập nhật điểm số của người chơi

Khi điểm số của người chơi thay đổi (ví dụ: khi người chơi kết thúc trò chơi), trò chơi của bạn có thể cập nhật điểm số của họ trên bảng xếp hạng bằng cách gọi LeaderboardsClient.submitScore(), đồng thời truyền mã bảng xếp hạng cũng như giá trị điểm thô.

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

Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(this))
    .submitScore(getString(R.string.leaderboard_id), 1337);

Bạn nên xác định mã bảng xếp hạng trong tệp strings.xml để trò chơi của bạn có thể tham chiếu đến bảng xếp hạng theo mã tài nguyên. Khi thực hiện lệnh gọi để cập nhật và tải điểm số của người chơi, 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ị bảng xếp hạng

Để hiển thị bảng xếp hạng, hãy gọi LeaderboardsClient.getLeaderboardIntent() để lấy Intent tạo giao diện người dùng của bảng xếp hạng 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ể cập nhật điểm số của người chơi. Trong đoạn mã, RC_LEADERBOARD_UI là một số nguyên tùy ý cho mã yêu cầu.

private static final int RC_LEADERBOARD_UI = 9004;

private void showLeaderboard() {
  Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(this))
      .getLeaderboardIntent(getString(R.string.leaderboard_id))
      .addOnSuccessListener(new OnSuccessListener<Intent>() {
        @Override
        public void onSuccess(Intent intent) {
          startActivityForResult(intent, RC_LEADERBOARD_UI);
        }
      });
}

Xin lưu ý rằng mặc dù không có kết quả nào được trả về, nhưng chúng ta vẫn phải sử dụng startActivityForResult để API có thể lấy thông tin nhận dạng của gói gọi. Dưới đây là một ví dụ về giao diện người dùng của bảng xếp hạng mặc định.