Android ゲームのログイン

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

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

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

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

このセクションでは、Play Games サービスのログイン 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()
  }
);