このガイドでは、Android アプリでリーダーボード API を使用して、視覚的なリーダーボードを作成する方法、プレーヤーのスコアを記録する方法、以前のゲーム セッションのスコアと比較する方法について説明します。API は com.google.android.gms.games
パッケージと com.google.android.gms.games.leaderboards
パッケージに含まれています。
始める前に
リーダーボード ゲームのコンセプトをまだ確認されていない場合は、確認することをおすすめします。
リーダーボード API を使用してコーディングを開始する前に:
- Google Play 開発者サービス SDK の設定ガイドに記載されている手順に沿って、アプリをインストールして Google Play Games サービスを使用できるように設定します。
- Google Play Console ガイドの手順に沿って、ゲームに表示または更新するリーダーボードを定義します。
- Android のサンプルページで、リーダーボードのコードサンプルをダウンロードして確認します。
- 品質チェックリストで説明されている推奨事項を確認します。
リーダーボード クライアントを取得する
リーダーボード API の使用を開始するには、まずゲームで LeaderboardsClient
オブジェクトを取得する必要があります。これを行うには、Games.getLeadeboardsClient()
メソッドを呼び出して、アクティビティと現在のプレーヤーの GoogleSignInAccount
を渡します。プレーヤーのアカウント情報を取得する方法については、Android ゲームへのログインをご覧ください。
プレーヤーのスコアを更新する
プレーヤーのスコアが変化した場合(プレーヤーがゲームを終了した場合など)、ゲームでは LeaderboardsClient.submitScore()
を呼び出し、リーダーボード ID と未加工スコア値を渡して、リーダーボードのスコアを更新できます。
アプリがプレーヤーのスコアを更新する方法を次のコード スニペットに示します。
Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(this)) .submitScore(getString(R.string.leaderboard_id), 1337);
strings.xml
ファイルでリーダーボード ID を定義し、ゲームがリソース ID でリーダーボードを参照できるようにすることをおすすめします。呼び出しを行いプレーヤー スコアを更新して読み込む場合は、API の割り当てを超えないように、こちらのベスト プラクティスにも従ってください。
リーダーボードを表示する
リーダーボードを表示するには、LeaderboardsClient.getLeaderboardIntent()
を呼び出して Intent
を取得し、デフォルトのリーダーボード ユーザー インターフェースを作成します。その後、ゲームで startActivityForResult
を呼び出して UI を表示できます。
アプリがプレーヤーのスコアを更新する方法を次のコード スニペットに示します。コード スニペットで、RC_LEADERBOARD_UI
はリクエスト コードの任意の整数です。
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); } }); }
結果が返されなくても、呼び出しパッケージの ID を API が取得できるように startActivityForResult
を使用する必要があります。デフォルトのリーダーボード UI の例を以下に示します。