Android ゲームのログイン

Google Play Games サービスの機能にアクセスするには、ログインしているプレーヤーのアカウントをゲームから提供する必要があります。このドキュメントでは、ゲームにシームレスなログイン エクスペリエンスを実装する方法について説明します。

Play ゲームサービス v2 SDK には、ゲームにログインするユーザーの数を増やし、開発を容易にするために複数の改善が行われています。

  • ユーザー向けの改善点:
    • デフォルトのアカウントを選択すると、ユーザーはプロンプトを操作せずにログインできます。
    • ユーザーは、Play ゲームサービスでログインするために、または新しいアカウントを作成するために、Play ゲームアプリをダウンロードする必要がなくなりました。
    • ユーザーは、複数のゲームの Play ゲームサービス アカウントを 1 つのページで管理できるようになりました。
  • デベロッパー向けの改善点:
    • ゲームを起動するとログインが自動的にトリガーされ、アカウント管理は OS 設定で処理されるため、クライアント コードでログインまたはログアウトのフローを処理する必要がなくなりました。

新しいクライアントと Play Games サービス ログイン v2 の統合

このセクションでは、新しいクライアントを Play ゲームサービス ログイン v2 と統合する方法について説明します。

Play Games サービス SDK の依存関係を追加する

アプリのルートレベルの build.gradle ファイルに Play ゲームサービス SDK の依存関係を追加します。Gradle を使用している場合は、次の手順で依存関係を追加または更新できます。

dependencies {
 implementation "com.google.android.gms:play-services-games-v2:+"
}

Play Games サービスのプロジェクト ID を定義する

Play ゲームサービス SDK のプロジェクト ID をアプリに追加する手順は次のとおりです。

  1. アプリの AndroidManifest.xml ファイルで、次の <meta-data> 要素と属性を <application> 要素に追加します。

    <manifest>
      <application>
        <meta-data android:name="com.google.android.gms.games.APP_ID"
                   android:value="@string/game_services_project_id"/>
      </application>
    </manifest>
    

    ゲームのゲームサービスのプロジェクト ID を値として使用し、文字列リソース参照 @string/game_services_project_id を定義します。ゲームサービスのプロジェクト ID は、Google Play Console の [設定] ページのゲーム名で確認できます。

  2. res/values/strings.xml ファイルで、文字列リソース参照を追加し、値としてプロジェクト ID を設定します。プロジェクト ID は、Google Play Console の [設定] ページのゲーム名で確認できます。次に例を示します。

    <!-- res/values/strings.xml -->
    <resources>
      <!-- Replace 0000000000 with your game’s project id. Example value shown above.  -->
      <string translatable="false"  name="game_services_project_id"> 0000000000 </string>
    </resources>
    

SDK を初期化する

Application クラスの onCreate(..) コールバックで Play ゲーム SDK を初期化します。

import com.google.android.gms.games.PlayGamesSdk;

...

@Override
public void onCreate(){
  super.onCreate();
  PlayGamesSdk.initialize(this);
}

ログイン結果を取得する

ゲームは、起動すると常にユーザーのログインを試行します。ユーザーを認証するには、ユーザーが正常にログインしたことを確認してから、プレーヤー ID を取得する必要があります。

ログインの試行を確認するには、GamesSignInClient.isAuthenticated() を呼び出し、addOnCompleteListener を使用して結果を取得します。次に例を示します。

GamesSignInClient gamesSignInClient = PlayGames.getGamesSignInClient(getActivity());

gamesSignInClient.isAuthenticated().addOnCompleteListener(isAuthenticatedTask -> {
  boolean isAuthenticated =
    (isAuthenticatedTask.isSuccessful() &&
     isAuthenticatedTask.getResult().isAuthenticated());

  if (isAuthenticated) {
    // Continue with Play Games Services
  } else {
    // Disable your integration with Play Games Services or show a
    // login button to ask  players to sign-in. Clicking it should
    // call GamesSignInClient.signIn().
  }
});

ゲーム起動時にログインしないことをユーザーが選択した場合は、必要に応じて Play ゲームのアイコンのボタンを表示し続け、ユーザーがボタンを押したら GamesSignInClient.signIn() を呼び出してユーザーのログインを再試行できます。

ユーザーがログイン済みであることを確認したら、プレーヤー ID を取得してユーザーを識別できます。次に例を示します。

PlayGames.getPlayersClient(activity).getCurrentPlayer().addOnCompleteListener(mTask -> {
    // Get PlayerID with mTask.getResult().getPlayerId()
  }
);