Android ゲームの実績

このガイドでは、実績 API を Android アプリで使用し、ゲームの実績のロックを解除して表示する方法について説明します。API は com.google.android.gms.games パッケージと com.google.android.gms.games.achievements パッケージに含まれています。

始める前に

ゲームの実績に関するコンセプトをまだ確認されていない場合は、確認することをおすすめします。

実績 API を使用してコーディングを開始する前に:

実績クライアントを取得する

実績 API の使用を開始するには、まず AchievementsClient オブジェクトを取得する必要があります。そのためには、Games.getAchievementClient() メソッドを呼び出して、アクティビティと現在のプレーヤーの GoogleSignInAccount を渡します。プレーヤーのアカウント情報を取得する方法については、Android ゲームにログインするをご覧ください。

実績のロックを解除する

実績のロックを解除するには、AchievementsClient.unlock() メソッドを呼び出して、実績 ID を渡します。

次のコード スニペットは、アプリで実績のロックを解除する方法を示しています。

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

実績が増分タイプの場合(ロック解除に数ステップが必要)は、代わりに AchievementsClient.increment() を呼び出します。

次のコード スニペットは、アプリがプレーヤーの実績を増分変更する方法を示しています。

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

実績のロックを解除するために追加のコードを記述する必要はありません。Google Play Games サービスでは、必要なステップ数に達すると、実績が自動的にロック解除されます。

実績の ID を strings.xml ファイルで定義して、リソースで実績を参照できるようにすることをおすすめします。呼び出しを行い実績を更新して読み込む場合は、API の割り当てを超えないように、こちらのベスト プラクティスにも従ってください。

実績を表示する

プレーヤーの実績を表示するには、AchievementsClient.getAchievementsIntent() を呼び出して Intent を取得し、デフォルトの実績ユーザー インターフェースを作成します。その後、ゲームで startActivityForResult を呼び出して UI を表示できます。

次のコード スニペットは、アプリにデフォルトの実績ユーザー インターフェースを表示する方法を示しています。スニペットでは、RC_ACHIEVEMENT_UI はゲームがリクエスト コードとして使用する任意の整数です。

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);
        }
      });
}

デフォルトの実績 UI の例を以下に示します。