Android ゲームの実績

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

始める前に

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

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

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

実績 API の使用を開始するには、まず AchievementsClient オブジェクトを取得する必要があります。そのためには、Games.getAchievementClient() メソッドを呼び出してアクティビティを渡します。

実績のロックを解除する

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

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

PlayGames.getAchievementsClient(this).unlock(getString(R.string.my_achievement_id));

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

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

PlayGames.getAchievementsClient(this).increment(getString(R.string.my_achievement_id), 1);

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

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

実績を表示する

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

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

private static final int RC_ACHIEVEMENT_UI = 9003;

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

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