Google Play Games サービスの機能にアクセスするには、ゲームから 認証済みプレーヤーのアカウントを提供する必要があります。このドキュメントでは、ゲームにシームレスな認証エクスペリエンスを 実装する方法について説明します。
Play ゲームサービス v2 SDK には、ゲームに認証するユーザーの数を増やす 複数の改善が行われており、開発が容易になります。
- ユーザー向けの改善点:
- デフォルトのアカウントを選択すると、ユーザーはプロンプトを 操作せずに認証できます。
- ユーザーは、 Play ゲームサービスで認証するために、または新しいアカウントを作成するために、Play ゲームアプリをダウンロードする必要がなくなりました。
- ユーザーは、複数のゲームの Play ゲームサービス アカウントを 1 つのページで管理できるようになりました 。
- デベロッパー向けの改善点:
- ゲームを起動するとログインが自動的にトリガーされ、アカウント 管理は OS 設定で処理されるため、クライアント コードで認証またはログアウトのフローを処理する必要がなくなりました。
新しいクライアントの統合
このセクションでは、Play ゲームサービス ログイン v2 と新しいクライアントの統合を行う方法について説明します。
依存関係を追加する
アプリのルートレベルの build.gradle ファイルに Play ゲームサービス SDK の依存関係を追加します。Gradle を使用している場合は、依存関係を次のように追加または更新できます。
dependencies {
implementation "com.google.android.gms:play-services-games-v2:+"
}
プロジェクト ID を定義する
Play ゲームサービス SDK のプロジェクト ID をアプリに追加する手順は次のとおりです。
アプリの
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 の [設定] ページのゲーム名で確認できます。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 {
// Show a sign-in button to ask players to authenticate. Clicking it should
// call GamesSignInClient.signIn().
}
});