このガイドでは、実績 API を Android アプリで使用し、ゲームの実績のロックを解除して表示する方法について説明します。API は com.google.android.gms.games
パッケージと com.google.android.gms.games.achievements
パッケージに含まれています。
始める前に
ゲームの実績に関するコンセプトをまだ確認されていない場合は、確認することをおすすめします。
実績 API を使用してコーディングを開始する前に:
- Google Play 開発者サービス SDK の設定ガイドに記載されている手順に沿って、アプリをインストールして Google Play Games サービスを使用できるように設定します。
- Google Play Console ガイドの手順に沿って、ゲームでロック解除または表示する実績を定義します。
- 実績のコードサンプルを Android のサンプルページでダウンロードして確認します。
- 品質チェックリストで説明されている推奨事項を確認します。
実績クライアントを取得する
実績 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 の例を以下に示します。